This repository has been archived by the owner on Oct 25, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
manual.html
798 lines (626 loc) · 180 KB
/
manual.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Carsa's Companion - Manual</title>
<meta name="description" content="Companion webapp for Carsa's Commands, an addon for Stormworks.">
<link rel="shortcut icon" href="data:image/x-icon;base64,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" />
<!-- META_PLACEHOLDER -->
<script type="text/javascript">
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!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});
</script>
<script type="text/javascript">
"use strict";
$(window).on('load', ()=>{
// init custom elements
const PAGE_ICONS = {
home: 'home',
players: 'users',
vehicles: 'car',
roles: 'crown',
rules: 'task-o',
preferences: 'control-panel',
'gamesettings': 'wrench',
chat: 'speech-bubble-comments',
logs: 'note-o',
settings: 'gear',
map: 'map-o',
'gameserver': 'server',
'tests': 'flask'
}
$('c2-page').each((i, el)=>{
let inner = $(el).text()
$(el).addClass('im im-' + PAGE_ICONS[inner] )
$(el).html('')
$(el).append(
$('<span>').text( inner.charAt(0).toUpperCase() + inner.substring(1) + ' Page' )
)
})
$('c2-page-vertical').each((i, el)=>{
let inner = $(el).text()
$(el).html('')
$(el).append( $('<span>').addClass('im im-' + PAGE_ICONS[inner]) )
$(el).append( $('<span>').text( inner.charAt(0).toUpperCase() + inner.substring(1) ) )
})
$('c2-permission').each((i, el)=>{
let code = $(el).text()
let vis = $('<div class="permission_visualization">')
if(code.indexOf('r') >= 0){
//can view/read
vis.append('<span class="im im-eye" permission-type="view" title="can view">')
}
if(code.indexOf('w') >= 0){
//can modify/write
vis.append('<span class="im im-pencil" permission-type="modify" title="can modify">')
}
if(code.indexOf('+') >= 0){
//can modify/write (if his role contains access to the related commands)
vis.append('<span class="im im-crown" permission-type="modify-rule-depending" title="can modify if role has access to related commands">')
}
if(code === '-'){
//no access
vis.append('<span class="im im-minus-circle" permission-type="no" title="can modify if role has access to related commands">')
}
if(code.match(/^\([^)]*\)$/)){
//only if enabled via settings
vis.addClass('if_enabled_via_settings').attr('title', 'only if enabled via settings')
}
$(el).html('')
$(el).append(vis)
})
// create anchors and navigation sidebar
$('.division').each((i, divisionEl)=>{
if($(divisionEl).find('h2').length === 0){
return
}
let title = $(divisionEl).find('h2').text()
let id = titleToId(title)
$(divisionEl).find('h2').attr('id', id).attr('prefix', `${i+1}.`)
$('.sidebar .inner').append(
$(`<a href="#${id}">${title}</a>`).attr('prefix', `${i+1}.`)
)
$(divisionEl).find('h3').each((ii, h3El)=>{
let title2 = $(h3El).text()
let id2 = titleToId(title2)
$(h3El).attr('id', id2).attr('prefix', `${i+1}.${ii+1}.`)
$('.sidebar .inner').append(
$(`<a depth="1" href="#${id2}">${title2}</a>`).attr('prefix', `${i+1}.${ii+1}.`)
)
if($(h3El).next().hasClass('subdivision')){
$(h3El).next().find('h4').each((iii, h4El)=>{
let title3 = $(h4El).text()
let id3 = titleToId(title3)
$(h4El).attr('id', id3).attr('prefix', `${i+1}.${ii+1}.${iii+1}.`)
$('.sidebar .inner').append(
$(`<a depth="2" href="#${id3}">${title3}</a>`).attr('prefix', `${i+1}.${ii+1}.${iii+1}.`)
)
})
}
})
})
function titleToId(title){
return title.toLowerCase().replace(/[^a-z]/g, '-').replace(/[-]{1,}/g, '-')
}
// check for #anchor param and try to focus it
let hashPos = document.location.href.lastIndexOf('#')
if(hashPos >= 0){
let anchor = document.location.href.substring(hashPos + 1)
$(`.sidebar a[href="${anchor}"]`).click()
}
setInterval(()=>{
//check scroll position and upate anchor
let headingPositions = {}
for(let h of ['h1', 'h2', 'h3', 'h4']){
$(h).each((i, el)=>{
let id = $(el).attr('id')
headingPositions[id ? '#' + id : ''] = $(el).offset().top
})
}
let scrollTop = window.scrollY
let closestScrollValue = 0
let closestScrollId = undefined
for(let h of Object.keys(headingPositions)){
let diff = Math.abs(headingPositions[h] - scrollTop)
if(diff < closestScrollValue || closestScrollId === undefined){
closestScrollId = h
closestScrollValue = diff
}
}
if(closestScrollId !== undefined){
window.history.pushState(null, '', document.location.protocol + '//' + document.location.host + document.location.pathname + closestScrollId)
//highlight current anchor in navigation sidebar
$(`.sidebar a.selected`).removeClass('selected')
$(`.sidebar a[href="${closestScrollId}"]`).addClass('selected')
}
}, 200)
})
</script>
<link rel="stylesheet" type="text/css" href="https://cdn.iconmonstr.com/1.3.0/css/iconmonstr-iconic-font.min.css"/>
<style>
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}body{width:100%;height:100%;padding:0;margin:0;display:flex;flex-direction:row;font-family:Arial, sans-serif}body .im{font-size:1em;line-height:1em}body *{box-sizing:border-box;scrollbar-width:thin}body ::-webkit-scrollbar{width:0.5em;background:#7b7c7f}body [prefix]:before{content:attr(prefix) " "}body c2-page{margin:0 0.5em}body c2-page:before{position:relative;top:0.1em;right:0.1em}body c2-page span{font-family:Arial, sans-serif;font-style:italic}body c2-page-vertical{display:flex;flex-direction:column;align-items:center}body c2-page-vertical .im{margin-bottom:0.3em}body c2-note{display:inline-block;line-height:1.2em;margin:0.5em 0.5em 1em 0.5em;padding:0.5em;border:0.2em solid #888;font-style:italic}body c2-note:before{content:'Note:';margin-right:0.5em;font-weight:800;font-size:1.2em}body c2-code{display:inline-block;margin:0 0.5em;padding:0.1em 0.5em;background:#191919;color:#fbfbfe;border-radius:0.1em;font-family:'courier new', monospace;font-size:0.8em}body c2-button{border:0.1em solid #222;padding:0 0.6em;margin:0 0.5em;font-size:0.6em;display:inline-block;border-radius:0.1em}body c2-permission .permission_visualization{font-size:1.2em}body c2-permission .permission_visualization .im[permission-type="view"]{color:#9c9c9c}body c2-permission .permission_visualization .im[permission-type="modify"]{color:#246d33}body c2-permission .permission_visualization .im[permission-type="modify-rule-depending"]{color:#f1b632}body c2-permission .permission_visualization .im[permission-type="no"]{color:#c92f2f}body c2-permission .permission_visualization .im:not(:last-child){margin-right:0.5em}body c2-permission .permission_visualization.if_enabled_via_settings{color:#8c8c8c}body c2-permission .permission_visualization.if_enabled_via_settings:before{content:'(';font-size:1.5em;font-weight:bold;margin-right:0.2em}body c2-permission .permission_visualization.if_enabled_via_settings:after{content:') *';font-size:1.5em;font-weight:bold;margin-left:0.2em}body q{font-style:italic}body q:before{content:"„"}body q:after{content:"”"}body table{border-collapse:collapse;margin:0.5em}body table td,body table th{border:0.1em solid #aaa;padding:0.2em 0.5em;text-align:center}body table td:first-child{max-width:8em}body table.permission_table th{max-width:5em;word-break:break-word}body a{color:#0066CC}body a:visited{color:#4e32d6}body a:hover{color:#66a3e0 !important}.content{width:calc(100vw - 20em);padding:1em;background:#24262b;color:#fbfbfe}.content h1{font-size:3em;font-weight:800;text-align:center;margin:1.5em 0.5em 0.5em}.content .subtitle{text-align:center;font-style:italic}.content .division h2{font-size:1.8em;font-weight:bold;margin:1.5em 0.75em 0.75em}.content .division h3{font-size:1.5em;text-decoration:underline;margin:1.5em 0.75em 0.75em}.content .division h4{font-size:1.3em;font-weight:bold;margin:1.5em 0.75em 0.75em}.content .division p{line-height:1.2em;margin-bottom:0.5em}.content .division ul{list-style:inside;line-height:1.2em;margin:0.5em 0 0.5em 0.5em}.content .division ol{list-style:decimal;line-height:1.2em;padding-left:1.5em}.content .division ul li:not(:first-child),.content .division ol li:not(:first-child){margin-top:0.2em}.content .division .subdivision{padding:0.5em}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;width:20em;max-width:25vw;min-height:100vh;max-height:100vh;padding:0.5em;background:#2e3036;color:#fbfbfe}.sidebar .logo{width:60%;margin:0 20% 1em;height:10em;background-image:url(data:image/jpeg;base64,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);background-size:contain;background-position:center;background-repeat:no-repeat}.sidebar .inner{display:flex;flex-direction:column;overflow-y:auto}.sidebar .inner a{color:#fbfbfe !important;text-decoration:none}.sidebar .inner a:visited{color:#fbfbfe !important}.sidebar .inner a:hover{color:#c8c8cb !important}.sidebar .inner a+a{margin-top:0.7em}.sidebar .inner a[depth]+a:not([depth]){margin-top:1em}.sidebar .inner a[depth="1"]{margin-left:0.8em}.sidebar .inner a[depth="2"]{margin-left:1.6em}.sidebar .inner a.selected{color:#4c7c98 !important;font-weight:bold}
</style>
</head>
<body>
<div class="sidebar">
<div class="logo"></div>
<div class="inner"></div>
</div>
<div class="content">
<h1>Manual</h1>
<div class="subtitle">for version 1.0.0</div>
<div class="division">
<h2>Intro</h2>
<p>Carsa's Companion is a website used to supplement and improve Carsa's Commands (a management addon for Stormworks: Build and Rescue). It allows an easier to use and visual way to use the functions offered by the management addon (which normally only works via chat messages). The Companion relies on the logic, data and permission system of the management addon which runs in the game.</p>
<p><b>If you are short on time, use the <a href="#quickstart-guide">Quickstart Guide</a>.</b></p>
<h3>Features</h3>
<p>The companion allows access to all the management addon functionality in a visual and interactive way. On top of the already existing functionality, the companion offers additional functions:</p>
<ul>
<li>Allow access to all management addon functions without the need to run the game and be connected to the game server</li>
<li>Change game settings</li>
<li>Show a live map of players and vehicles on a 2D map that matches the ingame seed</li>
<li>Start / Stop a dedicated Stormworks server via the companion and see the console output of the executable</li>
</ul>
<h3>Manual Sections</h3>
<p>This manual is split into several sections:</p>
<table>
<tr>
<td><a href="#for-users">For Users</a></td>
<td>for people that play on the server</td>
</tr>
<tr>
<td><a href="#for-admins-owners">For Admins / Owners</a></td>
<td>for people that run and administrate the server</td>
</tr>
<tr>
<td><a href="#for-developers">For Developers</a></td>
<td>for people that want to change the code of this program</td>
</tr>
</table>
<h3>Information on privacy and data visibility</h3>
<p>Data that is available / visible on the website of this program is the same as the data available / visible when you connect to the game server via <q>Stormworks: Build and Rescue</q>. This includes (amongst others) the player names, their steamid, chat messages.</p>
<p>Additionally, in order to detect the public IP of the companion server, an external service (run by CrazyFluffyPony, one of the authors of this program) will be contacted. No data is being shared with this service, the service only uses the anonymized request to count how many times the program has been started in order to know if the program is being used and deserves updates and new features.</p>
</div>
<div class="division">
<h2>Quickstart Guide</h2>
<c2-note>This is meant for server owners. If you are a user, checkout <a href="#for-users">this</a>.</c2-note>
<ol>
<li>Download the executable <a href="https://github.com/carsakiller/Carsas-Companion/releases">here</a></li>
<li>Place it in a folder you like (e.g. <c2-code>Desktop/C2-Companion</c2-code>)</li>
<li>Run executable (double click)</li>
<li>Open this URL in your browser: <a href="http://localhost:3366/" target="_blank">http://localhost:3366/</a></li>
<li>Read through the section <a href="#customizable-settings">Customizable setings</a>.</li>
<li>Go to <c2-page>settings</c2-page> and adjust the settings to your liking</li>
<li>Enable the companion in the game: Enter into the chat: <c2-code>?setPref companion true</c2-code></li>
</ol>
</div>
<div class="division">
<h2>For Users</h2>
<h3>Permissions / Who can do what</h3>
<div class="subdivision">
<p>Permissions depend on the roles you have in the game (special case: if you access the website from a browser on the same machine this webserver is running on: localhost). Those permissions will be the same in the companion. A user that has the permision to kick via <c2-code>?kickPlayer</c2-code> in the game also can click the <c2-button>kick</c2-button> button in the companion and it will work.</p>
<p>For the additional functions of the companion the permissions work as follows:</p>
<table class="permission_table">
<thead>
<th></th>
<th><c2-page-vertical>players</c2-page-vertical></th>
<th><c2-page-vertical>vehicles</c2-page-vertical></th>
<th><c2-page-vertical>roles</c2-page-vertical></th>
<th><c2-page-vertical>rules</c2-page-vertical></th>
<th><c2-page-vertical>preferences</c2-page-vertical></th>
<th><c2-page-vertical>gamesettings</c2-page-vertical></th>
<th><c2-page-vertical>chat</c2-page-vertical></th>
<th><c2-page-vertical>logs</c2-page-vertical></th>
<th><c2-page-vertical>settings</c2-page-vertical></th>
<th><c2-page-vertical>map</c2-page-vertical></th>
<th><c2-page-vertical>gameserver</c2-page-vertical></th>
<th><c2-page-vertical>tests</c2-page-vertical></th>
</thead>
<tbody>
<tr>
<td>Not logged in user</td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
<td><c2-permission>(r)</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
</tr>
<tr>
<td>Logged in user (without Owner role)</td>
<td><c2-permission>r+</c2-permission></td>
<td><c2-permission>r+</c2-permission></td>
<td><c2-permission>r+</c2-permission></td>
<td><c2-permission>r+</c2-permission></td>
<td><c2-permission>r+</c2-permission></td>
<td><c2-permission>r+</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
<td><c2-permission>(r+)</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
</tr>
<tr>
<td>Owner</td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
</tr>
<tr>
<td>localhost</td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>r</c2-permission></td>
<td><c2-permission>rw</c2-permission></td>
<td><c2-permission>-</c2-permission></td>
</tr>
</tbody>
</table>
</div>
<h3>Pages</h3>
<div class="subdivision">
<h4>Home</h4>
<p>Shows version information and includes important links.</p>
<h4>Players</h4>
<p>Shows a list of players. Users that have the necessary permisions can kick/ban or change the roles of those players.</p>
<h4>Vehicles</h4>
<p>Shows a list of vehicles. Users that have the necessary permisions can despawn those vehicles.</p>
<h4>Roles</h4>
<p>Manage roles: Add, delete, change members, access to commands and permissions of each role.</p>
<h4>Rules</h4>
<p>Manage rules: Add, delete, change.</p>
<h4>Preferences</h4>
<p>Change Carsa's Commands preferences.</p>
<h4>Game Settings</h4>
<p>Change game settings (from custom menu in the game).</p>
<h4>Chat</h4>
<p>Shows the chat from the server and allows to send chat messages (both only when logged in).</p>
<h4>Logs</h4>
<p>Shows Carsa's Commands logs from the server (only the ones generated while the companion website is visited).</p>
<h4>Settings</h4>
<p>Change Webserver Settings (for the companion Webserver). Read more <a href="#customizable-settings">here</a>.</p>
<h4>Map</h4>
<p>Show the map (Matches game seed). Shows current players and vehicles (live). Players can be kicked/banned and vehicles can be despawned by clicking on their markers.</p>
<h4>GameServer Management</h4>
<p>Start and stop the dedicated gameserver executable and view its console output.</p>
<h4>Tests (must be enabled in settings)</h4>
<p>Allows to remotely enable debugging of Carsa's Commands, allows to run some connectivity and performance tests, allows to test several UI components. Read more <a href="#how-to-debug-or-test">here</a>.</p>
</div>
</div>
<div class="division">
<h2>For Admins / Owners</h2>
<h3>Customizable Settings</h3>
<c2-note>This is only the settings for the companion, of course a lot of stuff is customizable through the role system (that is part of the management addon already but can be accessed in the companion too)</c2-note>
<p>By default, the companion is only accessible on the local network (e.g. your LAN and WLAN network at home). With some simple clicks on the <c2-page>settings</c2-page> the owner can change:</p>
<ul>
<li>Who has access to the companion (only the same computer and computers in the same network, or everyone from the internet). For everyone read more <a href="#allowing-external-access-to-companion">here</a>.</li>
<li>If users can see the live map (the owner can always see it)</li>
<li>The filepath to the dedicated server executable (required if you want to start / stop the Stormworks server via the companion)</li>
</ul>
<br/>
<p>If you want players to receive the companion welcome message (read more below) when the join the game, enable the preference <q>companionInfoOnJoin</q> on the <c2-page>preferences</c2-page>. This welcome message includes the website URL of the companion and the token required to login,</p>
<h3>Security</h3>
<p>The code for the executable that runs the companion is open source, you can check it for errors and build the executables yourself (see readme). The code uses a minimal amount of third party libraries, all served as a static copy within the git repository. The code was written to have minimal functionality outside of the Stormworks game (only read and write some log files and a settings file, only able to start and terminate an executable specified by the owner of the machine). Two seperate Webservers are used for the website and the connection to the game to further sandbox functionality. The creator of the code has followed best practices (e.g. OWASP) to keep risks as low as possible. If you find any problems, we are happy to contact us, create an issue or even a pull request with a fix.</p>
<p>In terms of permissions in the game, the companion relies 100% on the management addon (the only exception is a browser on the same machine who is allowed to change settings of only the companion). In order to identify players and their permissions, a player can obtain a unique token while writing into the chat in the game (only needs to be done once). Tokens are random enough to prevent being guessed, additionally, logins are rate-limited to prevent a brute force attack.</p>
<h3>How to report errors</h3>
<p>If you find any errors, please contact us or create an issue. Do not forget to include the logs:</p>
<ul>
<li>for the companion website, either an error popup includes the log message, or you go to the <c2-page>home</c2-page> go to the section <q>Help</q> and click <c2-button>Export Logs</c2-button></li>
<li>for the companion server itself, go to the folder where it is located and take the file <q>log.txt</q></li>
</ul>
<h3>How to debug or test</h3>
<p>If you are interested in debugging or testing yourself, go to the <c2-page>settings</c2-page> and activate the <q>enable-test-mode</q> setting. This will allow you to access the <c2-page>tests</c2-page>. The Developer Console of the browser will allow you to checkout all the logs of the browser code. For the webserver logs of the companion, you have to download the sourcecode and start the program with <c2-code>node app.js loglevel=X</c2-code> where <q>X</q> stands for a log level:</p>
<table>
<tr>
<td>1</td>
<td>show errors</td>
</tr>
<tr>
<td>2</td>
<td>+ show warnings</td>
</tr>
<tr>
<td>3</td>
<td>+ show infos</td>
</tr>
<tr>
<td>4</td>
<td>+ show logs</td>
</tr>
<tr>
<td>5</td>
<td>+ show debugs</td>
</tr>
</table>
<h3>Allowing external access to companion</h3>
<c2-note>This requires you to set the setting <q>allow-external-access</q> on <c2-page>settings</c2-page> to enabled.</c2-note>
<p>If you run the companion on your PC (e.g. behind a router in your home network) you need to enable port forwarding in your routers settings if you want others on the internet to access the companion website.</p>
<p>You must forward the following ports (if you use a different incoming port then some links might not work):</p>
<table>
<tr>
<td>3366</td>
<td>TCP</td>
</tr>
<tr>
<td>3367</td>
<td>TCP</td>
</tr>
</table>
</div>
<div class="division">
<h2>For Developers</h2>
<p>This is meant for people who want to change the source code of this program. We would like to document this even better, but time is limited, especially for a hobby project.</p>
<h3>Favorable Skills</h3>
<p>These skills / knowledges are not 100% required, but definitely helpful and might sometimes be mandatory to understand what is going on.</p>
<ul>
<li>HTTP</li>
<li>HTML5</li>
<li>JavaScript ES6</li>
<li>CSS (SASS / Compass)</li>
<li>git</li>
</ul>
<h3>Tech Stack</h3>
<table>
<tr>
<td>Backend</td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Node.js</td>
<td>JavaScript runtime (server)</td>
</tr>
<tr>
<td></td>
<td>Express (Node.js)</td>
<td>Webserver framework (Basic Webserver)</td>
</tr>
<tr>
<td></td>
<td>Handlebars</td>
<td>Templating Framework (Assemble page HTML)</td>
</tr>
<tr>
<td></td>
<td>Compass</td>
<td>CSS Framework (Assemble CSS)</td>
</tr>
<tr>
<td>Frontend</td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Vue.js</td>
<td>User Interface Framework (Single Page Application)</td>
</tr>
<tr>
<td></td>
<td>Vuex</td>
<td>State Management Library for Vue.js (Central Datastorage)</td>
</tr>
<tr>
<td></td>
<td>jQuery</td>
<td>JavaScript Library (Utility)</td>
</tr>
<tr>
<td></td>
<td>WebSocket</td>
<td>Real-Time Communication (Two-Way Server-Client Communication)</td>
</tr>
</table>
<h3>Setup build tools</h3>
<div class="subdivision">
<ul>
<li>if you are on windows you will need a command line tool, i suggest the official one from git: <a href="https://gitforwindows.org/" target="_blank" rel="noopener noreferrer">gitforwindows.org/</a></li>
<li>install node (e.g. v16) <a href="https://nodejs.org/en/" target="_blank" rel="noopener noreferrer">nodejs.org</a></li>
<li>install compass (use git bash for this): <c2-code>$ gem install compass</c2-code></li>
<li>install nodemon (use git bash for this): <c2-code>$ npm install -g nodemon</c2-code></li>
</ul>
<p>Nodemon is optional, but it will automatically restart the server when any source file loaded and make your life easier.</p>
<h4>git hooks for versioning</h4>
<p>After you cloned this repository, run <c2-code>$ sh setup_git_hooks.sh</c2-code>. This will install the git hooks, so it sets the content of <q>commit.txt</q> to be the current commit hash. You can also trigger it manually by doing a checkout on the current select branch (e.g. <c2-code>$ git checkout master</c2-code>)</p>
</div>
<h3>Coding</h3>
<div class="subdivision">
<ul>
<li>command line tool 1 (e.g. git bash): <c2-code>$ cd compass & compass watch</c2-code></li>
<li>command line tool 2 (e.g. git bash): <c2-code>$ nodemon</c2-code> or for debugging <c2-code>$ nodemon -- loglevel=3</c2-code> (3 = info, 4 = log, 5= debug)</li>
</ul>
<h4>Upgrading the version</h4>
<p>Just edit the file <q>public_static/version.txt</q></p>
<h4>Upgrading vue.js and vuex library</h4>
<p>Visit <a href="https://unpkg.com/browse/[email protected]/dist/" target="_blank" rel="noopener noreferrer">https://unpkg.com/browse/[email protected]/dist/</a> and select the most recent version. Download the <q>vue.global.js</q> (for testing) or <q>vue.global.prod.js</q> (for production). Replace <q>/public_static/scripts/lib/vue.js</q> with whatever you downloaded.</p>
<p>Procedure is similar for vuex (<a href="https://unpkg.com/browse/[email protected]/dist/" target="_blank" rel="noopener noreferrer">https://unpkg.com/browse/[email protected]/dist/</a>).</p>
<h4>Updating manual</h4>
<p>Simply edit <q>manual.html</q> directly. All scripts, styles, images are included in this single file.</p>
<p>If you make any changes to the styling (inside <q>compass/sass/manual.scss</q>) you must recompile the stylesheets (via compass), take the output from <q>public_static/stylesheets/manual.css</q> and replace the <c2-code><style></c2-code> tag inside the manual.html file.</p>
<h4>Creating executable</h4>
<p>Install pkg: <c2-code>$ npm i pkg -g</c2-code></p>
<p>run <c2-code>$ pkg .</c2-code></p>
<p>The executables can be found in <q>/dist</q></p>
<h5>Update playlist.xml (locations) for the management addon (Carsa's companion)</h5>
<p>For every map tile, we define a zone, which is required to show the tiles in the webclient live map at the right position. The ingame script finds all those zones and their positions. In case new tiles are added (game update), you need to update the playlist.xml (automated with a script of course).</p>
<p>After you did build the playlist.xml (see Readme of Carsas-CommandsV2) then you can run <c2-code>$ node build-tools/make-playlist-with-zones.js</c2-code></p>
<p>The above command will read <q>%appdata%/Roaming/Stormworks/data/missions/Carsa's Commands/playlist.xml</q> inject the env_mods/locations and write the ouput to <q>%appdata%/Roaming/Stormworks/data/missions/Carsa's Commands/playlist_with_zones.xml</q></p>
<p>Now you have to replace the original <q>playlist.xml</q> file with the <q>playlist_with_zones.xml</q> file.</p>
</div>
<h3>Folder Structure</h3>
<table>
<tr>
<td>.githooks</td>
<td>contains code that creates the file "public_static/commit.txt" with the current git commit hash</td>
</tr>
<tr>
<td>build-tools</td>
<td>contains build tools and scripts</td>
</tr>
<tr>
<td>c2</td>
<td>contains source code for the Node.js webserver</td>
</tr>
<tr>
<td>compass</td>
<td>contains source code of sass/compass that will later be compiled into css files</td>
</tr>
<tr>
<td>dist</td>
<td>contains generated standalone executables</td>
</tr>
<tr>
<td>node-modules</td>
<td>contains all the npm dependencies (as source code)</td>
</tr>
<tr>
<td>public-static</td>
<td>contains files served by the webserver (as "/static/...") which are required for the website (including javascript files, compiled css, images, tile images, etc.</td>
</tr>
<tr>
<td>views</td>
<td>contains handlebar templates for all the html pages</td>
</tr>
<tr>
<td>app.js</td>
<td>the main server application file</td>
</tr>
<tr>
<td>setup_git_hooks.sh</td>
<td>Used to setup githooks that create the "public_static/commit.txt" file</td>
</tr>
</table>
<p>Other files not mentioned in this table are either explained later, in the readme or are self explanatory.</p>
<h3>Concepts</h3>
<div class="subdivision">
<h4>Message types</h4>
<p>For the messages that are being sent from the Frontend: message types starting with <q>command-</q> are always messages that are sent from the Frontend to the Game. All other messages that are being sent from the Frontend are only meant for the Backend and not forwarded to the Game.</p>
<p>For the messages that are being sent from the Game: message types starting with <q>sync-</q> are messages containing data of syncables. Those will be forwarded to all clients. For other message types, individual rules apply. Sometimes, the message is only forwared to clients with certain permissions, ...</p>
<h4>Syncables</h4>
<p>Syncables are special data, both defined on the management addon and in the frontend code. The management addon will send those data updates when the data changes (and whenever a client connects freshly to the server). In the frontend, components that trigger a command (of the management addon) will often wait until a certain sync (defined per component) arrives. In the meanwhile, they will lock themselves so the user cannot try to trigger that command again before he is being displayed the new current state.</p>
</div>
<h3>Message Flow</h3>
<div class="subdivision">
<p>These are several examples for different variants of message flows. They should help you to understand the message/event oriented flow. Both the connection Webclient <-> Backend and Backend <-> Game are full duplex. Both sides can send messages. Each message contains an id (counted individual for every side). Every message <b>requires</b> a response (a message with the same individual id). This response can either be sent immediately (e.g. when Game sends request to backend) or asynchronously after some time (e.g. when Webclient sends command to backend and backend sends to game and then back the whole chain once the game triggers another HTTP request containing the response).</p>
<p>The duplex HTTP connection between Game and Backend is different from the duplex WebSocket connection between Frontend and Backend: The game can only send requests to the backend, but the backend cannot send requests to the game. Instead the backend has to wait for the game to do another request and then include its own request inside the response of that HTTP request. This means a bit of delay. To minimize this delay, the heartbeat happens very often. Every hearbeat (and every other request) the GameHTTPHandler checks if there is a message (from Backend to Game) in the queue, if so, it will add this message to the response. If there is still more messages in the clue, a flag will be set, that indicates the management addon to immediately start another HTTP request to pickup the other messages in the queue.</p>
<h4>Game -> Backend</h4>
<p>Example: <q>Tokens</q></p>
<p>The management addon sends the current companion tokens of all players to the backend (initially and when a token changes or a new player joins). The ModuleCore registers a message handler for <c2-code>token-sync</c2-code> and receives the tokens as an object (because the game sent it away as a json object). The parsing happened inside the GameHttpHandler.</p>
<h4>Game -> Backend -> Frontend</h4>
<p>Example: <q>Heartbeat</q></p>
<p>The management addon sends a heartbeat (small message) that tells the backend the management addont is still running. The Backend will then forward this message to all webclients (currently only used for status bar blinking). The ModuleCore reigsters a message handler for <c2-code>heartbeat</c2-code> and receives an object or string, if it equals <c2-code>first</c2-code> that means the management addon has just started or the server has just started, if it is an object, it contains the current length of the message sending queue, which can be used to display a warning if this queue is filling up (normally due to a bug). After that, the message is sent to all webclients (ignoring if it actually reached them). On the webclient, the C2 code will receive that message, dispatch an event and the status-bar component will listen to it and flash the status indicator circle.</p>
<h4>Backend -> Frontend</h4>
<p>Example: <q>Initial game connection state</q></p>
<p>When a new WebSocket connection is being opened in WebInterface, it dispatches an event, C2 listens to that event and sends a message to all webclients with the current connection state of the management addon.</p>
<h4>Frontend -> Backend -> Frontend</h4>
<p>Example: <q>Server Settings</q></p>
<p>If a user changes a server setting on the <c2-page>settings</c2-page> he triggers the sending of a message of type <c2-code>set-server-setting</c2-code>, in ModuleCore, a handler for this type has been registered which now checks if the client has the permission to perform this action (either is localhost or logged in by token and has the Owner role). Depending on the result, the ModuleCore will then respond to the request. The WebSocketHandler will send a message to the webclient which is marked as being a response to a previous message and it contains either the error message or the success message (in this case the new current server settings). The Frontend can now either display the error message or a success message and update the server settings in the central storage.</p>
<h4>Frontend -> Backend -> Game -> Backend -> Frontend</h4>
<p>Example: <q>Kick Player</q></p>
<p>In the Frontend, the user clicks a button inside a component which triggers the <q>kickPlayer</q> command. This also locks the button. The Frontend sends a message of type <c2-code>command-kickPlayer</c2-code> to the Backend, the Backend relays this message to the Game. The Game will respond at some point (either accept, if the client has that permission and the target player id is valid, or deny and respond with an error message) and the Backend will relay the information back to the Frontend. The Frontend will now either display an error message or a success message. Because this command has changed the players data, the management addon will send a <c2-code>sync-players</c2-code> message including the new current player data. The Frontend will receive this data and update the central storage. This will emit an event and the component that triggered the <q>kickPlayer</q> command will listen to it and unlock itself.</p>
</div>
<h3>Backend Code Structure</h3>
<div class="subdivision">
<h4>app.js</h4>
<p>The main application file initializes the express webserver, sets up the routes and pages and loads the <q>C2</q> code.</p>
<h4>C2.js</h4>
<p>This class loads all the modules and provides some APIs for them. Each module can use those APIs to send messages to either game or webclients, can register callbacks/handlers for specific message types from either the game or the webclients.</p>
<h4>C2_ConsoleLogger.js</h4>
<p>This class intercepts logs and writes them to the logfile.</p>
<h4>C2_Utility.js</h4>
<p>This class provides utility functions for logging and an event system.</p>
<h4>C2GameHttpHandler.js</h4>
<p>This class handles HTTP requests coming from the Stormworks game and request that other C2 code wants to send to the game. It is a seperate webserver that runs on a different port then the main webserver. This class handles new requests and responses to existing requests (full duplex system) but the basis is only HTTP requests coming from the Stormworks game (more precise: from the management addon). It is able to split huge messages into several parts and also merge back together those parts. If a the reponse to a request runs into a timeout, this class fails that request automatically. The class communicates with the management addon via JSON, the payload/data inside the JSON is always (this is different to the WebSocketHandler) a JSON string, which means JSOn will be parsed automatically. The payload/data will be forwarded to other parts of C2 code (e.g. as the response to an answer) as some kind of an object (Object, Array, string, boolean, whatever the JSON.parse() output is)!</p>
<h4>C2GameInterface.js</h4>
<p>This class is the streamlined connection between any C2 code and the GameHTTPHandler. It also detects wether the management addon is connected (using a heartbeat system).</p>
<h4>C2WebSocketHandler.js</h4>
<p>This class handles WebSocket connections and request coming from webclients as well as request that other C2 code wants to send to webclients. This class handles new requests and responses to existing requests (full duplex system). This class communicates with the webclients code via JSON, the payload/data inside the JSON is often a JSON string but does not have to. The payload/data will be forwarded to other parts of C2 code (e.g. as the response to an answer) as a string! The C2 code has to handle/parse the payload/data itself (if the payload/data is forwarded to the game, no parsing happens, since the parsing will happen in the game code).</p>
<h4>C2WebInterface.js</h4>
<p>This class is the streamlined connection between any C2 code and the WebSocketHTTPHandler.</p>
<h4>C2GameWebServer.js</h4>
<p>This class is responsible for the second webserver which is only responsible for accepting HTTP request from the Stormworks game (more precise: the management addon). </p>
<h4>C2Module_Core.js</h4>
<p>This class is responsible for setting up the core functionality:</p>
<ul>
<li>Backend permission management (filter data coming from game and sent to webclient, control access to webserver settings management)</li>
<li>Version Checks</li>
<li>Notifications for the user (not 100% implemented and only used for version checks)</li>
<li>Rate-limit logins (via token)</li>
<li>Relay commands between WebInterface <-> GameInterface</li>
<li>Webserver settings management</li>
</ul>
<h4>C2Module_Map.js</h4>
<p>This class is responsible for functionality around the <c2-page>map</c2-page> (forward map updates from GameInterface -> WebInterface).</p>
<h4>C2Module_Test.js</h4>
<p>This class is responsible for functionality around the <c2-page>tests</c2-page> (run connectivity and performance tests).</p>
<h4>C2Module_Gameserver.js</h4>
<p>This class is responsible for managing the dedicated game server executable (Stormworks). It relays information between the WebInterface and the GameServerManager.</p>
<h4>C2GameServerManager.js</h4>
<p>This class is responsible of starting and stoping the game server executable. It utilizes GameServerProcess which is spawned as a child process and relays console output from that child process back to the Module_Gameserver. It also handles state events of the child process (e.g. errors, exit, etc). It also constantly checks if a process that matches the game server executable is currently running and can kill that process.</p>
<h4>C2GameServerProcess.js</h4>
<p>This class is responsible of spawning a cmd process that executes the game server executable. This cmd process is then able to continue running on its own (even if the companion application stops). This class also relays console output from the executable back to the GameServerManager.</p>
</div>
<h3>Frontend Code Structure</h3>
<div class="subdivision">
<h4>C2.js</h4>
<p>This class initializes Vue.js and the Vuex store. It provides an API for modules to register message callbacks/handlers, storables, syncables, components and pages and an API for showing notifications. Displays error popup as a fallback for Vue.js internal error handling (of the components themselves).</p>
<h4>C2_ConsoleLogger.js</h4>
<p>This class is responsible to intercept logs, cache them and later provide them for error messages displayed to the user.</p>
<h4>C2_Utility.js</h4>
<p>This class provides utility functions for logging and an event system. It also provides mixins components can use for logging, sending messages or commands. It also provides some basic components (e.g. lockables, extendables, buttons, icons, ...)</p>
<h4>C2WebClient.js</h4>
<p>This class is just a small wrapper for the WebSock. It takes care of converting data into lua format (undefined and null are converted into nil, an array is converted into a space seperated text (to represent an argument string)).</p>
<h4>C2WebSock.js</h4>
<p>This class provides functions to easily send messages and receive responses. It enhances the default WebSocket class by automatically trying to reconnect. It can also trigger the page reload, if the Backend requested a force reload (e.g. after server restart).</p>
<h4>C2Module_Core.js</h4>
<p>This class is responsible for setting up the core functionality</p>
<ul>
<li>Notifications</li>
<li>Status bar</li>
<li>Login and user state</li>
<li><c2-page>home</c2-page></li>
<li><c2-page>players</c2-page></li>
<li><c2-page>vehicles</c2-page></li>
<li><c2-page>roles</c2-page></li>
<li><c2-page>rules</c2-page></li>
<li><c2-page>preferences</c2-page></li>
<li><c2-page>gamesettings</c2-page></li>
<li><c2-page>logs</c2-page></li>
<li><c2-page>chat</c2-page></li>
<li><c2-page>settings</c2-page></li>
</ul>
<h4>C2Module_Map.js</h4>
<p>This class is responsible for the <c2-page>map</c2-page> and receiving updates of the live players and vehicles.</p>
<h4>C2Module_Test.js</h4>
<p>This class is responsible for the <c2-page>tests</c2-page> and starting several connectivity and performance tests.</p>
<h4>C2Module_Gameserver.js</h4>
<p>This class is responsible for the <c2-page>gameserver</c2-page> and starting/stopping the dedicated game server.</p>
</div>
</div>
</div>
</body>
</html>