aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinweiClarkChao <[email protected]>2014-02-20 12:50:15 +0800
committerJinweiClarkChao <[email protected]>2014-02-20 12:52:51 +0800
commit31fb10f393fbfd4d7adf528ec70624d2b8d247a8 (patch)
tree1009bb2a4f5fe89b8bc822b68104018ea8df5261
parentbe404e3e01ca839e730c884309c25abef10863c9 (diff)
downloadjinwei.me-31fb10f393fbfd4d7adf528ec70624d2b8d247a8.tar.gz
Six Blocks Version
-rw-r--r--Blocks/72906-106.jpgbin0 -> 475073 bytes
-rw-r--r--Blocks/Flipboard/css/demo.css49
-rw-r--r--Blocks/Flipboard/css/fallback.css41
-rw-r--r--Blocks/Flipboard/css/style.css465
-rw-r--r--Blocks/Flipboard/images/1.gifbin0 -> 46290 bytes
-rw-r--r--Blocks/Flipboard/images/1.jpgbin0 -> 43878 bytes
-rw-r--r--Blocks/Flipboard/images/2.jpgbin0 -> 61573 bytes
-rw-r--r--Blocks/Flipboard/images/3.jpgbin0 -> 46384 bytes
-rw-r--r--Blocks/Flipboard/images/31.pngbin0 -> 244204 bytes
-rw-r--r--Blocks/Flipboard/images/32.pngbin0 -> 221622 bytes
-rw-r--r--Blocks/Flipboard/images/33.pngbin0 -> 149821 bytes
-rw-r--r--Blocks/Flipboard/images/34.pngbin0 -> 147398 bytes
-rw-r--r--Blocks/Flipboard/images/4.jpgbin0 -> 41492 bytes
-rw-r--r--Blocks/Flipboard/images/41.jpgbin0 -> 388665 bytes
-rw-r--r--Blocks/Flipboard/images/43.jpgbin0 -> 325424 bytes
-rw-r--r--Blocks/Flipboard/images/44.jpgbin0 -> 395792 bytes
-rw-r--r--Blocks/Flipboard/images/5.jpgbin0 -> 31082 bytes
-rw-r--r--Blocks/Flipboard/images/6.jpgbin0 -> 99676 bytes
-rw-r--r--Blocks/Flipboard/images/7.jpgbin0 -> 76749 bytes
-rw-r--r--Blocks/Flipboard/images/8.jpgbin0 -> 29856 bytes
-rw-r--r--Blocks/Flipboard/images/ImageAttribution.txt4
-rw-r--r--Blocks/Flipboard/images/beijing.pngbin0 -> 194195 bytes
-rw-r--r--Blocks/Flipboard/images/cover.jpgbin0 -> 85319 bytes
-rw-r--r--Blocks/Flipboard/images/cover1.jpgbin0 -> 29784 bytes
-rw-r--r--Blocks/Flipboard/images/fabric_plaid.pngbin0 -> 9897 bytes
-rw-r--r--Blocks/Flipboard/index.html316
-rw-r--r--Blocks/Flipboard/js/core.string.js240
-rw-r--r--Blocks/Flipboard/js/jquery.flips.js965
-rw-r--r--Blocks/Flipboard/js/jquery.history.js1
-rw-r--r--Blocks/Flipboard/js/jquery.tmpl.min.js1
-rw-r--r--Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js478
-rw-r--r--Blocks/Flipboard/js/modernizr.custom.08464.js4
-rw-r--r--Blocks/For U_files/_notes/dwsync.xml9
-rw-r--r--Blocks/For U_files/future.pngbin0 -> 3888 bytes
-rw-r--r--Blocks/For U_files/life.pngbin0 -> 3999 bytes
-rw-r--r--Blocks/For U_files/love.pngbin0 -> 3006 bytes
-rw-r--r--Blocks/For U_files/python.pngbin0 -> 4159 bytes
-rw-r--r--Blocks/For U_files/time.pngbin0 -> 24881 bytes
-rw-r--r--Blocks/For U_files/train.pngbin0 -> 13711 bytes
-rw-r--r--Blocks/For U_files/world.pngbin0 -> 7487 bytes
-rw-r--r--Blocks/alphabet.js1
-rw-r--r--Blocks/audiojs/Bandari-Your Smile.mp3bin0 -> 2766891 bytes
-rw-r--r--Blocks/audiojs/Richard .mp3bin0 -> 3225530 bytes
-rw-r--r--Blocks/audiojs/The First Snowflake.mp3bin0 -> 3121263 bytes
-rw-r--r--Blocks/audiojs/audio.min.js24
-rw-r--r--Blocks/audiojs/audiojs.swfbin0 -> 1644 bytes
-rw-r--r--Blocks/audiojs/player-graphics.gifbin0 -> 4499 bytes
-rw-r--r--Blocks/code.html97
-rw-r--r--Blocks/countdown/audiojs/The First Snowflake.mp3bin0 -> 3121263 bytes
-rw-r--r--Blocks/countdown/audiojs/audio.min.js24
-rw-r--r--Blocks/countdown/audiojs/audiojs.swfbin0 -> 1644 bytes
-rw-r--r--Blocks/countdown/audiojs/player-graphics.gifbin0 -> 4499 bytes
-rw-r--r--Blocks/countdown/css/countdown.css13
-rw-r--r--Blocks/countdown/index.html68
-rw-r--r--Blocks/countdown/js/countdown.min.js14
-rw-r--r--Blocks/countdown/js/jquery-1.10.2.js6
-rw-r--r--Blocks/countdown/js/jquery.knob.min.js15
-rw-r--r--Blocks/countdown/js/jquery.min.js154
-rw-r--r--Blocks/countdown/js/lrtk.js130
-rw-r--r--Blocks/countdown/something.pngbin0 -> 23095 bytes
-rw-r--r--Blocks/countdown/waiting.pngbin0 -> 14177 bytes
-rw-r--r--Blocks/demo/2(3).jpgbin0 -> 137941 bytes
-rw-r--r--Blocks/demo/bg.jpgbin0 -> 76136 bytes
-rw-r--r--Blocks/demo/cartedeParis1.html159
-rw-r--r--Blocks/demo/deibi-webfont.eotbin0 -> 28906 bytes
-rw-r--r--Blocks/demo/deibi-webfont.svg213
-rw-r--r--Blocks/demo/deibi-webfont.ttfbin0 -> 63164 bytes
-rw-r--r--Blocks/demo/deibi-webfont.woffbin0 -> 32212 bytes
-rw-r--r--Blocks/demo/images/Paris_eiffel.pngbin0 -> 14110 bytes
-rw-r--r--Blocks/demo/images/Paris_roofs.pngbin0 -> 48684 bytes
-rw-r--r--Blocks/demo/images/Paris_sky.jpgbin0 -> 23904 bytes
-rw-r--r--Blocks/demo/images/clouds1000.pngbin0 -> 27087 bytes
-rw-r--r--Blocks/demo/images/clouds1200_1.pngbin0 -> 33975 bytes
-rw-r--r--Blocks/demo/images/clouds1200_2.pngbin0 -> 16306 bytes
-rw-r--r--Blocks/demo/images/eiffel.pngbin0 -> 5294 bytes
-rw-r--r--Blocks/demo/images/eiffel1.pngbin0 -> 8715 bytes
-rw-r--r--Blocks/demo/images/eiffel2.pngbin0 -> 18629 bytes
-rw-r--r--Blocks/demo/images/phare.pngbin0 -> 5860 bytes
-rw-r--r--Blocks/demo/images/sparkling1.pngbin0 -> 58194 bytes
-rw-r--r--Blocks/demo/images/sparkling2.pngbin0 -> 53367 bytes
-rw-r--r--Blocks/jquery-1.10.2.min.js6
-rw-r--r--Blocks/life.html54
-rw-r--r--Blocks/life/148337312826694352.jpgbin0 -> 537281 bytes
-rw-r--r--Blocks/life/1713901133291362836.jpgbin0 -> 353709 bytes
-rw-r--r--Blocks/life/1903615267594677472.jpgbin0 -> 706173 bytes
-rw-r--r--Blocks/life/2041819481159275260.jpgbin0 -> 573289 bytes
-rw-r--r--Blocks/life/3014878475648013989.jpgbin0 -> 410450 bytes
-rw-r--r--Blocks/life/3374040545930946866.jpgbin0 -> 405661 bytes
-rw-r--r--Blocks/life/3911939226425011954.jpgbin0 -> 628279 bytes
-rw-r--r--Blocks/life/6597074164702513006.pngbin0 -> 15606 bytes
-rw-r--r--Blocks/life/6597305062146155801.jpgbin0 -> 631707 bytes
-rw-r--r--Blocks/life/6598086814913787340.jpgbin0 -> 474182 bytes
-rw-r--r--Blocks/life/6598256139704465765.jpgbin0 -> 544897 bytes
-rw-r--r--Blocks/life/gqj.pngbin0 -> 519326 bytes
-rw-r--r--Blocks/life/icon.jpgbin0 -> 500 bytes
-rw-r--r--Blocks/life/shming.pngbin0 -> 10966 bytes
-rw-r--r--Blocks/main.css163
-rw-r--r--Blocks/main.js21
-rw-r--r--Blocks/pics/2012_03.jpgbin0 -> 776153 bytes
-rw-r--r--Blocks/pics/20130228192941_rm3ky.jpgbin0 -> 116765 bytes
-rw-r--r--Blocks/pics/QQ截图20131123002119.pngbin0 -> 302399 bytes
-rw-r--r--Blocks/pics/QQ截图20131123002203.pngbin0 -> 216019 bytes
-rw-r--r--Blocks/pics/QQ截图20131123002213.pngbin0 -> 72446 bytes
-rw-r--r--Blocks/pics/siteinfo.pngbin0 -> 15604 bytes
-rw-r--r--Blocks/post/index.html33
-rw-r--r--Blocks/post/jquery.min.js2
-rw-r--r--Blocks/post/snowfall.min.js5
-rw-r--r--Blocks/post/style.css62
-rw-r--r--Blocks/syntax/LGPL-LICENSE165
-rw-r--r--Blocks/syntax/MIT-LICENSE20
-rw-r--r--Blocks/syntax/compass/_theme_template.scss120
-rw-r--r--Blocks/syntax/compass/config.rb14
-rw-r--r--Blocks/syntax/compass/shCore.scss216
-rw-r--r--Blocks/syntax/compass/shCoreDefault.scss2
-rw-r--r--Blocks/syntax/compass/shCoreDjango.scss2
-rw-r--r--Blocks/syntax/compass/shCoreEclipse.scss2
-rw-r--r--Blocks/syntax/compass/shCoreEmacs.scss2
-rw-r--r--Blocks/syntax/compass/shCoreFadeToGrey.scss2
-rw-r--r--Blocks/syntax/compass/shCoreMDUltra.scss2
-rw-r--r--Blocks/syntax/compass/shCoreMidnight.scss2
-rw-r--r--Blocks/syntax/compass/shCoreRDark.scss2
-rw-r--r--Blocks/syntax/compass/shThemeDefault.scss7
-rw-r--r--Blocks/syntax/compass/shThemeDjango.scss36
-rw-r--r--Blocks/syntax/compass/shThemeEclipse.scss48
-rw-r--r--Blocks/syntax/compass/shThemeEmacs.scss32
-rw-r--r--Blocks/syntax/compass/shThemeFadeToGrey.scss36
-rw-r--r--Blocks/syntax/compass/shThemeMDUltra.scss32
-rw-r--r--Blocks/syntax/compass/shThemeMidnight.scss32
-rw-r--r--Blocks/syntax/compass/shThemeRDark.scss32
-rw-r--r--Blocks/syntax/index.html24
-rw-r--r--Blocks/syntax/scripts/shAutoloader.js17
-rw-r--r--Blocks/syntax/scripts/shBrushAS3.js59
-rw-r--r--Blocks/syntax/scripts/shBrushAppleScript.js75
-rw-r--r--Blocks/syntax/scripts/shBrushBash.js59
-rw-r--r--Blocks/syntax/scripts/shBrushCSharp.js65
-rw-r--r--Blocks/syntax/scripts/shBrushColdFusion.js100
-rw-r--r--Blocks/syntax/scripts/shBrushCpp.js97
-rw-r--r--Blocks/syntax/scripts/shBrushCss.js91
-rw-r--r--Blocks/syntax/scripts/shBrushDelphi.js55
-rw-r--r--Blocks/syntax/scripts/shBrushDiff.js41
-rw-r--r--Blocks/syntax/scripts/shBrushErlang.js52
-rw-r--r--Blocks/syntax/scripts/shBrushGroovy.js67
-rw-r--r--Blocks/syntax/scripts/shBrushJScript.js52
-rw-r--r--Blocks/syntax/scripts/shBrushJava.js57
-rw-r--r--Blocks/syntax/scripts/shBrushJavaFX.js58
-rw-r--r--Blocks/syntax/scripts/shBrushPerl.js72
-rw-r--r--Blocks/syntax/scripts/shBrushPhp.js88
-rw-r--r--Blocks/syntax/scripts/shBrushPlain.js33
-rw-r--r--Blocks/syntax/scripts/shBrushPowerShell.js74
-rw-r--r--Blocks/syntax/scripts/shBrushPython.js64
-rw-r--r--Blocks/syntax/scripts/shBrushRuby.js55
-rw-r--r--Blocks/syntax/scripts/shBrushSass.js94
-rw-r--r--Blocks/syntax/scripts/shBrushScala.js51
-rw-r--r--Blocks/syntax/scripts/shBrushSql.js66
-rw-r--r--Blocks/syntax/scripts/shBrushVb.js56
-rw-r--r--Blocks/syntax/scripts/shBrushXml.js69
-rw-r--r--Blocks/syntax/scripts/shCore.js17
-rw-r--r--Blocks/syntax/scripts/shLegacy.js17
-rw-r--r--Blocks/syntax/src/shAutoloader.js130
-rw-r--r--Blocks/syntax/src/shCore.js1721
-rw-r--r--Blocks/syntax/src/shLegacy.js157
-rw-r--r--Blocks/syntax/styles/shCore.css226
-rw-r--r--Blocks/syntax/styles/shCoreDefault.css328
-rw-r--r--Blocks/syntax/styles/shCoreDjango.css331
-rw-r--r--Blocks/syntax/styles/shCoreEclipse.css339
-rw-r--r--Blocks/syntax/styles/shCoreEmacs.css324
-rw-r--r--Blocks/syntax/styles/shCoreFadeToGrey.css328
-rw-r--r--Blocks/syntax/styles/shCoreMDUltra.css324
-rw-r--r--Blocks/syntax/styles/shCoreMidnight.css324
-rw-r--r--Blocks/syntax/styles/shCoreRDark.css324
-rw-r--r--Blocks/syntax/styles/shThemeDefault.css117
-rw-r--r--Blocks/syntax/styles/shThemeDjango.css120
-rw-r--r--Blocks/syntax/styles/shThemeEclipse.css128
-rw-r--r--Blocks/syntax/styles/shThemeEmacs.css113
-rw-r--r--Blocks/syntax/styles/shThemeFadeToGrey.css117
-rw-r--r--Blocks/syntax/styles/shThemeMDUltra.css113
-rw-r--r--Blocks/syntax/styles/shThemeMidnight.css113
-rw-r--r--Blocks/syntax/styles/shThemeRDark.css113
-rw-r--r--Blocks/syntax/tests/.rvmrc1
-rw-r--r--Blocks/syntax/tests/brushes/sass.html204
-rw-r--r--Blocks/syntax/tests/brushes_tests.html143
-rw-r--r--Blocks/syntax/tests/cases/001_basic.html42
-rw-r--r--Blocks/syntax/tests/cases/002_brushes.html50
-rw-r--r--Blocks/syntax/tests/cases/003_script_tag.html42
-rw-r--r--Blocks/syntax/tests/cases/004_url_parsing.html43
-rw-r--r--Blocks/syntax/tests/cases/005_no_gutter.html33
-rw-r--r--Blocks/syntax/tests/cases/006_pad_line_numbers.html39
-rw-r--r--Blocks/syntax/tests/cases/007_collapse.html60
-rw-r--r--Blocks/syntax/tests/cases/007_collapse_interaction.html44
-rw-r--r--Blocks/syntax/tests/cases/008_first_line.html29
-rw-r--r--Blocks/syntax/tests/cases/009_class_name.html32
-rw-r--r--Blocks/syntax/tests/cases/010_highlight.html70
-rw-r--r--Blocks/syntax/tests/cases/011_smart_tabs.html98
-rw-r--r--Blocks/syntax/tests/cases/012_server_side.html35
-rw-r--r--Blocks/syntax/tests/cases/013_html_script.html34
-rw-r--r--Blocks/syntax/tests/cases/014_legacy.html70
-rw-r--r--Blocks/syntax/tests/commonjs_tests.js52
-rw-r--r--Blocks/syntax/tests/js/jquery-1.4.2.js6240
-rw-r--r--Blocks/syntax/tests/js/qunit.css135
-rw-r--r--Blocks/syntax/tests/js/qunit.js1069
-rw-r--r--Blocks/syntax/tests/syntaxhighlighter_tests.html249
-rw-r--r--Blocks/syntax/tests/theme_tests.html141
-rw-r--r--Blocks/syntax/tests/webrick.rb11
-rw-r--r--Blocks/syntax/tests/webrick.sh2
-rw-r--r--Blocks/time/index.html55
-rw-r--r--Blocks/time/jquery.min.js6
-rw-r--r--Blocks/time/script.js98
-rw-r--r--Blocks/time/style.css33
-rw-r--r--Blocks/welcome.html132
209 files changed, 21450 insertions, 0 deletions
diff --git a/Blocks/72906-106.jpg b/Blocks/72906-106.jpg
new file mode 100644
index 0000000..ea44056
--- /dev/null
+++ b/Blocks/72906-106.jpg
Binary files differ
diff --git a/Blocks/Flipboard/css/demo.css b/Blocks/Flipboard/css/demo.css
new file mode 100644
index 0000000..2bf1e5b
--- /dev/null
+++ b/Blocks/Flipboard/css/demo.css
@@ -0,0 +1,49 @@
1/* @import url('normalize.css'); */
2/* General Demo Style */
3*{
4 -webkit-box-sizing: border-box;
5 -moz-box-sizing: border-box;
6 box-sizing: border-box;
7}
8body{
9 font-family: 'Open Sans Condensed','Arial Narrow', serif;
10 background: #ddd url(../images/fabric_plaid.png) repeat top left;
11 font-weight: 400;
12 font-size: 15px;
13 color: #333;
14 -webkit-font-smoothing: antialiased;
15 -moz-font-smoothing: antialiased;
16 font-smoothing: antialiased;
17 margin: 0;
18 overflow: hidden;
19}
20a{
21 color: #555;
22 text-decoration: none;
23}
24.clr{
25 clear: both;
26 padding: 0;
27 height: 0;
28 margin: 0;
29}
30.main-title{
31 position: absolute;
32 z-index: -1;
33 width: 50%;
34 padding: 20px 40px;
35 text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.7);
36}
37.main-title h1{
38 font-size: 45px;
39 line-height: 52px;
40 font-weight: 300;
41 color: #777;
42}
43.main-title h1 strong{
44 font-weight: 700;
45}
46.main-title p{
47 font-size: 18px;
48 color: #F86738;
49} \ No newline at end of file
diff --git a/Blocks/Flipboard/css/fallback.css b/Blocks/Flipboard/css/fallback.css
new file mode 100644
index 0000000..6ceae5a
--- /dev/null
+++ b/Blocks/Flipboard/css/fallback.css
@@ -0,0 +1,41 @@
1.no-csstransforms3d body{
2 overflow: auto;
3}
4.no-csstransforms3d .f-page.f-cover,
5.no-csstransforms3d .f-page.f-cover-back{
6 display: none !important;
7}
8.no-csstransforms3d .f-title{
9 position: relative;
10}
11.no-csstransforms3d .main-title{
12 position: relative;
13 width: 100%;
14}
15.no-csstransforms3d .box{
16 width: auto;
17 float: none;
18 height: auto;
19 margin: 20px;
20 box-shadow: 1px 1px 3px rgba(0,0,0,0.2);
21 cursor: auto;
22}
23.no-csstransforms3d .box:after,
24.no-csstransforms3d .box-img-left:after,
25.no-csstransforms3d .box-img-right:after{
26 display: none;
27}
28.no-csstransforms3d .box .img-cont,
29.no-csstransforms3d .box-img-left .img-cont,
30.no-csstransforms3d .box-img-right .img-cont{
31 width: 300px;
32 height: 200px;
33 float: left;
34 margin: 10px 20px 20px 0;
35}
36.no-csstransforms3d .box-img-left p{
37 margin-left: 0px
38}
39.no-csstransforms3d .box-img-right p{
40 margin-right: 0px
41} \ No newline at end of file
diff --git a/Blocks/Flipboard/css/style.css b/Blocks/Flipboard/css/style.css
new file mode 100644
index 0000000..577dc52
--- /dev/null
+++ b/Blocks/Flipboard/css/style.css
@@ -0,0 +1,465 @@
1.container {
2 position: relative;
3 margin: 0 auto;
4 -webkit-perspective: 2200px;
5 -moz-perspective: 2200px;
6 perspective: 2200px;
7}
8.page {
9 width: 50%;
10 height: 100%;
11 position: absolute;
12 -webkit-transform-style: preserve-3d;
13 -moz-transform-style: preserve-3d;
14 -webkit-transform-origin: left center;
15 -moz-transform-origin: left center;
16 -webkit-touch-callout: none;
17 -webkit-user-select: none;
18 -khtml-user-select: none;
19 -moz-user-select: none;
20 -ms-user-select: none;
21 user-select: none;
22}
23.page > div {
24 display: block;
25 height: 100%;
26 width: 100%;
27 position: absolute;
28 background: #fff;
29 -webkit-transform-style: preserve-3d;
30 -moz-transform-style: preserve-3d;
31 -webkit-backface-visibility: hidden;
32 -moz-backface-visibility: hidden;
33}
34.page .back {
35 -webkit-transform: rotateY(-180deg);
36 -moz-transform: rotateY(-180deg);
37}
38.page .outer{
39 width: 100%;
40 height: 100%;
41 position: absolute;
42 top: 0px;
43 left: 0px;
44 overflow: hidden;
45 z-index: 999;
46}
47.page .content{
48 height: 100%;
49 position: absolute;
50 top: 0px;
51 left: 0px;
52}
53.overlay, .flipoverlay{
54 background-color: rgba(0, 0, 0, 0.6);
55 position: absolute;
56 top: 0px;
57 left: 0px;
58 width: 100%;
59 height: 100%;
60 opacity: 0;
61}
62.flipoverlay{
63 background-color: rgba(0, 0, 0, 0.2);
64}
65.page .content .inner{
66 padding: 50px 15px 10px;
67 height: 100%;
68}
69.page h1{
70 text-align: center;
71}
72.page.cover .front .content,
73.page.cover-back .back .content{
74 width: 100% !important;
75}
76.page.cover .front .content:after,
77.page.cover-back .back .content:after{
78 position: absolute;
79 top: 0px;
80 left: 0px;
81 width: 10px;
82 height: 100%;
83 content: '';
84 background: -webkit-linear-gradient(left, rgba(0,0,0,0.25) 0%,rgba(0,0,0,0.01) 16%,rgba(0,0,0,0) 17%,rgba(0,0,0,0) 44%,rgba(0,0,0,0.08) 60%,rgba(0,0,0,0.09) 61%,rgba(0,0,0,0.35) 100%);
85 opacity: 0.2;
86}
87.page.cover-back .back .content:after{
88 left: auto;
89 right: 0px;
90 background:-webkit-linear-gradient(left, rgba(0,0,0,0.53) 0%,rgba(0,0,0,0.1) 10%,rgba(0,0,0,1) 100%);
91}
92.page.cover .front .content .inner{
93 padding-top: 20px;
94}
95.page.cover .front .content{
96 background: #ddd url(../images/cover1.jpg) no-repeat center center;
97 background-size: cover;
98}
99.page.cover-back .back .content{
100 background: #B0D5FF;
101}
102.page.cover h1{
103 color: rgba(255,255,255,0.9);
104 text-align: right;
105 font-weight: 300;
106 font-size: 34px;
107 text-transform: uppercase;
108 margin: 0 0 0 60%;
109 line-height: 34px;
110 padding-bottom: 10px;
111 cursor: default;
112}
113.page.cover h1 span{
114 display: block;
115 font-weight: 300;
116 font-size: 15px;
117}
118.page.cover .f-cover-story{
119 color: rgba(255,255,255,0.9);
120 font-weight: 600;
121 font-size: 50px;
122 line-height: 46px;
123 position: absolute;
124 bottom: 60px;
125 left: 40px;
126 margin: 0;
127 text-transform: uppercase;
128 cursor: default;
129}
130a.f-ref{
131 line-height: 20px;
132 font-size: 16px;
133 position: absolute;
134 top: 252px;
135 font-weight: 300;
136 text-indent: 1px;
137}
138.page.cover .f-cover-story span{
139 display: block;
140 font-size: 26px;
141 line-height: 26px;
142}
143.page a,
144.page.cover .f-cover-story span{
145 color: #F86738;
146}
147.page a:hover{
148 color: #000;
149}
150.f-cover-flip{
151 background: #000;
152 color: #ddd;
153 position: absolute;
154 right: 0px;
155 padding: 5px 30px 5px 20px;
156 font-size: 30px;
157 text-transform: uppercase;
158 font-weight: 500;
159 top: 50%;
160 margin-top: -25px;
161 cursor: default;
162}
163.logo{
164 width: 180px;
165 height: 180px;
166 position: absolute;
167 top: 20px;
168 left: 30px;
169 line-height: 428px;
170 color: white;
171 font-size: 59px;
172 font-weight: bold;
173 text-indent: -3px;
174 cursor: default;
175}
176.logo:before{
177 position: absolute;
178 width: 49%;
179 height: 50%;
180 content: '';
181 top: 0px;
182 left: 0px;
183 background: rgba(255,255,255,0.4);
184 box-shadow: 0 95px 0px rgba(255,255,255,0.6);
185}
186.logo:after{
187 position: absolute;
188 width: 49%;
189 height: 50%;
190 content: '';
191 top: 0px;
192 right: 0px;
193 background: rgba(255,255,255,0.6);
194 box-shadow: 0 95px 0px rgba(255,255,255,0.4);
195}
196.f-title{
197 position: absolute;
198 top: 0px;
199 left: 0px;
200 height: 50px;
201 text-align:center;
202 width: 100%;
203}
204.f-title h2{
205 line-height: 50px;
206 margin: 0;
207 font-weight: 300;
208 font-size: 28px;
209 color: #aaa;
210 float: left;
211 width: 33%;
212}
213.f-title a{
214 width: 33%;
215 float: left;
216 text-align: right;
217 overflow: hidden;
218 height: 50px;
219 font-size: 12px;
220 line-height: 50px;
221 padding: 0px 15px;
222 color: #777;
223 font-style: italic;
224 font-family: "Calisto MT", "Bookman Old Style", Bookman, "Goudy Old Style", Garamond, "Hoefler Text", "Bitstream Charter", Georgia, serif;
225}
226.f-title a:first-child{
227 text-align: left;
228}
229.f-title a:hover{
230 color: #000;
231}
232.box{
233 border-top: 1px solid #f2f2f2;
234 float: left;
235 padding: 20px;
236 overflow: hidden;
237 position: relative;
238 background: #fff;
239 cursor: pointer;
240}
241.img-cont{
242 height: 40%;
243 width: 100%;
244 background-repeat: no-repeat;
245 background-position: top center;
246 background-size: cover;
247}
248.img-1{
249 background-image: url(../images/1.gif);
250}
251.img-2{
252 background-image: url(../images/beijing.png);
253 height: 60%;
254}
255.img-3{
256 background-image: url(../images/31.png);
257}
258.img-4{
259 background-image: url(../images/32.png);
260}
261.img-5{
262 background-image: url(../images/33.png);
263}
264.img-6{
265 background-image: url(../images/34.png);
266}
267.img-7{
268 background-image: url(../images/44.jpg);
269}
270.img-8{
271 background-image: url(../images/41.jpg);
272}
273.img-9{
274 background-image: url(../images/43.jpg);
275}
276.box h3{
277 padding: 10px 0px;
278 margin: 0;
279 font-size: 18px;
280}
281.box h3 span{
282 display: block;
283 font-size: 11px;
284 font-weight: 300;
285 text-transform: uppercase;
286 letter-spacing: 2px;
287 color: #74726f;
288}
289.box:after{
290 position: absolute;
291 background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,0.73) 22%, rgba(255,255,255,0.73) 23%, rgba(255,255,255,1) 91%);
292 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(22%,rgba(255,255,255,0.73)), color-stop(23%,rgba(255,255,255,0.73)), color-stop(91%,rgba(255,255,255,1)));
293 background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,0.73) 22%,rgba(255,255,255,0.73) 23%,rgba(255,255,255,1) 91%);
294 background: -o-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,0.73) 22%,rgba(255,255,255,0.73) 23%,rgba(255,255,255,1) 91%);
295 background: -ms-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,0.73) 22%,rgba(255,255,255,0.73) 23%,rgba(255,255,255,1) 91%);
296 background: linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,0.73) 22%,rgba(255,255,255,0.73) 23%,rgba(255,255,255,1) 91%);
297 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=0 );
298 height: 50px;
299 bottom: 0px;
300 left: 0px;
301 right: 0px;
302 content: '';
303}
304.box p{
305 margin: 0;
306 padding: 0;
307 text-align: justify;
308 font-family: Georgia;
309 font-size: 13px;
310 line-height: 20px;
311 display: block;
312 position: relative;
313 padding-bottom: 30px;
314}
315.w-25{ width: 25%; }
316.w-30{ width: 30%; }
317.w-40{ width: 40%; }
318.w-50{ width: 50%; }
319.w-60{ width: 60%; }
320.w-70{ width: 70%; }
321.w-75{ width: 75%; }
322.w-100{ width: 100%; }
323
324.h-25{ height: 25%; }
325.h-30{ height: 30%; }
326.h-40{ height: 40%; }
327.h-50{ height: 50%; }
328.h-60{ height: 60%; }
329.h-70{ height: 70%; }
330.h-75{ height: 75%; }
331.h-100{ height: 100%; }
332
333.box-expanded.box-img-left .img-cont,
334.box-img-left .img-cont{
335 float: left;
336 width: 40%;
337 height: 100%;
338 margin-right: 2%;
339}
340.box-img-left:after{
341 left: 42%;
342}
343.box-img-left p{
344 margin-left: 42%;
345}
346.box-img-right .img-cont{
347 float: right;
348 width: 40%;
349 height: 100%;
350 margin-left: 2%;
351}
352.box-img-right:after{
353 right: 42%;
354}
355.box-img-right p{
356 margin-right: 42%;
357}
358.title-top h3{
359 padding-top: 0px;
360}
361.box-b-r{
362 border-right: 1px solid #f2f2f2;
363}
364.box-b-l{
365 border-left: 1px solid #f2f2f2;
366}
367.box-expanded{
368 border: none;
369 padding: 50px;
370}
371.box-expanded .img-cont{
372 box-shadow: 1px 1px 2px rgba(0,0,0,0.1);
373 float: left;
374 width: 50%;
375 height: 50%;
376 margin-right: 20px;
377 box-shadow: 1px 1px 2px rgba(0,0,0,0.1);
378}
379.box.box-expanded h3{
380 font-size: 50px;
381 line-height: 50px;
382 padding-top: 0px;
383}
384.box.box-expanded h3 span{
385 font-size: 14px;
386}
387.box.box-expanded p{
388 font-size: 20px;
389 line-height: 30px;
390}
391.box.box-expanded:after{
392 background: transparent;
393}
394.box-expanded .box-close{
395 position: absolute;
396 top: 0px;
397 right: 20px;
398 width: 80px;
399 height: 30px;
400 background: #000;
401 color: #fff;
402 font-weight: bold;
403 font-size: 16px;
404 text-align: center;
405 line-height: 30px;
406}
407@media screen and (max-width: 760px){
408 .f-title a {
409 height: 30px;
410 line-height: 14px;
411 margin-top: 10px;
412 }
413 .f-title h2{
414 font-size: 18px;
415 line-height: 18px;
416 margin-top: 5px;
417 }
418}
419@media screen and (max-width: 690px){
420 .page .box{
421 width: 100%;
422 height: 20%;
423 padding: 5px;
424 border: none;
425 border-top: 1px solid #ddd;
426 }
427 .page .box h3{
428 font-size: 16px;
429 }
430 .page .box h3 span,
431 .page .box .img-cont,
432 .page .box p,
433 .page .box:after{
434 display: none;
435 }
436 .box.box-expanded h3{
437 font-size: 26px;
438 line-height: 30px;
439 padding-top: 15px;
440 clear: both;
441 }
442 .box.box-expanded p{
443 font-size: 16px;
444 line-height: 22px;
445 }
446 .box-img-left p,
447 .box-img-right p{
448 margin: 0;
449 }
450 .box.box-expanded h3 span{
451 font-size: 12px;
452 }
453 body .box-expanded{
454 padding: 40px 20px 20px;
455 }
456 body .box-expanded .img-cont{
457 width: 100% !important;
458 height: 50% !important;
459 margin: 0;
460 }
461 .cover-elements{
462 display: none;
463 }
464
465} \ No newline at end of file
diff --git a/Blocks/Flipboard/images/1.gif b/Blocks/Flipboard/images/1.gif
new file mode 100644
index 0000000..391d383
--- /dev/null
+++ b/Blocks/Flipboard/images/1.gif
Binary files differ
diff --git a/Blocks/Flipboard/images/1.jpg b/Blocks/Flipboard/images/1.jpg
new file mode 100644
index 0000000..c8623c3
--- /dev/null
+++ b/Blocks/Flipboard/images/1.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/2.jpg b/Blocks/Flipboard/images/2.jpg
new file mode 100644
index 0000000..f463a7d
--- /dev/null
+++ b/Blocks/Flipboard/images/2.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/3.jpg b/Blocks/Flipboard/images/3.jpg
new file mode 100644
index 0000000..900e75a
--- /dev/null
+++ b/Blocks/Flipboard/images/3.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/31.png b/Blocks/Flipboard/images/31.png
new file mode 100644
index 0000000..d3eac5e
--- /dev/null
+++ b/Blocks/Flipboard/images/31.png
Binary files differ
diff --git a/Blocks/Flipboard/images/32.png b/Blocks/Flipboard/images/32.png
new file mode 100644
index 0000000..941876a
--- /dev/null
+++ b/Blocks/Flipboard/images/32.png
Binary files differ
diff --git a/Blocks/Flipboard/images/33.png b/Blocks/Flipboard/images/33.png
new file mode 100644
index 0000000..486fc92
--- /dev/null
+++ b/Blocks/Flipboard/images/33.png
Binary files differ
diff --git a/Blocks/Flipboard/images/34.png b/Blocks/Flipboard/images/34.png
new file mode 100644
index 0000000..53a3f82
--- /dev/null
+++ b/Blocks/Flipboard/images/34.png
Binary files differ
diff --git a/Blocks/Flipboard/images/4.jpg b/Blocks/Flipboard/images/4.jpg
new file mode 100644
index 0000000..a487d1f
--- /dev/null
+++ b/Blocks/Flipboard/images/4.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/41.jpg b/Blocks/Flipboard/images/41.jpg
new file mode 100644
index 0000000..c7f7d40
--- /dev/null
+++ b/Blocks/Flipboard/images/41.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/43.jpg b/Blocks/Flipboard/images/43.jpg
new file mode 100644
index 0000000..a37db8e
--- /dev/null
+++ b/Blocks/Flipboard/images/43.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/44.jpg b/Blocks/Flipboard/images/44.jpg
new file mode 100644
index 0000000..1289d2d
--- /dev/null
+++ b/Blocks/Flipboard/images/44.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/5.jpg b/Blocks/Flipboard/images/5.jpg
new file mode 100644
index 0000000..9033d04
--- /dev/null
+++ b/Blocks/Flipboard/images/5.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/6.jpg b/Blocks/Flipboard/images/6.jpg
new file mode 100644
index 0000000..45cbb34
--- /dev/null
+++ b/Blocks/Flipboard/images/6.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/7.jpg b/Blocks/Flipboard/images/7.jpg
new file mode 100644
index 0000000..1dfd8cb
--- /dev/null
+++ b/Blocks/Flipboard/images/7.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/8.jpg b/Blocks/Flipboard/images/8.jpg
new file mode 100644
index 0000000..a591327
--- /dev/null
+++ b/Blocks/Flipboard/images/8.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/ImageAttribution.txt b/Blocks/Flipboard/images/ImageAttribution.txt
new file mode 100644
index 0000000..962294f
--- /dev/null
+++ b/Blocks/Flipboard/images/ImageAttribution.txt
@@ -0,0 +1,4 @@
1Background Pattern from http://subtlepatterns.com/
2
3Photos by NASA HQ: http://www.flickr.com/photos/nasahqphoto/
4
diff --git a/Blocks/Flipboard/images/beijing.png b/Blocks/Flipboard/images/beijing.png
new file mode 100644
index 0000000..c90b15c
--- /dev/null
+++ b/Blocks/Flipboard/images/beijing.png
Binary files differ
diff --git a/Blocks/Flipboard/images/cover.jpg b/Blocks/Flipboard/images/cover.jpg
new file mode 100644
index 0000000..55565f8
--- /dev/null
+++ b/Blocks/Flipboard/images/cover.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/cover1.jpg b/Blocks/Flipboard/images/cover1.jpg
new file mode 100644
index 0000000..6e48737
--- /dev/null
+++ b/Blocks/Flipboard/images/cover1.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/fabric_plaid.png b/Blocks/Flipboard/images/fabric_plaid.png
new file mode 100644
index 0000000..7120bb4
--- /dev/null
+++ b/Blocks/Flipboard/images/fabric_plaid.png
Binary files differ
diff --git a/Blocks/Flipboard/index.html b/Blocks/Flipboard/index.html
new file mode 100644
index 0000000..b97d914
--- /dev/null
+++ b/Blocks/Flipboard/index.html
@@ -0,0 +1,316 @@
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="UTF-8" />
5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6 <title>说好的约定</title>
7 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
8 <meta name="description" content="Experimental Page Layout Inspired by Flipboard" />
9 <meta name="keywords" content="flip, pages, flipboard, layout, responsive, web, web design, grid, ipad, jquery, css3, 3d, perspective, transitions, transform" />
10 <meta name="author" content="Jinwei" />
11 <link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700,300,300italic' rel='stylesheet' type='text/css'>
12 <link rel="stylesheet" type="text/css" href="css/demo.css" />
13 <link rel="stylesheet" type="text/css" href="css/style.css" />
14 <script type="text/javascript" src="js/modernizr.custom.08464.js"></script>
15 <script id="pageTmpl" type="text/x-jquery-tmpl">
16 <div class="${theClass}" style="${theStyle}">
17 <div class="front">
18 <div class="outer">
19 <div class="content" style="${theContentStyleFront}">
20 <div class="inner">{{html theContentFront}}</div>
21 </div>
22 </div>
23 </div>
24 <div class="back">
25 <div class="outer">
26 <div class="content" style="${theContentStyleBack}">
27 <div class="inner">{{html theContentBack}}</div>
28 </div>
29 </div>
30 </div>
31 </div>
32 </script>
33 </head>
34 <body>
35
36 <header class="main-title">
37 <h1>说好的约定 </br><strong>TransSiberian</strong></h1>
38 <p>Swipe or drag to flip the pages, click to open items </p>
39 <p><strong>Best viewed in a Webkit browser (Safari, Chrome)</strong></p>
40 </header>
41
42 <div id="flip" class="container">
43
44 <div class="f-page f-cover">
45 <div class="cover-elements">
46 <div class="logo">
47 Start
48
49 </div>
50
51
52 </div>
53 <div class="f-cover-flip"></div>
54 </div>
55
56 <div class="f-page">
57 <div class="f-title">
58
59 <h2 align="center">从北京到莫斯科</h2>
60
61 </div>
62 <div class="box w-25 h-70">
63 <div class="img-cont img-1"></div>
64 <h3>A brief introduction <span>Published May 3, 2013</span></h3>
65 <p>记得最早是在人人网上看到了德铁的数据库里有从德国到北京的火车。具体是从德国到华沙,从华沙到莫斯科,从莫斯科到北京。后来好像就能经常看到莫斯科到北京的火车的消息了。也许是自己开始不经意地关注了。今天早上特意在维基百科上仔细地看了有关莫斯科到北京的这条线路的火车的信息,在豆瓣上看到了几篇坐过这趟火车的游者的笔记,下午又看了一部有关这趟世界上最长的铁路的电影,TransSiberian,(穿越西伯利亚),毫无疑问,我已经深深地征服了。很显然,我是一直以来都喜欢坐火车出行的。这趟6天5夜的旅行,如果能够成行,必然是生命中不可多得的一次大冒险。首先简要地介绍一下有关这趟火车的细节。从北京到莫斯科的火车线路一共有两趟。一趟是K3/4次列车,经二连浩特进入蒙古国然后进入俄罗斯境内,列车及乘务员全部由中国方面负责。另一趟是K29/30次列车,从北京出发,经满洲里进入俄罗斯境内,列车及乘务人员全部由俄罗斯方面负责。如果是我,我肯定会选择由中方担当营运的K3/4次,一来与乘务员的语言交流方便(这是最主要的),好像其他也没啥理由了。接下来也围绕这一次列车展开。票价方面,分为高包软卧,软卧,硬卧三个档次,分别是6021元,5501元,3737元(数据来自http://rw19.net/record/)。高包就是两人一个包厢,然后一些设施方面比较豪华,普通的软卧是4人一个包厢,硬卧也是4人包房。发车时间方面,每周一班,每周三北京站早上07:45发车,次周一14:19抵达莫斯科。途中主要的站点有大同、二连浩特、扎门乌德、乌兰巴托、伊尔库茨克、新西伯利亚等站。因为中国用的是国际标准轨,而蒙古国和俄罗斯用的是更宽的宽轨,所以在中国边境的二连浩特,列车将会被整列被吊起,更换铁轨。这毫无疑问是激动人心的一次体验。</p>
66 </div>
67 <div class="box w-50 h-70 box-b-l box-b-r">
68 <div class="img-cont img-2"></div>
69 <h3>(一)地图</span></h3>
70 <p>如果我们把目光从中国版图移向世界,那么这样一条铁路线会让你惊叹不已,从太平洋沿岸的符拉迪沃斯托克(海参崴)到乌拉尔山脉的车里雅宾斯克,乌拉尔山是欧洲和亚洲的分界线,车里雅宾斯克是2007年上合军演的所在地,这条线路就是横贯亚欧大陆的西伯利亚大铁路,俄罗斯西伯利亚-远东地区的交通大动脉。当从北京站始发的k3次国际列车出境二连浩特,经乌兰巴托进入俄罗斯境内后,从蒙古国延伸过来的铁轨便与西伯利亚大铁路汇合了,而汇合点距离传说中的贝加尔湖仅半天多的路程而已。
71K3次国际列车的票价是2700元,加上180元的蒙古国的过境签证,约2900元。我知道,经过努力我可能在网上找到3000-4000元的从北京到莫斯科的飞机票,飞机只需要7、8个小时即可到莫斯科,而火车需要六天五夜。然而,10月份正是俄罗斯的深秋季节,遥远的西伯利亚充满着无尽的想象,浩瀚的贝加尔湖,金黄的白桦林,坚韧豪放的俄罗斯农庄……时间和价格都不是我可以错过这条线路的理由,我义无反顾地选择了这条路线,从北京去莫斯科大学亚非学院交流学习。
72列车时刻表上,这条线路被标记为“北京-乌兰巴托-莫斯科”,但这条线路的主角既不是北京、乌兰巴托,也不是莫斯科,而是西伯利亚。
73列车从北京站出发,星期三早晨7点45分,经张家口南、大同、集宁南、晚上8点多到达中国的边境检查站二连浩特,在这里护照会被盖上出境章,旅客需要填写(旅客行李)物品(申)报(海)关单,同时还要更换铁轨,因为中国的铁轨与蒙古国、俄罗斯的铁轨宽窄不同。换轨在“国际换轮库”里进行,火车厢被一节一节地吊起,中国的铁轨撤掉,俄式的铁轨换上,整个过程旅客无须下车,也感觉不到任何震荡。因为换轨和边境检查,所以列车会在二连停3个小时左右。晚上11点多火车离开二连浩特进入蒙古国,随即停在蒙方的边境检查站上,进行蒙方入(过)境签证检查、物品报关等手续,第二天下午1点多达到乌兰巴托,晚上9点左右再次到达蒙古国边境,进行蒙方的出境检查。乌兰巴托时间和北京时间大概是相同的,所以无须调整手表。
74乌兰巴托时间晚上10点多出蒙古国进入俄罗斯,莫斯科时间比北京时间晚4个小时,所以莫斯科时间下午6点左右进入俄罗斯。列车在边境的纳乌什基(наушки)停车,进行俄方的入境签证检查,填写物品报关单、移民卡,这里的检查比较细致。至此,烦琐的边境检查终于结束了,列车奔驰在辽阔的西伯利亚土地上了。经贝加尔湖、伊尔库茨克、克拉斯诺雅尔斯克、新西伯利亚、奥姆斯克、秋明油田(大概在这附近,列车不再走西伯利亚大铁路,转而向西北的东欧平原进发),进入乌拉尔山区的叶卡捷林堡,现在的叶卡也叫做斯维尔德洛夫斯克,过了乌拉尔山,列车正式驶入欧洲,再经别尔米、基洛夫、古都弗拉基米尔,最后进入900万人口的莫斯科,时值莫斯科时间星期一下午2点多。
75这条线路共经过三个国家,纵贯蒙古国南北,经过俄罗斯至少14个行政单位(州、共和国、自治区、边疆区),经过蒙古高原、蒙俄边境的雅布洛诺夫山脉、世界上最深的内陆湖贝加尔湖、中西伯利亚高原的南部、西西伯利亚平原南部,翻过乌拉尔山区后进入东欧平原。列车出中国需要1天,过蒙古也需要1天,其余4天都在广袤的俄罗斯领土上奔驰。
76向东这条线路可以延伸至太平沿岸的海参崴,向西可以延伸至乌克兰、捷克、德国、巴黎等等,跟我同火车包厢的伙伴就是乘坐这条线路回比利时。
77</p>
78 </div>
79 <div class="box w-25 h-70">
80 <div class="img-cont img-3"></div>
81 <h3>(二)离别<span>Published May 3, 2012</span></h3>
82 <p>10月3号凌晨4点多,lan和几个好朋友一起送我去北京站。出租车上,我默默地流泪了,我忍不住我的眼泪,可能是因为我马上就要离开我最熟识的朋友了,大约八个月我们见不到面,也可能是因为胆怯,因为我马上就要步入一个高度不确定的环境中,而我从未经历过这种不确定性。
83出发前的两个星期内,我不停地与亲朋师友们告别。见过了pictures版的老友
84们、小柯、Q艳、小米夫妇和YQ,跟宿舍的哥们喝过,跟同班同学喝过,跟同高中的师兄、师姐、师妹们聚过,同门师友聚会为我饯行,dai爷又以俄餐送行,还去天津看过妹妹,见到了阿蒙和单姐,……临走时,班级的几个穷哥们撕扭着塞给我500块钱……所有这一切,我很感动,也很满足……离别,让生命和友情绽放,却又瞬间将其置于深远的时空下,煎熬着,飘散在空气中的味道叫伤感。
85就这样上火车了。安检很松,只需查看车票。
86我在11车厢第11铺,属于第3包厢,跟我同包厢的是一个比利时人,并且四人包厢里面只有我们两个旅客,看来,我不得不用我蹩脚的英语跟他交流了。lan和好朋友送我到包厢里,把行李放到床铺下面,我们在车厢外壁上的国徽前合影作别,几分钟后,列车缓缓启动……
87我身上带着1500元的美金、笔记本电脑和护照,所以,上了火车心里总是忐忑不安。dai爷曾经在1992年坐过这趟列车,他特别嘱咐我小心看管自己的财物,晚上睡觉的时候要把包厢门反锁好,必要时要用绳子把门锁再缠一遍。在百度网,我也试图搜索一些对这趟列车的介绍,结果搜索出来的消息大部分与90年代的抢劫、偷窃案件有关,也有案件发生在近几年。不过,这么多年过去了,车上的治安应该所有改善吧,我这样想,况且利用国际列车运输货物的高峰期早过去了,车上旅客所携带贵重财物已经很少了。
88愿上帝保佑我一路平安!
89</p>
90 </div>
91 <div class="box w-50 h-30 box-b-r title-top">
92 <h3>(三)启程<span>Published May 3, 2012</span></h3>
93 <p>出发前的晚上我只睡了一个小时,火车离站后,困意迅速来袭。跟比利时人简单打了招呼,我把包厢门反锁,把随身背的361度运动斜挎包放在枕边,倒在卧席上很快就睡着了。
94当我醒来时,发现比利时人也睡着了,他头戴耳机,眼带黑眼罩,身上的毛仿佛野草,杂乱而茂盛……此时列车好像正在经过山区,每隔一会儿就会出现一个隧道,我走出包厢向窗外看,丛山延绵,硕大的山谷扑面而来,我顿时失去了方向,竟不知道这是什么地方。自从去年11月份“京郊穿越黄草梁”一事闹得满城风雨后(此事参见《柏峪-黄草梁-七座楼-向阳村……穿行记》),近一年的时间内我没有“撒野”了,更是很少见到大山。我仔细寻找着路边的字迹,发现了“官厅”、“怀来”字样,才意识到这里是北京的怀柔区。我想起,北京城地处平原,北京小平原的西北方向就是燕山,此刻列车正在穿越燕山,向内蒙古高原方向驶去。
95我回到包厢继续补觉,昏睡中被叫醒,原来是列车乘务员送来免费的午餐券和晚餐券,餐券上有中文、英文和俄文三种语言。既然车上有免费餐券,那我的那些食物岂不白带了?隔壁包厢有女乘客高声说,“怎么还没出河北”,原来列车刚过河北沙城,我心想,旅程刚刚开始就如此心急,那以后的六天五夜她该如何度过呢?我出发时,朋友们也担心我该如何度过这漫长的六天五夜,师兄甚至给我copy了130多集的评书《隋唐演义》,让我在火车上解闷儿,可我毫不担心,我给远在南京的“jia先生”发短信说,六天里我会写日记、看俄罗斯国情方面的书、学俄语、吃东西、做俯卧撑锻炼身体、看风景拍照片……我会有很多事情做,只要不丢东西,我相信这将是一次很难忘的旅行。
96大约11点多,我背着361度运动包,拿着餐券去餐车吃免费午餐,比利时人还在睡觉。运动包里面装着笔记本电脑和证件,所以我决定包不离身。在餐车里,我点了炒花菜、炒蒜苗和一碗米饭,饮料4元一听,需要单独付费。对面来了一个年轻男子,大概27、28岁,个子与我相仿,他点了同样的菜,我主动与他搭话,算是礼貌性地打招呼,他则告诉我“免费餐券过了今天不再有”,原来这免费午餐是对旅客的“慰问餐”。他是北京人,家住宣武区,在莫斯科做生意,正属我的研究群体之列,所以我多问了他几句,他把货物装在包厢里。
9790年代,苏联解体后,俄罗斯的商品极其短缺,尤其是日用品,这为廉价的中国商品进入俄罗斯市场提供了机会,而国际列车就成为最早的商品运输工具。列车规定,旅客行李限重35公斤,但大概这个规定没人理会,或者早被旅客们疏通得名存实亡了,所以这些中国旅客们往往携带很多日用品上车,而列车所停靠的小站往往成为中国商品的集散地,通常尚未到莫斯科,车上的商品早已换成大把的卢布了。正因为车上的商人较多,钱财较多,所以抢劫、偷窃比较猖獗。dai爷讲,他当年坐这趟列车时,从莫斯科上来一个俄罗斯男人,带着两个俄罗斯姑娘,从莫斯科到北京,一直向旅客提供性服务;而这些中国商人也趾高气昂地嫖娼,还宣称为中国失去那么多北方领土报仇雪恨……啧啧……鱼龙混杂、藏污纳垢的东方快车!
98吃饭之际,对面的男子突然堆笑着向我提出要求:“帮个忙儿吧,帮我带几条烟在你房间里”。面对突如其来的要求,我没有任何心理准备。他开始谩骂俄方的女检查员,憎恨俄方的例行检查,我不知怎么拒绝他的要求,当然更不想接受,因为这可能会给我带来麻烦,我只好岔开话题。我非常不爽,凭什么让我帮他做这种事?我立即感觉到他脸上的笑容很猥琐,饭没有吃完,我就起身走了。走廊里,我突然记起,我曾经把包厢地址告诉过他,而餐桌上我也没有明确拒绝他的要求,想必他会找来,我该如何是好?
99免费晚餐我没有去吃,因为我不想再碰到这个商人。我在日记里写道:
100“我阅读翁杏法的小册子《到莫斯科去》,这本小册子是90年代写的,作者明确写道‘不要轻易向别人透露你的居住地址’,我想,我也没有想到,竟是一个中国人首先让我体会到了这个道理……其实,在国外,也许外国人比中国人更友善,中国人由于经济利益的原因往往更功利,更不友善,更坏。可以这样对比,同样互不熟识的情况下,中国人比外国人更愿意向对方提出令对方为难的要求,如果对方拒绝了,中国人也许比外国人更愿意谩骂、憎恨对方”。
101大概晚上8点30分,火车到达二连浩特,这是中国边境检查站,过了这里,我就
102身处异国了,我的手机也将没有信号,无法再跟爸妈、lan、同学联系了。我有些怅然。火车在这里要换轨,我用数码相机拍了换轨过程的小短片,打算回去给同学看。11点多,火车进入蒙古国,在蒙方的检查站停留了一段时间,火车重新启动后,我和比利时人方才入睡,因为今晚不再有检查。</p>
103 </div>
104 <div class="box w-50 h-30 title-top">
105 <h3>(四)蒙古 <span>Published May 3, 2012</span></h3>
106 <p>我在蒙古国大使馆办过境签证的时候,曾经遇到一个中国女人,她说“蒙古什么都没有”。也许她说得没错,透过车窗,我什么都看不到,只有无边无际的大地,比利时朋友不停地念叨着“Nothing, nothing, crazy country”!也许,盛夏季节,这里会是满山遍野的碧绿,但现在正值深秋,草已枯黄,也看不见灌木丛和树林,只有短草勉强包裹着大地。当大地上缺少高大植被的时候,大地所呈现给我们的是标准的“地势”,或平坦如砥,或高低起伏,线条凸凹感十分强烈,大地展现了他性感的一面!很罕见地,我看到一摊水,巴掌那么大,水边围着一群羊,我真担心一个钟头以后,这摊水会被饥渴的羊群喝干。偶尔会见到房屋,远远望去,八、九个房屋围坐在一起,仿佛正在召开部落会议,这里的房屋也像蒙古包,只是尖顶下面围着的是方形墙壁,房屋表面经常涂着墨绿色和铁红色,墨绿色的门窗,铁红色的山墙,别有一番味道。铁路沿线可以看到很多电线杆,但这些电线杆多为木制,并且大多是由两节木头连接而成,印象中,这些木头电线杆是我小时候家乡的景象,而现在家乡的电线杆早已更换成水泥混凝土的了,更加结实耐用。看着这些,我意识到蒙古国的生产能力大致处在什么水平了。蒙古国大使馆门前的那个中国女人告诉我,她给朋友办理签证,而她的朋友是去蒙古国做房屋装潢,想必蒙古国的房屋建设、装潢水平也不高。
107下午1点多(10月4日),列车进入乌兰巴托,我赶紧用小数码录像。乌兰巴托没有想象中那么明净美丽,这应该是蒙古国的“大都市”了,但是我没有看到林立的高楼,楼房多为6、7层,10到20层之间的楼房在乌兰巴托想必是少有的高层建筑了吧,大概更多的居民居住的是平房。蒙古全国也就200多万人口,乌兰巴托的人口能有100万吗?高层建筑大多出现在上海、香港、东京、纽约这样人口高度集中的城市,而乌兰巴托没必要致力于垂直开发空间,也许汽车较房屋的需求更强,在铁路一侧,我看到几个轿车聚集的地方,大概是停车场。
108列车在乌兰巴托站停一会儿,旅客可以下车走动,比利时朋友要去买Mongolian milk,我跟他下车去转转。车站不大,相当于中国中等城市的车站,乌兰巴托下点小雨,一个蒙古中年男子用中文向我兜售蒙古邮票,我没有理会,我们没有找到Mongolian milk,却看到了韩国和中国方便面,比利时朋友在一个小摊铺前驻足,售货大婶可以说俄语,比利时朋友用20元人民币买了一大根香肠和两袋大面包,兴高采烈地往回走,在餐车前,我为他和香肠、面包照相留念。1元人民币大概等于758蒙元,所以一个香肠、两袋面包卖20元人民币很赚,而比利时人也觉得20元人民币买了这么多食物不贵,皆大欢喜。一个国家的货币价格可以反映该国的生产能力,从蒙元的汇率上足见蒙古国的生产水平了。
10930分钟后,列车离开乌兰巴托,我的目光再次陷入苍茫大地。比起乌兰巴托,我更喜欢这辽阔无边的大地,正像久居北京的人喜欢去坝上草原放松心情一样,但习惯了荒芜人烟的大草原的蒙古人也许更喜欢乌兰巴托,在那里游牧的人们可以定居、群居。我在日记里写下:
110“蒙古国一定很贫穷,但这里拥有人烟稀少的土地,因此这里拥有别样的心情和别样性格的人。《乌兰巴托的夜》,是怎样的呢?天上有许多星星?还是地上有许多明亮的车灯?我希望是前者”。
111</p>
112 </div>
113 </div>
114
115 <div class="f-page">
116 <div class="f-title">
117
118 <h2>从北京到莫斯科</h2>
119 </div>
120 <div class="box w-70 h-50 box-b-r title-top box-img-left">
121 <div class="img-cont img-4"></div>
122 <h3>(五)纳乌什基(наушки)<span>Published May 3, 2012</span></h3>
123 <p>傍晚,列车出蒙古进入俄罗斯,在наушки站先后上来4个俄罗斯工作人员进行了3次检查,包括仔细的行李检查,但无需打开行李,检查签证时通常会把护照收走一段时间,待盖完入境章后重新还给旅客。中国、蒙古、俄罗斯三国检查签证的工作人员皆为女性。列车在наушки停车约5个小时,停车时厕所会关闭,可比利时朋友恰好这时想去厕所,所以十分苦恼,直说要找个瓶子撒尿,然后把瓶子扔出窗外,说完我们哈哈大笑。在这一站,我把手表调回了4个小时,开始使用莫斯科时间。
124不出所料,那个中国商人来找我了,我正躺在床上看书,他出现在门口大声说:“原来你在这里啊”,我瞟了他一眼,没有说话,继续看书,然后他走了。我以冷漠表示了拒绝,后来我们再次相遇的时候,他没有再跟我搭话,看来他还很知趣。有了这次经历,我告诫自己“有些事情不要给对方留任何希望”,很快这个经验再次应用上了。наушки站停车时,我听到有个中年男子在走廊里喊:“我得借个护照,要不得罚款了”,听到这个喊声,我下意识地去关包厢门,他恰好走到我们的包厢门口:“能借护照用一下吗”?这是个大约45岁左右的中国男子,我反问道:“护照怎么能借”?他马上回答“是海关让我来借的”,我随即把门关上,不再理他。我心想,为了逃避罚款居然编出“海关让他借护照”的瞎话儿,真是见鬼了。这个男子是第二个向我提出无理要求的中国人,我猜,他可能是长期寄居在列车上的商人,可能负责货物运输,因为他跟列车员有些熟。当我用两种方式拒绝了两个无理要求后,才有所安心。
125过了наушки站,以后的4天将不再有各种检查,真正开始享受西伯利亚之旅了!
126列车在此前的停车时间最长,前后共有4次证件、行李检查,每次检查都要停车几个小时,中间还有一次换轨,这就是通关手续所带来的麻烦。但欧洲就大不一样,欧洲一体化带来的一个重要影响就是简化了欧洲各国之间的通关手续,如果不是这样,乘火车从希腊走到荷兰不知要浪费多少时间和金钱在通关手续上。我的一个朋友大约4年前开始在巴黎读书,迄今已经到过好多欧洲国家,但她的护照上却只有法国签证,当她抱怨护照上签证太少的时候,殊不知签证丰富所意味着的繁琐手续。
127列车再次启动,我知道,明天早晨就能见到贝加尔湖了……噢,贝加尔湖,我心中的梦……今晚,我将带着神秘的贝加尔入梦,good night!
128</p>
129 </div>
130 <div class="box w-30 h-50">
131 <div class="img-cont img-5"></div>
132 <h3>(六)贝加尔<span>Published May 3, 2012</span></h3>
133 <p>一觉醒来,手表显示凌晨3点多,但是太阳却光彩夺目……我有些糊涂了,弄不清时间了。我赶紧起身,打开包厢门向窗外望去,天啊!Какой красивый пейзаж! 太漂亮了!当你的眼睛已经习惯了漫无边际的光秃草原,眼前却突然出现大片大片的金黄色白桦林时,你根本无法抑制那种兴奋与激动,到处都是白桦树,到处都是金黄色,一片连着一片,没有尽头,无边无际,那是一种来自心底的震撼!秋天在这里化身海洋,你向远处看吧,麦田是金色的,白桦林是金色的,阳光是金色的……你会感慨万千,为什么仅仅一线之隔,这边遍地白桦,而那边却只有光秃秃的草原,造物主分配植被的时候未免太苛刻了吧。
134我赶紧回到包厢记下自己的心情,又立刻跑回走廊,生怕错过什么。
135突然,包厢里的比利时朋友大叫一声“lake”!我转身又回到包厢,哇塞!I can’t believe my eyes! 车厢这边一片蔚蓝,像大海一样浩瀚,真大,真漂亮,真干净!这就是贝加尔湖吗?我丝毫没有心理准备,应该就是了,贝加尔湖,梦幻般的出场!I want stay here all my life!Как море!Like the sea ……我的语言系统完全混乱了,我完全找不到词来形容贝加尔湖,那是一种让嘴巴无能为力,让眼睛不知所措的感觉。这分明就是海!它有翻滚的波涛,拍打在岸边还激起雪白的浪花,那布满细沙的岸边不正是海滩吗?可它确实是湖泊,世界上最深、最富有的内陆湖,在地图上你可以看见它被陆地环保,轮廓清晰可见。贝加尔,这大概是海洋之母远嫁人间的一个女儿,她干净美丽得让人窒息,我真想跳下火车去触摸她,去感受她的湖水,她的波涛,她的一切,却又不忍心碰触,担心这样会惊到她,破坏她那原生态的美丽。
136湖岸边,生长着挺拔的白桦树,白桦林间散落着一座座俄式木屋,木屋旁时而走过几个俄罗斯大叔。比利时人猜那是俄罗斯人的度假别墅,在这里,任何一间破木板房都是别墅!贝加尔湖,真的是人间天堂,望不尽的山林,望不尽的湖水,湖水藏在山桦林后面,白桦林却怎么也挡不住贝加尔湖的面庞。上帝啊!多么神奇!多么伟大!
137我拿着相机尽情地拍摄着,远处忽然浮现出高低起伏的青白色,Snow mountain!我大叫了一声,比利时朋友赶紧凑过来。哇呜!这里居然看见了雪山!不可思议!这时我生平第一次见到雪山,居然在贝加尔,我居然在同一天见到了贝加尔湖和雪山!2007年10月5日!我弄不清楚了,雪山、白桦林、蔚蓝的湖水、浪花、天空、飞鸟、秋天、木屋、小河、山泉、铁路桥、俄罗斯大叔……噢,我眼花缭乱,铁路两侧,一切尽收眼底,却又怎么都看不过来,美丽是需要秩序的,可是我弄不清这么多的美丽究竟是如何组合起来的,这么多的美丽,它们之间到底是什么关系,我完全不能理解,浑然天成。我能确定的是,所有这些美丽都有一个共同的名义——贝加尔湖。能亲眼目睹这壮丽的景象,真是莫大的幸福!
138车停了,我得去看看……原来是一个叫Байкальск(贝加尔斯克)的小站,只停了半分钟,我还没来得及照相……远处的山,一层秋黄,一层墨绿,又一层枫红,整片山仿佛色带,墨绿中点缀着金黄,金黄中又泛起墨绿,而枫红镶嵌其中,啊,真是迷人,天生的油画,无需任何人工雕琢;更远处的山,灰灰的,白白的,灰的是树,白的是雪,也许是去年的积雪,也许是今年的新雪。山脚下,白桦林中,贝加尔湖畔,木屋点点,其中有一个小村庄就叫贝加尔斯克,多么幸福的村庄,多么幸运的村民。当年,海洋之母为贝加尔准备了丰厚的嫁妆出嫁远方,让这个女儿拥有336条注入河,占全世界总储量近1/5的淡水,还有极为丰富的煤炭、金属铝、森林资源,让这个海拔456m的高山少女闻名世界。噢!依傍着贝加尔湖,贝加尔斯克的村民一定生活得很富足。
139火车沿着贝加尔湖走了很久,我也忙个不停,一会儿从包厢跑到走廊,看铁路那边的白桦林和村庄,一会儿又从走廊跑回包厢,看铁路这边的蔚蓝湖泊。起初我还拍些照片,但很快就觉得不过瘾,全部改成录制短片了,可相机记忆卡的空间实在很小,两三个短片下来记忆卡就满了,这样我又得把视频倒到笔记本里面。恰好这个时候,我的相机和笔记本都快没电了,然后我又翻找充电器、转换插头,给相机充电十几分钟(列车上有低压电源,电流不稳定),又开始录短片……我想,我的亲朋师友们不会有太多机会亲眼目睹这些景象,我应该把视频带回去给他们看。
140外面似乎飘起了雪,我还不太确定,乘务员招呼我“小伙子,下雪了,赶快拍吧”。几天下来,乘务员们早已习惯了我拿着相加跑来跑去,拍来拍去。真的是下雪了!雪花纷纷扬扬,天空朦朦胧胧,只能看见近处的村庄,稍远一点的房屋在雪雾中若隐若现,真的像庄园,仿佛雪雾里隐藏着一个更大的城堡。而贝加尔湖边,也早已白茫茫一片,分不清哪里是天空,哪里是湖面,只是地平线上隐约一条粗线,线下的颜色多一点青蓝,应该是湖,线上的颜色多一些灰白,大概是天。雪越来越大,水天逐渐融为一体,贝加尔湖成为想象。
141看来列车又要经过一个站,地面的铁轨增加至四五条,天空的电线也便变成了网,路边七八个橘黄色的铁路工人站成一排,看着疾驰而过的国际列车。铁路线上停着暗红色的货运列车,有集装箱、汽油灌、起重机等等,又看见了绿色的客运列车,里面空荡荡的。地面上开始出现两三层的楼房,还横七竖八地停着很多轿车,这大概是个中转站,而贝加尔湖早已躲到车站后面。列车在这站未停,小站过后,水天一色的贝加尔湖又来到眼前。
142我的心逐渐平静下来,不再忙乱,我回到桌旁拿起笔和日记本,望着贝加尔湖开始临摹我的心情,贝加尔湖也逐渐化作一壶绿茶,让我慢慢品味……列车在贝加尔湖畔整整走了四、五个钟头,在地图上,这段路程大概相当于贝加尔湖周长的1/7。莫斯科时间上午8点多,列车经过了斯柳迪扬卡(Слюдянка),噢,美丽的贝加尔湖,Time to say goodbye,下次再见吧。下一次,我将环绕着你走上几天几夜,给你拍一套漂亮的写真集,你的夕阳,你的日升,你的暴雨,你的海浪,你的蔚蓝,你的所有美丽……再见!贝加尔……
143前方66公里处,伊尔库茨克(Иркутск)还在等待。
144</p>
145 </div>
146 <div class="box w-30 h-50 box-b-r title-top">
147 <h3>(七)YAHZEE<span>Published May 3, 2012</span></h3>
148 <p>哦,离开贝加尔湖了……
149当我为贝加尔湖兴奋不已的时候,比利时朋友却比较平静,后来他甚至睡了一会儿,只是我大喊“Snow mountain”的时候,他赶紧起来趴窗看,然后照了几张相,又去听他的mp3。列车临近伊尔库茨克的时候,比利时朋友邀请我跟他玩游戏,游戏的名字叫YAHZEE。这个游戏非常有趣,很适合长途旅行中消遣时光,我想把这个游戏带回中国跟朋友们玩,所以这里详述游戏规则,但在火车上,无论如何我都无法把游戏规则清楚地讲给隔壁的中国人听。游戏需要5个骰子,每个玩家每回有3次(3次为1回)掷骰机会,每次可以5骰全掷,也可以根据上次的结果选择其中几个骰子掷出,以求更满意的数字组合。3次过后,根据该回最终得到的数字组合计分,但计分的形式有很多种(见下表中的“解释”),玩家可以选择计分的形式,填入相应的计分表格中,每轮必须要填写表格,如因分数较低不想填写,可以划去概率较低的栏目(例如YAHZEE、BS等),14回过后,一局游戏结束,最后总积分多的玩家胜出。
150</p>
151 </div>
152 <div class="box w-70 h-50 title-top box-img-left">
153 <div class="img-cont img-6"></div>
154 <h3>(八)马克西姆<span>Published May 3, 2012</span></h3>
155 <p>YAHZEE这个游戏,是比利时人上车第一天教我玩的,起初我只能连续玩3局,因为我还不太熟悉规则,3局下来之后我的大脑已经转不动了,很需要休息。但每天都跟他玩一会儿,很快就轻车熟路了。玩过游戏,我跟这个比利时人已经很熟了,尽管我的英语不太好,说起话来磕磕绊绊,但是他仍然能理解我说的意思,他说起话来总是附带很多很夸张的动作,有时甚至尚未开口,动作已经结束,而我已经理解他的意思。他的笑声也很多,早晨起来一句“morning”,然后“呵呵呵”一声笑,笑得有些傻,但让我觉得很亲近,从这个“呵呵呵”开始,一整天笑声不断。我们这节火车厢,只有3个包厢里有旅客,隔壁是一男一女,再隔壁是个荷兰人,其他4、5个包厢都由乘务员使用,其中几个包厢被乘务员装满了中国食品,而所有这些包厢里面,就我们这个3号包厢笑声最多,通常是比利时人笑声在先,我的笑声在后。
156比利时人给我看他的各种签证,我才知道他叫马克西姆,他的护照上有好多签证,中国的、韩国的、蒙古的、澳大利亚的、新西兰的、俄罗斯的、日本的,还有好多看不懂的。他向我展示比利时护照的防伪技术,确实很棒,护照底页内涵一块电子芯片,马克西姆告诉我他的护照合人民币1000多,我告诉他我的护照只有200人民币,他很喜欢中国的签证,觉得长城背景很漂亮。马克西姆说,他已经在外面旅游两年多了,现在他没钱了,要回比利时工作了,还要参加他最好朋友的婚礼,会有一个很大的party,会有很多啤酒。常年在外,他对很多语言都有所了解,还给我展示了各种语言中数字的读法,但他不懂俄语,我就教他俄语的日常用语。他说了西班牙文、法文的绕口令给我听,我把中文的绕口令“四是四,十是十,十四是十四,四十是四十”说给他听,他听了很兴奋,跟我学了很多次,每次都对中文里面的四个声调叫苦不堪,他用相机录下我说中文绕口令的情景,要带回比利时给朋友们听。他还说了英文绕口令“any noise annoy an oyster, but a noisy noise annoy an oyster more”,我也跟着学了很多遍。离京前,师兄买了好多水果给我,我把这些水果分给马克西姆一些,而他把饼干、斯里兰卡红茶分给我,我们交换着食物,相处得很愉快。
157每到大站,马克西姆都想下去买点东西,在蒙古国想买Mongolian milk,结果买了面包和香肠。列车一进入俄罗斯,他就嚷着要买伏特加尝尝,但各车站只收卢布,所以他在列车上到处兑换卢布。在新西伯利亚(Новосибирск.莫斯科时间10月6日16:00左右),马克西姆终于买了一大瓶俄罗斯啤酒(биво),我们举杯畅饮,那一晚我们都喝醉了,所以说了更多话。我们聊起比利时的巧克力和奶酪,马克希姆很想念家乡的这些食品。他说起两年前在公司的经历,有一个bad boss避开法律解除了他和一些朋友的劳动合同,他很生气,然后就决定旅游。我们说起美国,他非常鄙夷,他问我信仰宗教吗,并愤慨地拿出美元,指责在钞票上印刷“in god we trust”太过分。我说我不信仰宗教,但我信nature,尤其我在外面旅游时,我说“maybe, every traveler must trust in nature”,他非常赞同,并举例说一只小船在大海上,大海随时可以杀了你,这就是大自然的力量。马克希姆喜欢中国、俄罗斯、欧洲,他最常用的是词是crazy,中国的人口crazy,俄罗斯的疆域crazy,埃及的金字塔crazy,他不喜欢美国,认为那是capitalism, just money。批评了美国对伊拉克的战争,并希望中国强大起来与之抗衡,关于社会主义,他认为苏联、中国、古巴有一个好的开端和想法,但后面的发展方向错了,出现了集权,我们都认为互联网会推动社会更加民主,因为人们拥有更多的信息来源,来辨别信息的真伪。马克希姆还批评了电视,认为人们总是坐在电视机前,只会被动地接受电视里的内容,而电视节目总是由政府控制的,所以他希望人们离开电视,出来旅游“眼见为实”。他还讲到2008年奥运会,认为那会是一个巨大的盛会,很多人会来到中国亲眼看到中国所发生的变化。我告诉他,奥运会也带来了中国房价的大幅上涨,我很担心之后的经济危机,但马克希姆认为中国经济增长会放慢速度,逐渐趋于平稳,他用英语和手势表达了这个意思。
158关于电影,我们谈了很多。他说他离开朋友去旅行时,把300多张电影送给了朋友,他的朋友非常happy。我们谈到电影《伯恩的身份》、《天使艾米丽》、《泰坦尼克》、《骇客帝国》、《指环王》、《美丽人生》……他还模仿了《美丽人生》里面的高个子男主角。我们都喜欢南斯拉夫电影《地下》,他告诉我《地下》的导演本身就是音乐制作人,他直叹服电影中的音乐crazy,我也有同感。他提到阿莫多瓦的《关于我妈妈的一切》、《不良教育》,不过我没有看过这两部片子,但我看过阿莫多瓦的《Talk to her》,可马克希姆没有看过。我们还说起南美电影《摩托日记》,于是说起切•格瓦拉,我告诉他几年前切•格瓦拉的传记在中国也很流行。不过马克希姆对俄罗斯电影、中国电影和伊朗电影了解不多,我告诉他前苏联导演梁赞诺夫的电影《办公室的故事》很有趣,中国电影他仅仅知道《少林寺》。我们还共同缅怀了逝去的伯格曼和安东尼奥尼,我说台湾的大导演杨德昌也是刚刚去世。他不喜欢美国商业电影,但也承认美国电影中有些精品……
159最后我有些醉了,马克西姆取笑我,但他也晕菜了,然后他连续睡了20个小时,而我却失眠了。4个小时候后我醒来,在卧席上我辗转反侧,回想着离开北京前的情形,想起爸爸妈妈,想起琳岚,想起妹妹,想起老师、同学和朋友……马克西姆也是个很好的朋友,我们之间似乎有很多相似之处,但他有西方人的爽朗,而我是内敛的东方人,马克西姆说“You can be open-minded”,他说得对,我需要“open-mind”,在莫斯科我更需要。
160</p>
161 </div>
162 </div>
163
164 <div class="f-page">
165 <div class="f-title">
166
167 <h2>从北京到莫斯科</h2>
168
169 </div>
170 <div class="box w-30 h-60 box-b-r title-top">
171 <h3>(九)城市<span>Published May 3, 2012</span></h3>
172 <p>马克西姆安静的时候,我经常翻看地图,查找我们正在经过的城市,熟悉俄罗斯的基本国情。
173俄罗斯幅员辽阔,东西跨度极大,如果全国都使用莫斯科时间,产生的时间差将会很大。莫斯科一般早晨8、9点钟亮天,人们通常到凌晨1、2点钟才睡觉,而贝加尔湖畔凌晨3点多太阳已经照屁股,更东边的太平洋沿岸海港城市海参崴,这里的日出时间肯定比贝加尔湖还要早。乘坐火车横穿西伯利亚可以真切地感受到这种时间变化。据说远东地区有自己的时间,如果这样,与莫斯科交流信息时不知会产生多少麻烦。
174俄罗斯的地势大体东高西低,最西边是东欧平原,向东依次是乌兰尔山、西西伯利亚平原、中西伯利亚高原和东西伯利亚山地。我们熟知的蒙古高原向北可以逐渐过渡到中西伯利亚高原,中国东北的大小兴安岭与俄罗斯的东西伯利亚山地也是一脉相承的。东高西低的地势造就了俄罗斯全国气温大体东低西高的特点,所以贝加尔湖正在下雪,西伯利亚这个时候也出现了零下2度的气温,铁路沿线经常看到积雪,但随着列车逐渐西行,积雪不再有,翻过乌拉尔山,东欧平原秋意盎然。
175K3国际列车实际上沿着俄罗斯的南部边缘行驶,而西西伯利亚平原和中西伯利亚高原的南部边缘属多山地带,植被以针叶林和白桦树为主,所以铁路沿线的白桦林和针叶林延绵不断,几乎未间断过,列车从森林深处驶来,进入城市,离开城市又迅速钻进广袤的森林。一路上,我除了赞叹俄罗斯壮美的自然风光,对俄罗斯丰富的自然资源也羡慕不已。也许是我的错觉,我感觉每隔几分钟、十几分钟都会有俄罗斯的货运列车疾驰而过,列车上装满石油、汽油、煤炭、木材、机械……可见这条铁路的繁忙,货运和客运调度之紧张。事实上,俄罗斯最发达的铁路网在乌拉尔山以西的欧洲部分,广袤的西伯利亚-远东地区只有西伯利亚大铁路和贝(贝加尔湖)阿(阿穆尔河,即黑龙江)铁路。这两条铁路在西伯利亚-远东地区的南部边缘构成一条狭长的运输带,而辽阔的北方几乎再没有什么铁路了,那里主要依靠公路运输、空运和短期的航运(俄罗斯北方河流结冰期较长),而这些运输方式都承担不了大宗的自然资源运输任务,所以西伯利亚-远东地区的自然资源会有相当一部分汇集到贝阿铁路和西伯利亚大铁路附近,再从这里输向东欧平原、中国、太平洋沿岸港口。
176俄罗斯共有88个行政单位,包括各种共和国、边疆区、州、自治州、直辖市、民族自治区,众多行政单位在地图上看起来十分凌乱。但有一点很明显,东欧平原、西伯利亚-远东地区南部的行政区划最为密集,每个行政区的面积也比较小,这实在是因为这些地区人口稠密;而气候寒冷、人口稀少的极地地区,那里的行政单位十分辽阔。行政区划永远都是一种管理人口的手段。国际列车经过的南部地区、东欧平原正是俄罗斯城市化最高的地区,所以铁路沿线的大城市大部分是俄罗斯的能源基地、工业基地、地区经济中心:
177伊尔库茨克(Иркутск,莫斯科时间10月5日11:00左右经过),位于伊尔库特河和安哥拉河交汇处,距贝加尔湖66公里,而贝加尔湖的淡水储量占全俄地表淡水总储量4/5;该市生产的采金船和金刚石开采设备直接供远东地区使用,而远东地区是俄罗斯最大的黄金储备区和金刚石生产区。
178克拉斯诺雅尔斯克(Красноярск,莫斯科时间10月6日凌晨4:00点左右经过),位于叶尼塞河畔,东西伯利亚地区最大的城市,而东西伯利亚地区的木材储量占全俄第一位,且多为优质木材。
179新西伯利亚(Новосибирск,莫斯科时间10月6日16:00左右经过),位于鄂毕河畔,是整个西伯利亚地区最大的城市,西西伯利亚地区的经济中心,而西西伯利亚地区的石油储量占俄罗斯60%以上,天然气储量近90%,俄罗斯最大的煤田库兹巴斯也在该区。
180秋明(Тюмень,莫斯科时间10月7日上午7:00左右经过),位于图拉河畔,属西西伯利亚经济区,附近地区的石油、天然气储量是美国阿拉斯加、德克萨斯、加利福尼亚三大油田的总和。该油田的开发,使俄罗斯赶超美国,成为世界上最大的石油生产国和出口国。
181叶卡捷林堡,现称斯维尔德洛夫斯克(Свердловск,莫斯科时间10月7日上午12:00左右经过),位于乌拉尔山区伊谢季河畔,乌拉尔经济区最大的城市。该区钢铁产量占俄罗斯2/3,原铜产量占俄罗斯90%,是俄罗斯第一大冶金基地。该区一半面积为针叶林覆盖。
182……
183当列车经过这些城市的时候,我总会首先想到这又是一个能源聚集地和工业中心,然后马上就可以看高耸的烟囱、巨大的吊车、粗壮的输油道,在车站又总会看到长长的货运列车,一派繁忙景象。我不禁为这个国家丰富的自然资源、扎实的重工业水平连连感叹,这样的国家,怎能不会重新崛起?又连连咂舌,如此幅员辽阔,俄罗斯还在向北极扩张……我还常常想,坐拥资源,俄罗斯的经济发展模式岂不应该很简单,找个油田、煤田、气田,或者林区,坐下来开采、深加工不就行了?能源依托型的发展模式在乌拉尔、西伯利亚-远东地区到处都可以复制。哪里像中国,不知道有多少城市在为发展模式发愁,谋求产业转型,寄希望于旅游业、服务业等等。中国所承受的各种压力决定了中国要在发展模式上“精耕细作”,而几十年内俄罗斯不需要这样,恐怕这既是它的优势,也是它的劣势。
184仅从铁路两侧看俄罗斯的城市是看不出什么明堂的,待到达莫斯科后,我会用更多的时间仔细观察。不过俄罗斯的很多城市都位于河畔,比如伊尔库茨克、克拉斯诺雅尔斯克、新西伯利亚、秋明、叶卡捷林堡城内都有河流穿过,此外,车里雅宾斯克坐落在米阿斯河畔,伏尔加格勒坐落在伏尔加河畔,奥姆斯克坐落在鄂木河畔,莫斯科城内有莫斯科河,圣彼得堡更是“北方威尼斯”……城市有河,就增添了许多灵气,人们的生活也会多几分浪漫和宁静。火车经过新西伯利亚的时候,我拍了长达20分钟的短片,正值暮色降临,天空布满深蓝色的云,只有太阳落山的地方泛出霞红,仿佛是上帝的眼睛窥视苍生,突然经过铁路桥,桥下流淌着一条明亮的河,倒映着天空的深蓝与绯红,岸边安静地泊着轮船,各种吊车高高耸起,远处似乎还有一座大桥,桥上灯火相连,俨然一串白色珍珠……那种感觉,真是静谧、安详、通透。然后我想起北京,未名湖只是一摊小水,墙外的护城河被水泥包裹着,经常看不见蓝天,苍穹是一片混沌,生活也浑浑噩噩,并貌似繁忙,哎……
185还是应该走出来。
186</p>
187 </div>
188 <div class="box w-70 h-60 box-img-left title-top">
189 <div class="img-cont img-7"></div>
190 <h3>(十)食物<span>Published May 3, 2012</span></h3>
191 <p>大概,列车进入蒙古后就会换上蒙古国的餐车,进入俄罗斯后就会换上俄方的餐车,所以从第二天开始列车上就不再提供免费食物。我自己带了很多食物,约10包方便面、方便馄炖和方便米饭各一包、两大袋切片面包、1大盒蛋黄派、两包饼干、6袋儿牛奶……lan给我买了两大盒德芙巧克力,师兄和好友又买了好多苹果、桔子、香蕉,还有一个大柚子。 列车上我和马克西姆交换着食物,吃得不亦乐乎。马克西姆吃东西静悄悄,我正在低头看书之际,他已经把一碗泡面报销了,而我毫未察觉,出于礼貌,我也静悄悄地吃东西,不再有吃面时的“呲溜呲溜”声音。
192我想,我还是会比较适应西餐的吃法儿,包括俄餐。因为在彼得堡餐厅吃面包和奶酪,我觉得很香,而lan觉得不好吃;在列车上,我吃面包夹香肠,我也觉得津津有味,马克西姆也这么吃。如果我能很快适应这种简单的食物,那么我在莫斯科的一日三餐,至少会有一餐很便宜。我觉得,要适应西餐,应该学着适应食物的原味儿,西餐中很多蔬菜是生吃的,肉类的烹调方法也比较简单,调料种类不多,因此这些食物保留原味的可能性更大。与之相比,中国食物的烹调手段过于丰富,煎、炒、炸、炝、煮、蒸、拌、焖等不胜枚举,还大量使用酱油、味精等人工调料,这固然会增加我们的食物多样性,但也使大部分食物丧失了原味,并且我们还经常把多种菜放在一起混合加工以充实味道,这更使我们难以分辨单种食物的原味。在城市里,人们现在不吃麻、辣就觉得不香、没味儿,这多少说明了城市人味觉系统的逐渐麻木。但凡美食家、大厨师,都要从分辨食物的原味开始,然后才会对混合味道进行评判。
193我觉得,我可能有逐渐喜爱原味食物的趋势。在学校食堂里,我最爱吃的饭菜组合是:米饭,醋熘白菜(或简单的煮白菜)和牛肉片;我最喜欢的牛奶是纯牛奶,咖啡也比较喜欢黑咖啡,各种饮料逐渐不喜欢了,转而喜欢白开水和绿茶。我相信,我的餐饮会逐渐趋于简单,大概我的爱好和性情在逐渐向这个方向变化。
194面包、酸黄瓜、牛肉、香肠、牛奶、鱼罐头、土豆、菜豆、奶酪……我对简单的俄餐生活充满了期待。
195</p>
196 </div>
197 <div class="box w-40 h-40 box-img-left box-b-r title-top">
198 <div class="img-cont img-8"></div>
199 <h3>(十一)期待<span>Published May 3, 2012</span></h3>
200 <p>莫斯科时间10月8日上午,还有几个小时列车就要抵达莫斯科了,六天五夜的旅程即将结束。火车厢内,人心惶惶,隔壁的中国人不断地询问时间,不断埋怨“时间过得真慢”,这些天来,他总来我们包厢“攫取”欢乐,对马克西姆充满好奇,经常要我帮他问马克西姆一些问题,比如“一年挣多少钱”,“怎么还不结婚”。起初马克西姆还经常邀请他一起玩YAHZEE游戏,到了后来,马克西姆朝我挤眉弄眼,要我把门关上,我们两个人悄悄玩YAHZEE。
201我和马克西姆也开始收拾行李。马克西姆把剩下的方便面都给了我,还给我了一些药片,他告诉我在野外没有干净水源时,只需舀起河水,放入这些药片就可以杀死水里的病菌。马克西姆给我推荐了旅行网站www.wikipedia.org,在这个网站上可以找到很多城市的免费旅馆、便宜餐厅以及其他方便旅行的信息,他就是利用这个网站开始全球旅行的,我们也交换了email,他邀请我去比利时玩,我答应他几年后肯定会在比利时找到他。 (wikipedia不就是维基百科么。。。怎么会有免费旅馆之类的信息。。。想不通——Jinwei注)
202我整理了我的东西,证件、笔记本、美元都在,箱子里的东西也都不少,但我的经验告诉我,下车的时候有可能会发生些事,但愿什么都不要发生,想到这里,我不由得增加了警觉。但愿有同学在车站接我,但如果同学不能准时到车站呢?幸好昨晚我在乘务员那里换了100卢布,如果在车站我见不到同学,那我就自己去找метро(地铁),然后到университет(大学)站下车,据说下车就是莫斯科大学。
203和马克西姆又说了些话,他说他们全家都是旅游爱好者,他有两个sister,祖母已经80多岁了,结果我听成他母亲80多岁,我们哈哈大笑,他父亲和他一样都是漫画迷。东西收拾完毕,我开始望着窗外的俄罗斯村庄,一座座小木屋从眼前掠过,屋顶很高很大,多是三角形,或者是匀称的五边形,想必屋顶就是阁楼,不知是储藏食物的,还是住着美丽的俄罗斯小女孩。几乎每家农户都有一个菜园,用整齐的木板围成栅栏,菜园里又会有一两个简陋矮屋,大概是仓房。人们并没有把居住区的桦树、松树都砍掉,“夷为平地”似乎不是俄罗斯居民的生活习惯,木屋总是散布在林间,远远望去,村庄常常藏在树林后面,挂满金黄的白桦林又总是让村庄露出一些马脚。不过我有些好奇,这些木屋该怎样取暖呢?又该怎样防火?我想起,初中学俄语的时候,课文里最常出现的描写居住环境的单词就是село(村庄),река(河),лес(森林),береза(白桦树),город(城市),деревня(农村)……正是这些词以及对这些词的想象形成了我对俄罗斯的想象,并逐渐沉淀、凝结为我的俄罗斯情结,这种情结不但没有因为六天来的旅行而消散,反而变得更深更切,我的想象也更加热烈,也许,这就是期待吧。
204我开始看见很多房屋和更茂密的白桦林……开始看见停在铁路上的货运列车和客运列车……开始看见修剪整齐的草坪……开始看见楼房……开始看见墙上涂抹的镰刀斧头……开始看见立交桥和路边广告牌……我感觉到车速变慢了……
205马克西姆拿出比利时国旗,手舞足蹈地唱起被他称为“shit”的比利时国歌。
206列车缓缓停下了,乘务员高声说“莫斯科到了”……莫斯科到了,我说不清自己的心情。
207马克西姆帮我提一个箱子下车,一个刚上车的中国胖子对乘务员说:“这是3000多卢布,在国内肯定能换1000多人民币”,乘务员说:“有什么需求再给我打电话”,然后胖子搬走了很多食品,那些食品就放在没有旅客的包厢里。
208莫斯科好像刚下过雨,站台上湿漉漉的,我跟马克西姆握手告别,see you in Belgium!然后马克西姆背起双肩包,消失在行色匆匆的人群中。
209我在站台上没有看到同学,有些失望,正打算拖着两个箱子自己走,忽见前方一个瘦高男子迎面走来,撑着伞,头略低,手里拿着一张硬纸,上面写着汉字“莫大”,我急忙迎上去。“Здравствуйте(你好)”!“你是北京来的”?“Да(是的)”!“是研究生吗”?“yeah,аспирант(研究生)”,“一路辛苦哩”……我的语言系统又乱了,而这个俄罗斯人的汉语讲得真地道!
210“我们坐地铁去莫大吧”!
211“太好了”!
212出火车站无需任何检查,这出乎我的意料。俄罗斯大个子告诉我,“前面不远处的高大建筑就是地铁”,我知道这肯定是комсомольская(共青团)站。
213我跟着大个子径直向传说中的莫斯科地铁走去。
214[email protected]
215莫斯科时间10月21日 (完)
216</p>
217 </div>
218 <div class="box w-30 h-40 box-b-r title-top">
219 <h3>(十二)Ich Lieb Dich Immer Noch So Sehr <span>Published May 3, 2012</span></h3>
220 <p>我仍然如此爱你
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别人代替了我你会很难过吗</p>
261 </div>
262 <div class="box w-30 h-40 title-top">
263 <h3>L&R <span>Published May 3, 2012</span></h3>
264 <p>”I can’t see anything”</p>
265 <p> “No,you can.Just try” </p>
266 <p>“I ‘m so scared”</p>
267 <p> “I ‘m here” </p>
268 <p>“What if……”</p>
269 <p> “I won’t leave”</p>
270 <p> “Really?” </p>
271 <p>“I just said it”</p>
272 <p> “But……” </p>
273 <p>“But what?”</p>
274 <p> “Thank you.”</p>
275 </div>
276 </div>
277
278 <div class="f-page f-cover-back">
279 <div id="codrops-ad-wrapper">
280
281 </div>
282 </div>
283 </div>
284
285 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
286 <script type="text/javascript">
287
288 var $container = $( '#flip' ),
289 $pages = $container.children().hide();
290
291 Modernizr.load({
292 test: Modernizr.csstransforms3d && Modernizr.csstransitions,
293 yep : ['js/jquery.tmpl.min.js','js/jquery.history.js','js/core.string.js','js/jquery.touchSwipe-1.2.5.js','js/jquery.flips.js'],
294 nope: 'css/fallback.css',
295 callback : function( url, result, key ) {
296
297 if( url === 'css/fallback.css' ) {
298 $pages.show();
299 }
300 else if( url === 'js/jquery.flips.js' ) {
301 $container.flips();
302 }
303
304 }
305 });
306
307 </script>
308
309<!-- jinwei.me Baidu tongji analytics -->
310<script type="text/javascript">
311var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
312document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
313</script>
314
315</body>
316</html> \ No newline at end of file
diff --git a/Blocks/Flipboard/js/core.string.js b/Blocks/Flipboard/js/core.string.js
new file mode 100644
index 0000000..312a42e
--- /dev/null
+++ b/Blocks/Flipboard/js/core.string.js
@@ -0,0 +1,240 @@
1/**
2 * @depends nothing
3 * @name core.string
4 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
5 */
6
7/**
8 * Return a new string with any spaces trimmed the left and right of the string
9 * @version 1.0.0
10 * @date June 30, 2010
11 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
12 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
13 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
14 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
15 */
16String.prototype.trim = String.prototype.trim || function() {
17 // Trim off any whitespace from the front and back
18 return this.replace(/^\s+|\s+$/g, '');
19};
20
21/**
22 * Return a new string with the value stripped from the left and right of the string
23 * @version 1.1.1
24 * @date July 22, 2010
25 * @since 1.0.0, June 30, 2010
26 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
27 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
28 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
29 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
30 */
31String.prototype.strip = String.prototype.strip || function(value,regex){
32 // Strip a value from left and right, with optional regex support (defaults to false)
33 value = String(value);
34 var str = this;
35 if ( value.length ) {
36 if ( !(regex||false) ) {
37 // We must escape value as we do not want regex support
38 value = value.replace(/([\[\]\(\)\^\$\.\?\|\/\\])/g, '\\$1');
39 }
40 str = str.replace(eval('/^'+value+'+|'+value+'+$/g'), '');
41 }
42 return String(str);
43}
44
45/**
46 * Return a new string with the value stripped from the left of the string
47 * @version 1.1.1
48 * @date July 22, 2010
49 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
50 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
51 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
52 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
53 */
54String.prototype.stripLeft = String.prototype.stripLeft || function(value,regex){
55 // Strip a value from the left, with optional regex support (defaults to false)
56 value = String(value);
57 var str = this;
58 if ( value.length ) {
59 if ( !(regex||false) ) {
60 // We must escape value as we do not want regex support
61 value = value.replace(/([\[\]\(\)\^\$\.\?\|\/\\])/g, '\\$1');
62 }
63 str = str.replace(eval('/^'+value+'+/g'), '');
64 }
65 return String(str);
66}
67
68/**
69 * Return a new string with the value stripped from the right of the string
70 * @version 1.1.1
71 * @date July 22, 2010
72 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
73 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
74 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
75 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
76 */
77String.prototype.stripRight = String.prototype.stripRight || function(value,regex){
78 // Strip a value from the right, with optional regex support (defaults to false)
79 value = String(value);
80 var str = this;
81 if ( value.length ) {
82 if ( !(regex||false) ) {
83 // We must escape value as we do not want regex support
84 value = value.replace(/([\[\]\(\)\^\$\.\?\|\/\\])/g, '\\$1');
85 }
86 str = str.replace(eval('/'+value+'+$/g'), '');
87 }
88 return String(str);
89}
90
91/**
92 * Return a int of the string
93 * @version 1.0.0
94 * @date June 30, 2010
95 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
96 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
97 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
98 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
99 */
100String.prototype.toInt = String.prototype.toInt || function(){
101 // Convert to a Integer
102 return parseInt(this,10);
103};
104
105/**
106 * Return a new string of the old string wrapped with the start and end values
107 * @version 1.0.0
108 * @date June 30, 2010
109 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
110 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
111 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
112 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
113 */
114String.prototype.wrap = String.prototype.wrap || function(start,end){
115 // Wrap the string
116 return start+this+end;
117};
118
119/**
120 * Return a new string of a selection of the old string wrapped with the start and end values
121 * @version 1.0.0
122 * @date June 30, 2010
123 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
124 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
125 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
126 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
127 */
128String.prototype.wrapSelection = String.prototype.wrapSelection || function(start,end,a,z){
129 // Wrap the selection
130 if ( typeof a === 'undefined' || a === null ) a = this.length;
131 if ( typeof z === 'undefined' || z === null ) z = this.length;
132 return this.substring(0,a)+start+this.substring(a,z)+end+this.substring(z);
133};
134
135/**
136 * Return a new string of the slug of the old string
137 * @version 1.1.0
138 * @date July 16, 2010
139 * @since 1.0.0, June 30, 2010
140 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
141 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
142 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
143 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
144 */
145String.prototype.toSlug = String.prototype.toSlug || function(){
146 // Convert a string to a slug
147 return this.toLowerCase().replace(/[\s_]/g, '-').replace(/[^-a-z0-9]/g, '').replace(/--+/g, '-').replace(/^-+|-+$/g,'');
148}
149
150/**
151 * Return a new JSON object of the old string.
152 * Turns:
153 * file.js?a=1&amp;b.c=3.0&b.d=four&a_false_value=false&a_null_value=null
154 * Into:
155 * {"a":1,"b":{"c":3,"d":"four"},"a_false_value":false,"a_null_value":null}
156 * @version 1.1.0
157 * @date July 16, 2010
158 * @since 1.0.0, June 30, 2010
159 * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
160 * @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
161 * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
162 * @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
163 */
164String.prototype.queryStringToJSON = String.prototype.queryStringToJSON || function ( )
165{ // Turns a params string or url into an array of params
166 // Prepare
167 var params = String(this);
168 // Remove url if need be
169 params = params.substring(params.indexOf('?')+1);
170 // params = params.substring(params.indexOf('#')+1);
171 // Change + to %20, the %20 is fixed up later with the decode
172 params = params.replace(/\+/g, '%20');
173 // Do we have JSON string
174 if ( params.substring(0,1) === '{' && params.substring(params.length-1) === '}' )
175 { // We have a JSON string
176 return eval(decodeURIComponent(params));
177 }
178 // We have a params string
179 params = params.split(/\&(amp\;)?/);
180 var json = {};
181 // We have params
182 for ( var i = 0, n = params.length; i < n; ++i )
183 {
184 // Adjust
185 var param = params[i] || null;
186 if ( param === null ) { continue; }
187 param = param.split('=');
188 if ( param === null ) { continue; }
189 // ^ We now have "var=blah" into ["var","blah"]
190
191 // Get
192 var key = param[0] || null;
193 if ( key === null ) { continue; }
194 if ( typeof param[1] === 'undefined' ) { continue; }
195 var value = param[1];
196 // ^ We now have the parts
197
198 // Fix
199 key = decodeURIComponent(key);
200 value = decodeURIComponent(value);
201 try {
202 // value can be converted
203 value = eval(value);
204 } catch ( e ) {
205 // value is a normal string
206 }
207
208 // Set
209 // window.console.log({'key':key,'value':value}, split);
210 var keys = key.split('.');
211 if ( keys.length === 1 )
212 { // Simple
213 json[key] = value;
214 }
215 else
216 { // Advanced (Recreating an object)
217 var path = '',
218 cmd = '';
219 // Ensure Path Exists
220 $.each(keys,function(ii,key){
221 path += '["'+key.replace(/"/g,'\\"')+'"]';
222 jsonCLOSUREGLOBAL = json; // we have made this a global as closure compiler struggles with evals
223 cmd = 'if ( typeof jsonCLOSUREGLOBAL'+path+' === "undefined" ) jsonCLOSUREGLOBAL'+path+' = {}';
224 eval(cmd);
225 json = jsonCLOSUREGLOBAL;
226 delete jsonCLOSUREGLOBAL;
227 });
228 // Apply Value
229 jsonCLOSUREGLOBAL = json; // we have made this a global as closure compiler struggles with evals
230 valueCLOSUREGLOBAL = value; // we have made this a global as closure compiler struggles with evals
231 cmd = 'jsonCLOSUREGLOBAL'+path+' = valueCLOSUREGLOBAL';
232 eval(cmd);
233 json = jsonCLOSUREGLOBAL;
234 delete jsonCLOSUREGLOBAL;
235 delete valueCLOSUREGLOBAL;
236 }
237 // ^ We now have the parts added to your JSON object
238 }
239 return json;
240}; \ No newline at end of file
diff --git a/Blocks/Flipboard/js/jquery.flips.js b/Blocks/Flipboard/js/jquery.flips.js
new file mode 100644
index 0000000..5c25d87
--- /dev/null
+++ b/Blocks/Flipboard/js/jquery.flips.js
@@ -0,0 +1,965 @@
1/**
2 * jquery.flips.js
3 *
4 * Copyright 2011, Pedro Botelho / Codrops
5 * Free to use under the MIT license.
6 *
7 * Date: Fri May 4 2012
8 */
9
10/**
11 * Note: This is highly experimental and just a proof-of-concept!
12 * There are some few "hacks", probably some bugs, and some functionality
13 * is incomplete... definitely not ready for a production environment.
14 *
15 *
16 * Tested and working on:
17 * - Google Chrome 18.0.1025.168
18 * - Apple Safari 5.1.5
19 * - Apple Safari 5.1 Mobile
20 *
21 */
22
23(function( window, undefined ) {
24
25 $.Flips = function( options, element ) {
26
27 this.$el = $( element );
28 this._init( options );
29
30 };
31
32 $.Flips.defaults = {
33 flipspeed : 900,
34 fliptimingfunction : 'linear',
35 current : 0
36 };
37
38 $.Flips.prototype = {
39 _init : function( options ) {
40
41 this.options = $.extend( true, {}, $.Flips.defaults, options );
42 this.$pages = this.$el.children( 'div.f-page' );
43 this.pagesCount = this.$pages.length;
44 this.History = window.History;
45 this.currentPage = this.options.current;
46 this._validateOpts();
47 this._getWinSize();
48 this._getState();
49 this._layout();
50 this._initTouchSwipe();
51 this._loadEvents();
52 this._goto();
53
54 },
55 _validateOpts : function() {
56
57 if( this.currentPage < 0 || this.currentPage > this.pagesCount ) {
58
59 this.currentPage = 0;
60
61 }
62
63 },
64 _getWinSize : function() {
65
66 var $win = $( window );
67
68 this.windowProp = {
69 width : $win.width(),
70 height : $win.height()
71 };
72
73 },
74 _goto : function() {
75
76 var page = ( this.state === undefined ) ? this.currentPage : this.state;
77
78 if( !this._isNumber( page ) || page < 0 || page > this.flipPagesCount ) {
79
80 page = 0;
81
82 }
83
84 this.currentPage = page;
85
86 },
87 _getState : function() {
88
89 this.state = this.History.getState().url.queryStringToJSON().page;
90
91 },
92 _isNumber : function( n ) {
93
94 return parseFloat( n ) == parseInt( n ) && !isNaN( n ) && isFinite( n );
95
96 },
97 _adjustLayout : function( page ) {
98
99 var _self = this;
100
101 this.$flipPages.each( function( i ) {
102
103 var $page = $(this);
104
105 if( i === page - 1 ) {
106
107 $page.css({
108 '-webkit-transform' : 'rotateY( -180deg )',
109 '-moz-transform' : 'rotateY( -180deg )',
110 'z-index' : _self.flipPagesCount - 1 + i
111 });
112
113 }
114 else if( i < page ) {
115
116 $page.css({
117 '-webkit-transform' : 'rotateY( -181deg )', // todo: fix this (should be -180deg)
118 '-moz-transform' : 'rotateY( -181deg )', // todo: fix this (should be -180deg)
119 'z-index' : _self.flipPagesCount - 1 + i
120 });
121
122 }
123 else {
124
125 $page.css({
126 '-webkit-transform' : 'rotateY( 0deg )',
127 '-moz-transform' : 'rotateY( 0deg )',
128 'z-index' : _self.flipPagesCount - 1 - i
129 });
130
131 }
132
133 } );
134
135 },
136 _saveState : function() {
137
138 // adds a new state to the history object and triggers the statechange event on the window
139 var page = this.currentPage;
140
141 if( this.History.getState().url.queryStringToJSON().page !== page ) {
142
143 this.History.pushState( null, null, '?page=' + page );
144
145 }
146
147 },
148 _layout : function() {
149
150 this._setLayoutSize();
151
152 for( var i = 0; i <= this.pagesCount - 2; ++i ) {
153
154 var $page = this.$pages.eq( i ),
155 pageData = {
156 theClass : 'page',
157 theContentFront : $page.html(),
158 theContentBack : ( i !== this.pagesCount ) ? this.$pages.eq( i + 1 ).html() : '',
159 theStyle : 'z-index: ' + ( this.pagesCount - i ) + ';left: ' + ( this.windowProp.width / 2 ) + 'px;',
160 theContentStyleFront : 'width:' + this.windowProp.width + 'px;',
161 theContentStyleBack : 'width:' + this.windowProp.width + 'px;'
162 };
163
164 if( i === 0 ) {
165
166 pageData.theClass += ' cover';
167
168 }
169 else {
170
171 pageData.theContentStyleFront += 'left:-' + ( this.windowProp.width / 2 ) + 'px';
172
173 if( i === this.pagesCount - 2 ) {
174
175 pageData.theClass += ' cover-back';
176
177 }
178
179 }
180
181 $( '#pageTmpl' ).tmpl( pageData ).appendTo( this.$el );
182
183 }
184
185 this.$pages.remove();
186 this.$flipPages = this.$el.children( 'div.page' );
187 this.flipPagesCount = this.$flipPages.length;
188
189 this._adjustLayout( ( this.state === undefined ) ? this.currentPage : this.state );
190
191 },
192 _setLayoutSize : function() {
193
194 this.$el.css( {
195 width : this.windowProp.width,
196 height : this.windowProp.height
197 } );
198
199 },
200 _initTouchSwipe : function() {
201
202 var _self = this;
203
204 this.$el.swipe( {
205 threshold : 0,
206 swipeStatus : function( event, phase, start, end, direction, distance ) {
207
208 var startX = start.x,
209 endX = end.x,
210 sym, angle,
211 oob = false,
212 noflip = false;
213
214 // check the "page direction" to flip:
215 // if the page flips from the right to the left (right side page)
216 // or from the left to the right (left side page).
217 // check only if not animating
218 if( !_self._isAnimating() ) {
219
220 ( startX < _self.windowProp.width / 2 ) ? _self.flipSide = 'l2r' : _self.flipSide = 'r2l';
221
222 }
223
224 if( direction === 'up' || direction === 'down' ) {
225
226 if( _self.angle === undefined || _self.angle === 0 ) {
227
228 _self._removeOverlays();
229 return false;
230
231 }
232 else {
233
234 ( _self.angle < 90 ) ? direction = 'right' : direction = 'left';
235
236 }
237
238 };
239
240 _self.flipDirection = direction;
241
242 // on the first & last page neighbors we don't flip
243 if( _self.currentPage === 0 && _self.flipSide === 'l2r' || _self.currentPage === _self.flipPagesCount && _self.flipSide === 'r2l' ) {
244
245 return false;
246
247 }
248
249 // save ending point (symetric point):
250 // if we touch / start dragging on, say [x=10], then
251 // we need to drag until [window's width - 10] in order to flip the page 100%.
252 // if the symetric point is too close we are giving some margin:
253 // if we would start dragging right next to [window's width / 2] then
254 // the symmetric point would be very close to the starting point. A very short swipe
255 // would be enough to flip the page..
256 sym = _self.windowProp.width - startX;
257
258 var symMargin = 0.9 * ( _self.windowProp.width / 2 );
259 if( Math.abs( startX - sym ) < symMargin ) {
260
261 ( _self.flipSide === 'r2l' ) ? sym -= symMargin / 2 : sym += symMargin / 2;
262
263 }
264
265 // some special cases:
266 // Page is on the right side,
267 // and we drag/swipe to the same direction
268 // ending on a point > than the starting point
269 // -----------------------
270 // | | |
271 // | | |
272 // | sym | s |
273 // | | e |
274 // | | |
275 // -----------------------
276 if( endX > startX && _self.flipSide === 'r2l' ) {
277
278 angle = 0;
279 oob = true;
280 noflip = true;
281
282 }
283 // Page is on the right side,
284 // and we drag/swipe to the opposite direction
285 // ending on a point < than the symmetric point
286 // -----------------------
287 // | | |
288 // | | |
289 // | sym | s |
290 // | e | |
291 // | | |
292 // -----------------------
293 else if( endX < sym && _self.flipSide === 'r2l' ) {
294
295 angle = 180;
296 oob = true;
297
298 }
299 // Page is on the left side,
300 // and we drag/swipe to the opposite direction
301 // ending on a point > than the symmetric point
302 // -----------------------
303 // | | |
304 // | | |
305 // | s | sym |
306 // | | e |
307 // | | |
308 // -----------------------
309 else if( endX > sym && _self.flipSide === 'l2r' ) {
310
311 angle = 0;
312 oob = true;
313
314 }
315 // Page is on the left side,
316 // and we drag/swipe to the same direction
317 // ending on a point < than the starting point
318 // -----------------------
319 // | | |
320 // | | |
321 // | s | sym |
322 // | e | |
323 // | | |
324 // -----------------------
325 else if( endX < startX && _self.flipSide === 'l2r' ) {
326
327 angle = 180;
328 oob = true;
329 noflip = true;
330
331 }
332 // we drag/swipe to a point between
333 // the starting point and symetric point
334 // -----------------------
335 // | | |
336 // | s | sym |
337 // | sym | s |
338 // | e| |
339 // | | |
340 // -----------------------
341 else {
342
343 var s, e, val;
344
345 ( _self.flipSide === 'r2l' ) ?
346 ( s = startX, e = sym, val = startX - distance ) :
347 ( s = sym, e = startX , val = startX + distance );
348
349 angle = _self._calcAngle( val, s, e );
350
351 if( ( direction === 'left' && _self.flipSide === 'l2r' ) || ( direction === 'right' && _self.flipSide === 'r2l' ) ) {
352
353 noflip = true;
354
355 }
356
357 }
358
359 switch( phase ) {
360
361 case 'start' :
362
363 if( _self._isAnimating() ) {
364
365 // the user can still grab a page while one is flipping (in this case not being able to move)
366 // and once the page is flipped the move/touchmove events are triggered..
367 _self.start = true;
368 return false;
369
370 }
371 else {
372
373 _self.start = false;
374
375 }
376
377 // check which page is clicked/touched
378 _self._setFlippingPage();
379
380 // check which page comes before & after the one we are clicking
381 _self.$beforePage = _self.$flippingPage.prev();
382 _self.$afterPage = _self.$flippingPage.next();
383
384 break;
385
386 case 'move' :
387
388 if( distance > 0 ) {
389
390 if( _self._isAnimating() || _self.start ) {
391
392 return false;
393
394 }
395
396 // adds overlays: shows shadows while flipping
397 if( !_self.hasOverlays ) {
398
399 _self._addOverlays();
400
401 }
402
403 // save last angle
404 _self.angle = angle;
405 // we will update the rotation value of the page while we move it
406 _self._turnPage( angle , true );
407
408 }
409 break;
410
411 case 'end' :
412
413 if( distance > 0 ) {
414
415 if( _self._isAnimating() || _self.start ) return false;
416
417 _self.isAnimating = true;
418
419 // keep track if the page was actually flipped or not
420 // the data flip will be used later on the transitionend event
421 ( noflip ) ? _self.$flippingPage.data( 'flip', false ) : _self.$flippingPage.data( 'flip', true );
422
423 // if out of bounds we will "manually" flip the page,
424 // meaning there will be no transition set
425 if( oob ) {
426
427 if( !noflip ) {
428
429 // the page gets flipped (user dragged from the starting point until the symmetric point)
430 // update current page
431 _self._updatePage();
432
433 }
434
435 _self._onEndFlip( _self.$flippingPage );
436
437 }
438 else {
439
440 // save last angle
441 _self.angle = angle;
442 // calculate the speed to flip the page:
443 // the speed will depend on the current angle.
444 _self._calculateSpeed();
445
446 switch( direction ) {
447
448 case 'left' :
449
450 _self._turnPage( 180 );
451
452 if( _self.flipSide === 'r2l' ) {
453
454 _self._updatePage();
455
456 }
457
458 break;
459
460 case 'right' :
461
462 _self._turnPage( 0 );
463
464 if( _self.flipSide === 'l2r' ) {
465
466 _self._updatePage();
467
468 }
469
470 break;
471
472 };
473
474 }
475
476 }
477
478 break;
479
480 };
481
482 }
483
484 } );
485
486 },
487 _setFlippingPage : function() {
488
489 var _self = this;
490
491 ( this.flipSide === 'l2r' ) ?
492 this.$flippingPage = this.$flipPages.eq( this.currentPage - 1 ) :
493 this.$flippingPage = this.$flipPages.eq( this.currentPage );
494
495 this.$flippingPage.on( 'webkitTransitionEnd.flips transitionend.flips OTransitionEnd.flips', function( event ) {
496
497 if( $( event.target ).hasClass( 'page' ) ) {
498
499 _self._onEndFlip( $(this) );
500
501 }
502
503 });
504
505 },
506 _updatePage : function() {
507
508 if( this.flipSide === 'r2l' ) {
509
510 ++this.currentPage;
511
512 }
513 else if( this.flipSide === 'l2r' ) {
514
515 --this.currentPage;
516
517 }
518
519 },
520 _isAnimating : function() {
521
522 if( this.isAnimating ) {
523
524 return true;
525
526 }
527
528 return false;
529
530 },
531 _loadEvents : function() {
532
533 var _self = this;
534
535 $( window ).on( 'resize.flips', function( event ) {
536
537 _self._getWinSize();
538 _self._setLayoutSize();
539
540 var $contentFront = _self.$flipPages.children( 'div.front' ).find( 'div.content' ),
541 $contentBack = _self.$flipPages.children( 'div.back' ).find( 'div.content' )
542
543 _self.$flipPages.css( 'left', _self.windowProp.width / 2 );
544
545 $contentFront.filter( function( i ) {
546 return i > 0;
547 }).css( {
548 width : _self.windowProp.width,
549 left : -_self.windowProp.width / 2
550 } );
551 $contentFront.eq( 0 ).css( 'width', _self.windowProp.width );
552
553 $contentBack.css( 'width', _self.windowProp.width );
554
555 } );
556
557 $( window ).on( 'statechange.flips', function( event ) {
558
559 _self._getState();
560 _self._goto();
561 if( !_self.isAnimating ) {
562
563 _self._adjustLayout( _self.currentPage );
564
565 }
566
567 } );
568
569 this.$flipPages.find( '.box' ).on( 'click.flips', function( event ) {
570
571 var $box = $(this),
572 $boxClose = $( '<span class="box-close">close</span>' ),
573 transitionProp = {
574 speed : 450,
575 timingfunction : 'linear'
576 },
577 $overlay = $( '<div class="overlay">close</div>' ).css( {
578 'z-index' : 9998,
579 '-webkit-transition' : 'opacity ' + transitionProp.speed + 'ms ' + transitionProp.timingfunction,
580 '-moz-transition' : 'opacity ' + transitionProp.speed + 'ms ' + transitionProp.timingfunction
581 } ).prependTo( $( 'body' ) ),
582 prop = {
583 width : $box.outerWidth(true),
584 height : $box.outerHeight(true),
585 left : $box.offset().left,
586 top : $box.offset().top
587 },
588 $placeholder = $box.clone().css( {
589 'position' : 'absolute',
590 'width' : prop.width,
591 'height' : prop.height,
592 'left' : prop.left,
593 'top' : prop.top,
594 'zIndex' : 9999,
595 'overflow-y' : 'auto',
596 '-webkit-transition': 'all ' + transitionProp.speed + 'ms ' + transitionProp.timingfunction,
597 '-moz-transition': 'all ' + transitionProp.speed + 'ms ' + transitionProp.timingfunction
598 } )
599 .insertAfter( $overlay )
600 .end()
601 .append( $boxClose.on( 'click.flips', function( event ) {
602
603 $overlay.css( 'opacity', 0 );
604
605 $placeholder.children().hide().end().removeClass( 'box-expanded' ).css( {
606 width : _self.windowProp.width,
607 height : _self.windowProp.height,
608 'overflow-y' : 'hidden'
609 } );
610
611 setTimeout( function() {
612 $placeholder.css( {
613 left : prop.left,
614 top : prop.top,
615 width : prop.width,
616 height : prop.height,
617 '-webkit-transition' : 'all ' + transitionProp.speed + 'ms ' + transitionProp.timingfunction,
618 '-moz-transition' : 'all ' + transitionProp.speed + 'ms ' + transitionProp.timingfunction
619 });
620 }, 0 );
621
622 }) )
623 .children()
624 .hide()
625 .end()
626 .on( 'webkitTransitionEnd.flips transitionend.flips OTransitionEnd.flips', function( event ) {
627
628 if( $( event.target ).hasClass( 'box-expanded' ) ) { // expanding
629
630 $(this).css( {
631 width : '100%',
632 height : '100%',
633 '-webkit-transition' : 'none',
634 '-moz-transition' : 'none'
635 } ).children().fadeIn();
636
637 }
638 else { // collapsing
639
640 $overlay.remove();
641 $(this).remove();
642
643 }
644
645 });
646
647 setTimeout( function() {
648
649 $overlay.css( {
650 opacity : 1
651 } );
652
653 $placeholder.addClass( 'box-expanded' ).css( {
654 left : 0,
655 top : 0,
656 width : _self.windowProp.width,
657 height : _self.windowProp.height
658 });
659
660 }, 0 );
661
662 } );
663
664 },
665 _onEndFlip : function( $page ) {
666
667 // if the page flips from left to right we will need to change the z-index of the flipped page
668 if( ( this.flipSide === 'l2r' && $page.data( 'flip' ) ) ||
669 ( this.flipSide === 'r2l' && !$page.data( 'flip' ) ) ) {
670
671 $page.css( 'z-index', this.pagesCount - 2 - $page.index() );
672
673 }
674
675 this.$flippingPage.css( {
676 '-webkit-transition' : 'none',
677 '-moz-transition' : 'none'
678 } );
679
680 // remove overlays
681 this._removeOverlays();
682 this._saveState();
683 this.isAnimating = false;
684
685 // hack (todo: issues with safari / z-indexes)
686 if( this.flipSide === 'r2l' || ( this.flipSide === 'l2r' && !$page.data( 'flip' ) ) ) {
687
688 this.$flippingPage.find('.back').css( '-webkit-transform', 'rotateY(-180deg)' );
689
690 }
691
692 },
693 // given the touch/drag start point (s), the end point (e) and a value in between (x)
694 // calculate the respective angle ( 0deg - 180deg )
695 _calcAngle : function( x, s, e ) {
696
697 return ( -180 / ( s - e ) ) * x + ( ( s * 180 ) / ( s - e ) );
698
699 },
700 // given the current angle and the default speed, calculate the respective speed to accomplish the flip
701 _calculateSpeed : function() {
702
703 ( this.flipDirection === 'right' ) ?
704 this.flipSpeed = ( this.options.flipspeed / 180 ) * this.angle :
705 this.flipSpeed = - ( this.options.flipspeed / 180 ) * this.angle + this.options.flipspeed;
706
707 },
708 _turnPage : function( angle, update ) {
709
710 // hack / todo: before page that was set to -181deg should have -180deg
711 this.$beforePage.css({
712 '-webkit-transform' : 'rotateY( -180deg )',
713 '-moz-transform' : 'rotateY( -180deg )'
714 });
715
716 // if not moving manually set a transition to flip the page
717 if( !update ) {
718
719 this.$flippingPage.css( {
720 '-webkit-transition' : '-webkit-transform ' + this.flipSpeed + 'ms ' + this.options.fliptimingfunction,
721 '-moz-transition' : '-moz-transform ' + this.flipSpeed + 'ms ' + this.options.fliptimingfunction
722 } );
723
724 }
725
726 // if page is a right side page, we need to set its z-index higher as soon the page starts to flip.
727 // this will make the page be on "top" of the left ones.
728 // note: if the flipping page is on the left side then we set the z-index after the flip is over.
729 // this is done on the _onEndFlip function.
730 var idx = ( this.flipSide === 'r2l' ) ? this.currentPage : this.currentPage - 1;
731 if( this.flipSide === 'r2l' ) {
732
733 this.$flippingPage.css( 'z-index', this.flipPagesCount - 1 + idx );
734
735 }
736
737 // hack (todo: issues with safari / z-indexes)
738 this.$flippingPage.find('.back').css( '-webkit-transform', 'rotateY(180deg)' );
739
740 // update the angle
741 this.$flippingPage.css( {
742 '-webkit-transform' : 'rotateY(-' + angle + 'deg)',
743 '-moz-transform' : 'rotateY(-' + angle + 'deg)'
744 } );
745
746 // show overlays
747 this._overlay( angle, update );
748
749 },
750 _addOverlays : function() {
751
752 var _self = this;
753
754 // remove current overlays
755 this._removeOverlays();
756
757 this.hasOverlays = true;
758
759 // overlays for the flipping page. One in the front, one in the back.
760
761 this.$frontoverlay = $( '<div class="flipoverlay"></div>' ).appendTo( this.$flippingPage.find( 'div.front > .outer' ) );
762 this.$backoverlay = $( '<div class="flipoverlay"></div>' ).appendTo( this.$flippingPage.find( 'div.back > .outer' ) )
763
764 // overlay for the page "under" the flipping page.
765 if( this.$afterPage ) {
766
767 this.$afterOverlay = $( '<div class="overlay"></div>' ).appendTo( this.$afterPage.find( 'div.front > .outer' ) );
768
769 }
770
771 // overlay for the page "before" the flipping page
772 if( this.$beforePage ) {
773
774 this.$beforeOverlay = $( '<div class="overlay"></div>' ).appendTo( this.$beforePage.find( 'div.back > .outer' ) );
775
776 }
777
778 },
779 _removeOverlays : function() {
780
781 // removes the 4 overlays
782 if( this.$frontoverlay )
783 this.$frontoverlay.remove();
784 if( this.$backoverlay )
785 this.$backoverlay.remove();
786 if( this.$afterOverlay )
787 this.$afterOverlay.remove();
788 if( this.$beforeOverlay )
789 this.$beforeOverlay.remove();
790
791 this.hasOverlays = false;
792
793 },
794 _overlay : function( angle, update ) {
795
796 // changes the opacity of each of the overlays.
797 if( update ) {
798
799 // if update is true, meaning we are manually flipping the page,
800 // we need to calculate the opacity that corresponds to the current angle
801 var afterOverlayOpacity = - ( 1 / 90 ) * angle + 1,
802 beforeOverlayOpacity = ( 1 / 90 ) * angle - 1;
803
804 if( this.$afterOverlay ) {
805
806 this.$afterOverlay.css( 'opacity', afterOverlayOpacity );
807
808 }
809 if( this.$beforeOverlay ) {
810
811 this.$beforeOverlay.css( 'opacity', beforeOverlayOpacity );
812
813 }
814
815 // the flipping page will have a fixed value.
816 // todo: add a gradient instead.
817 var flipOpacity = 0.1;
818 this.$frontoverlay.css( 'opacity', flipOpacity );
819 this.$backoverlay.css( 'opacity', flipOpacity );
820
821 }
822 else {
823
824 var _self = this;
825
826 // if we release the mouse / touchend then we will set a transition for the overlays.
827 // we will need to take in consideration the current angle, the speed (given the angle)
828 // and the delays for each overlay (the opacity of the overlay will only change
829 // when the flipping page is on the same side).
830 var afterspeed = this.flipSpeed,
831 beforespeed = this.flipSpeed,
832 margin = 60; // hack (todo: issues with safari / z-indexes)
833
834 if( this.$afterOverlay ) {
835
836 var afterdelay = 0;
837
838 if( this.flipDirection === 'right' ) {
839
840 if( this.angle > 90 ) {
841
842 afterdelay = Math.abs( this.flipSpeed - this.options.flipspeed / 2 - margin );
843 afterspeed = this.options.flipspeed / 2 - margin ;
844
845 }
846 else {
847
848 afterspeed -= margin;
849
850 }
851
852 }
853 else {
854
855 afterspeed = Math.abs( this.flipSpeed - this.options.flipspeed / 2 );
856
857 }
858
859 if( afterspeed <= 0 ) afterspeed = 1;
860
861 this.$afterOverlay.css( {
862 '-webkit-transition' : 'opacity ' + afterspeed + 'ms ' + this.options.fliptimingfunction + ' ' + afterdelay + 'ms',
863 '-moz-transition' : 'opacity ' + afterspeed + 'ms ' + this.options.fliptimingfunction + ' ' + afterdelay + 'ms',
864 'opacity' : ( this.flipDirection === 'left' ) ? 0 : 1
865 } ).on( 'webkitTransitionEnd.flips transitionend.flips OTransitionEnd.flips', function( event ) {
866 if( _self.$beforeOverlay ) _self.$beforeOverlay.off( 'webkitTransitionEnd.flips transitionend.flips OTransitionEnd.flips');
867 setTimeout( function() {
868 _self._adjustLayout(_self.currentPage);
869 }, _self.options.flipspeed / 2 - margin );
870 } );
871
872 }
873
874 if( this.$beforeOverlay ) {
875
876 var beforedelay = 0;
877
878 if( this.flipDirection === 'left' ) {
879
880 if( this.angle < 90 ) {
881
882 beforedelay = Math.abs( this.flipSpeed - this.options.flipspeed / 2 - margin ) ;
883 beforespeed = this.options.flipspeed / 2 - margin;
884
885 }
886 else {
887
888 beforespeed -= margin;
889
890 }
891
892 }
893 else {
894
895 beforespeed = Math.abs( this.flipSpeed - this.options.flipspeed / 2 );
896
897 }
898
899 if( beforespeed <= 0 ) beforespeed = 1;
900
901 this.$beforeOverlay.css( {
902 '-webkit-transition' : 'opacity ' + beforespeed + 'ms ' + this.options.fliptimingfunction + ' ' + beforedelay + 'ms',
903 '-moz-transition' : 'opacity ' + beforespeed + 'ms ' + this.options.fliptimingfunction + ' ' + beforedelay + 'ms',
904 'opacity' : ( this.flipDirection === 'left' ) ? 1 : 0
905 } ).on( 'webkitTransitionEnd.flips transitionend.flips OTransitionEnd.flips', function( event ) {
906 if( _self.$afterOverlay ) _self.$afterOverlay.off( 'webkitTransitionEnd.flips transitionend.flips OTransitionEnd.flips');
907 _self._adjustLayout(_self.currentPage);
908 } );
909
910 }
911
912 }
913
914 }
915 };
916
917 var logError = function( message ) {
918 if ( this.console ) {
919 console.error( message );
920 }
921 };
922
923 $.fn.flips = function( options ) {
924
925 if ( typeof options === 'string' ) {
926
927 var args = Array.prototype.slice.call( arguments, 1 );
928
929 this.each(function() {
930
931 var instance = $.data( this, 'flips' );
932
933 if ( !instance ) {
934 logError( "cannot call methods on flips prior to initialization; " +
935 "attempted to call method '" + options + "'" );
936 return;
937 }
938
939 if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
940 logError( "no such method '" + options + "' for flips instance" );
941 return;
942 }
943
944 instance[ options ].apply( instance, args );
945
946 });
947
948 }
949 else {
950
951 this.each(function() {
952
953 var instance = $.data( this, 'flips' );
954 if ( !instance ) {
955 $.data( this, 'flips', new $.Flips( options, this ) );
956 }
957 });
958
959 }
960
961 return this;
962
963 };
964
965})( window ); \ No newline at end of file
diff --git a/Blocks/Flipboard/js/jquery.history.js b/Blocks/Flipboard/js/jquery.history.js
new file mode 100644
index 0000000..8d4edcd
--- /dev/null
+++ b/Blocks/Flipboard/js/jquery.history.js
@@ -0,0 +1 @@
window.JSON||(window.JSON={}),function(){function f(a){return a<10?"0"+a:a}function quote(a){return escapable.lastIndex=0,escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b=="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1)h[c]=str(c,i)||"null";return e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g,e}if(rep&&typeof rep=="object"){f=rep.length;for(c=0;c<f;c+=1)d=rep[c],typeof d=="string"&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e))}else for(d in i)Object.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));return e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g,e}}"use strict",typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var JSON=window.JSON,cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;typeof JSON.stringify!="function"&&(JSON.stringify=function(a,b,c){var d;gap="",indent="";if(typeof c=="number")for(d=0;d<c;d+=1)indent+=" ";else typeof c=="string"&&(indent=c);rep=b;if(!b||typeof b=="function"||typeof b=="object"&&typeof b.length=="number")return str("",{"":a});throw new Error("JSON.stringify")}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e=="object")for(c in e)Object.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),typeof reviver=="function"?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),function(a,b){"use strict";var c=a.History=a.History||{},d=a.jQuery;if(typeof c.Adapter!="undefined")throw new Error("History.js Adapter has already been loaded...");c.Adapter={bind:function(a,b,c){d(a).bind(b,c)},trigger:function(a,b,c){d(a).trigger(b,c)},extractEventData:function(a,c,d){var e=c&&c.originalEvent&&c.originalEvent[a]||d&&d[a]||b;return e},onDomLoad:function(a){d(a)}},typeof c.init!="undefined"&&c.init()}(window),function(a,b){"use strict";var c=a.document,d=a.setTimeout||d,e=a.clearTimeout||e,f=a.setInterval||f,g=a.History=a.History||{};if(typeof g.initHtml4!="undefined")throw new Error("History.js HTML4 Support has already been loaded...");g.initHtml4=function(){if(typeof g.initHtml4.initialized!="undefined")return!1;g.initHtml4.initialized=!0,g.enabled=!0,g.savedHashes=[],g.isLastHash=function(a){var b=g.getHashByIndex(),c;return c=a===b,c},g.saveHash=function(a){return g.isLastHash(a)?!1:(g.savedHashes.push(a),!0)},g.getHashByIndex=function(a){var b=null;return typeof a=="undefined"?b=g.savedHashes[g.savedHashes.length-1]:a<0?b=g.savedHashes[g.savedHashes.length+a]:b=g.savedHashes[a],b},g.discardedHashes={},g.discardedStates={},g.discardState=function(a,b,c){var d=g.getHashByState(a),e;return e={discardedState:a,backState:c,forwardState:b},g.discardedStates[d]=e,!0},g.discardHash=function(a,b,c){var d={discardedHash:a,backState:c,forwardState:b};return g.discardedHashes[a]=d,!0},g.discardedState=function(a){var b=g.getHashByState(a),c;return c=g.discardedStates[b]||!1,c},g.discardedHash=function(a){var b=g.discardedHashes[a]||!1;return b},g.recycleState=function(a){var b=g.getHashByState(a);return g.discardedState(a)&&delete g.discardedStates[b],!0},g.emulated.hashChange&&(g.hashChangeInit=function(){g.checkerFunction=null;var b="",d,e,h,i;return g.isInternetExplorer()?(d="historyjs-iframe",e=c.createElement("iframe"),e.setAttribute("id",d),e.style.display="none",c.body.appendChild(e),e.contentWindow.document.open(),e.contentWindow.document.close(),h="",i=!1,g.checkerFunction=function(){if(i)return!1;i=!0;var c=g.getHash()||"",d=g.unescapeHash(e.contentWindow.document.location.hash)||"";return c!==b?(b=c,d!==c&&(h=d=c,e.contentWindow.document.open(),e.contentWindow.document.close(),e.contentWindow.document.location.hash=g.escapeHash(c)),g.Adapter.trigger(a,"hashchange")):d!==h&&(h=d,g.setHash(d,!1)),i=!1,!0}):g.checkerFunction=function(){var c=g.getHash();return c!==b&&(b=c,g.Adapter.trigger(a,"hashchange")),!0},g.intervalList.push(f(g.checkerFunction,g.options.hashChangeInterval)),!0},g.Adapter.onDomLoad(g.hashChangeInit)),g.emulated.pushState&&(g.onHashChange=function(b){var d=b&&b.newURL||c.location.href,e=g.getHashByUrl(d),f=null,h=null,i=null,j;return g.isLastHash(e)?(g.busy(!1),!1):(g.doubleCheckComplete(),g.saveHash(e),e&&g.isTraditionalAnchor(e)?(g.Adapter.trigger(a,"anchorchange"),g.busy(!1),!1):(f=g.extractState(g.getFullUrl(e||c.location.href,!1),!0),g.isLastSavedState(f)?(g.busy(!1),!1):(h=g.getHashByState(f),j=g.discardedState(f),j?(g.getHashByIndex(-2)===g.getHashByState(j.forwardState)?g.back(!1):g.forward(!1),!1):(g.pushState(f.data,f.title,f.url,!1),!0))))},g.Adapter.bind(a,"hashchange",g.onHashChange),g.pushState=function(b,d,e,f){if(g.getHashByUrl(e))throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(f!==!1&&g.busy())return g.pushQueue({scope:g,callback:g.pushState,args:arguments,queue:f}),!1;g.busy(!0);var h=g.createStateObject(b,d,e),i=g.getHashByState(h),j=g.getState(!1),k=g.getHashByState(j),l=g.getHash();return g.storeState(h),g.expectedStateId=h.id,g.recycleState(h),g.setTitle(h),i===k?(g.busy(!1),!1):i!==l&&i!==g.getShortUrl(c.location.href)?(g.setHash(i,!1),!1):(g.saveState(h),g.Adapter.trigger(a,"statechange"),g.busy(!1),!0)},g.replaceState=function(a,b,c,d){if(g.getHashByUrl(c))throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(d!==!1&&g.busy())return g.pushQueue({scope:g,callback:g.replaceState,args:arguments,queue:d}),!1;g.busy(!0);var e=g.createStateObject(a,b,c),f=g.getState(!1),h=g.getStateByIndex(-2);return g.discardState(f,e,h),g.pushState(e.data,e.title,e.url,!1),!0}),g.emulated.pushState&&g.getHash()&&!g.emulated.hashChange&&g.Adapter.onDomLoad(function(){g.Adapter.trigger(a,"hashchange")})},typeof g.init!="undefined"&&g.init()}(window),function(a,b){"use strict";var c=a.console||b,d=a.document,e=a.navigator,f=a.sessionStorage||!1,g=a.setTimeout,h=a.clearTimeout,i=a.setInterval,j=a.clearInterval,k=a.JSON,l=a.alert,m=a.History=a.History||{},n=a.history;k.stringify=k.stringify||k.encode,k.parse=k.parse||k.decode;if(typeof m.init!="undefined")throw new Error("History.js Core has already been loaded...");m.init=function(){return typeof m.Adapter=="undefined"?!1:(typeof m.initCore!="undefined"&&m.initCore(),typeof m.initHtml4!="undefined"&&m.initHtml4(),!0)},m.initCore=function(){if(typeof m.initCore.initialized!="undefined")return!1;m.initCore.initialized=!0,m.options=m.options||{},m.options.hashChangeInterval=m.options.hashChangeInterval||100,m.options.safariPollInterval=m.options.safariPollInterval||500,m.options.doubleCheckInterval=m.options.doubleCheckInterval||500,m.options.storeInterval=m.options.storeInterval||1e3,m.options.busyDelay=m.options.busyDelay||250,m.options.debug=m.options.debug||!1,m.options.initialTitle=m.options.initialTitle||d.title,m.intervalList=[],m.clearAllIntervals=function(){var a,b=m.intervalList;if(typeof b!="undefined"&&b!==null){for(a=0;a<b.length;a++)j(b[a]);m.intervalList=null}},m.debug=function(){(m.options.debug||!1)&&m.log.apply(m,arguments)},m.log=function(){var a=typeof c!="undefined"&&typeof c.log!="undefined"&&typeof c.log.apply!="undefined",b=d.getElementById("log"),e,f,g,h,i;a?(h=Array.prototype.slice.call(arguments),e=h.shift(),typeof c.debug!="undefined"?c.debug.apply(c,[e,h]):c.log.apply(c,[e,h])):e="\n"+arguments[0]+"\n";for(f=1,g=arguments.length;f<g;++f){i=arguments[f];if(typeof i=="object"&&typeof k!="undefined")try{i=k.stringify(i)}catch(j){}e+="\n"+i+"\n"}return b?(b.value+=e+"\n-----\n",b.scrollTop=b.scrollHeight-b.clientHeight):a||l(e),!0},m.getInternetExplorerMajorVersion=function(){var a=m.getInternetExplorerMajorVersion.cached=typeof m.getInternetExplorerMajorVersion.cached!="undefined"?m.getInternetExplorerMajorVersion.cached:function(){var a=3,b=d.createElement("div"),c=b.getElementsByTagName("i");while((b.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c[0]);return a>4?a:!1}();return a},m.isInternetExplorer=function(){var a=m.isInternetExplorer.cached=typeof m.isInternetExplorer.cached!="undefined"?m.isInternetExplorer.cached:Boolean(m.getInternetExplorerMajorVersion());return a},m.emulated={pushState:!Boolean(a.history&&a.history.pushState&&a.history.replaceState&&!/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i.test(e.userAgent)&&!/AppleWebKit\/5([0-2]|3[0-2])/i.test(e.userAgent)),hashChange:Boolean(!("onhashchange"in a||"onhashchange"in d)||m.isInternetExplorer()&&m.getInternetExplorerMajorVersion()<8)},m.enabled=!m.emulated.pushState,m.bugs={setHash:Boolean(!m.emulated.pushState&&e.vendor==="Apple Computer, Inc."&&/AppleWebKit\/5([0-2]|3[0-3])/.test(e.userAgent)),safariPoll:Boolean(!m.emulated.pushState&&e.vendor==="Apple Computer, Inc."&&/AppleWebKit\/5([0-2]|3[0-3])/.test(e.userAgent)),ieDoubleCheck:Boolean(m.isInternetExplorer()&&m.getInternetExplorerMajorVersion()<8),hashEscape:Boolean(m.isInternetExplorer()&&m.getInternetExplorerMajorVersion()<7)},m.isEmptyObject=function(a){for(var b in a)return!1;return!0},m.cloneObject=function(a){var b,c;return a?(b=k.stringify(a),c=k.parse(b)):c={},c},m.getRootUrl=function(){var a=d.location.protocol+"//"+(d.location.hostname||d.location.host);if(d.location.port||!1)a+=":"+d.location.port;return a+="/",a},m.getBaseHref=function(){var a=d.getElementsByTagName("base"),b=null,c="";return a.length===1&&(b=a[0],c=b.href.replace(/[^\/]+$/,"")),c=c.replace(/\/+$/,""),c&&(c+="/"),c},m.getBaseUrl=function(){var a=m.getBaseHref()||m.getBasePageUrl()||m.getRootUrl();return a},m.getPageUrl=function(){var a=m.getState(!1,!1),b=(a||{}).url||d.location.href,c;return c=b.replace(/\/+$/,"").replace(/[^\/]+$/,function(a,b,c){return/\./.test(a)?a:a+"/"}),c},m.getBasePageUrl=function(){var a=d.location.href.replace(/[#\?].*/,"").replace(/[^\/]+$/,function(a,b,c){return/[^\/]$/.test(a)?"":a}).replace(/\/+$/,"")+"/";return a},m.getFullUrl=function(a,b){var c=a,d=a.substring(0,1);return b=typeof b=="undefined"?!0:b,/[a-z]+\:\/\//.test(a)||(d==="/"?c=m.getRootUrl()+a.replace(/^\/+/,""):d==="#"?c=m.getPageUrl().replace(/#.*/,"")+a:d==="?"?c=m.getPageUrl().replace(/[\?#].*/,"")+a:b?c=m.getBaseUrl()+a.replace(/^(\.\/)+/,""):c=m.getBasePageUrl()+a.replace(/^(\.\/)+/,"")),c.replace(/\#$/,"")},m.getShortUrl=function(a){var b=a,c=m.getBaseUrl(),d=m.getRootUrl();return m.emulated.pushState&&(b=b.replace(c,"")),b=b.replace(d,"/"),m.isTraditionalAnchor(b)&&(b="./"+b),b=b.replace(/^(\.\/)+/g,"./").replace(/\#$/,""),b},m.store={},m.idToState=m.idToState||{},m.stateToId=m.stateToId||{},m.urlToId=m.urlToId||{},m.storedStates=m.storedStates||[],m.savedStates=m.savedStates||[],m.normalizeStore=function(){m.store.idToState=m.store.idToState||{},m.store.urlToId=m.store.urlToId||{},m.store.stateToId=m.store.stateToId||{}},m.getState=function(a,b){typeof a=="undefined"&&(a=!0),typeof b=="undefined"&&(b=!0);var c=m.getLastSavedState();return!c&&b&&(c=m.createStateObject()),a&&(c=m.cloneObject(c),c.url=c.cleanUrl||c.url),c},m.getIdByState=function(a){var b=m.extractId(a.url),c;if(!b){c=m.getStateString(a);if(typeof m.stateToId[c]!="undefined")b=m.stateToId[c];else if(typeof m.store.stateToId[c]!="undefined")b=m.store.stateToId[c];else{for(;;){b=(new Date).getTime()+String(Math.random()).replace(/\D/g,"");if(typeof m.idToState[b]=="undefined"&&typeof m.store.idToState[b]=="undefined")break}m.stateToId[c]=b,m.idToState[b]=a}}return b},m.normalizeState=function(a){var b,c;if(!a||typeof a!="object")a={};if(typeof a.normalized!="undefined")return a;if(!a.data||typeof a.data!="object")a.data={};b={},b.normalized=!0,b.title=a.title||"",b.url=m.getFullUrl(m.unescapeString(a.url||d.location.href)),b.hash=m.getShortUrl(b.url),b.data=m.cloneObject(a.data),b.id=m.getIdByState(b),b.cleanUrl=b.url.replace(/\??\&_suid.*/,""),b.url=b.cleanUrl,c=!m.isEmptyObject(b.data);if(b.title||c)b.hash=m.getShortUrl(b.url).replace(/\??\&_suid.*/,""),/\?/.test(b.hash)||(b.hash+="?"),b.hash+="&_suid="+b.id;return b.hashedUrl=m.getFullUrl(b.hash),(m.emulated.pushState||m.bugs.safariPoll)&&m.hasUrlDuplicate(b)&&(b.url=b.hashedUrl),b},m.createStateObject=function(a,b,c){var d={data:a,title:b,url:c};return d=m.normalizeState(d),d},m.getStateById=function(a){a=String(a);var c=m.idToState[a]||m.store.idToState[a]||b;return c},m.getStateString=function(a){var b,c,d;return b=m.normalizeState(a),c={data:b.data,title:a.title,url:a.url},d=k.stringify(c),d},m.getStateId=function(a){var b,c;return b=m.normalizeState(a),c=b.id,c},m.getHashByState=function(a){var b,c;return b=m.normalizeState(a),c=b.hash,c},m.extractId=function(a){var b,c,d;return c=/(.*)\&_suid=([0-9]+)$/.exec(a),d=c?c[1]||a:a,b=c?String(c[2]||""):"",b||!1},m.isTraditionalAnchor=function(a){var b=!/[\/\?\.]/.test(a);return b},m.extractState=function(a,b){var c=null,d,e;return b=b||!1,d=m.extractId(a),d&&(c=m.getStateById(d)),c||(e=m.getFullUrl(a),d=m.getIdByUrl(e)||!1,d&&(c=m.getStateById(d)),!c&&b&&!m.isTraditionalAnchor(a)&&(c=m.createStateObject(null,null,e))),c},m.getIdByUrl=function(a){var c=m.urlToId[a]||m.store.urlToId[a]||b;return c},m.getLastSavedState=function(){return m.savedStates[m.savedStates.length-1]||b},m.getLastStoredState=function(){return m.storedStates[m.storedStates.length-1]||b},m.hasUrlDuplicate=function(a){var b=!1,c;return c=m.extractState(a.url),b=c&&c.id!==a.id,b},m.storeState=function(a){return m.urlToId[a.url]=a.id,m.storedStates.push(m.cloneObject(a)),a},m.isLastSavedState=function(a){var b=!1,c,d,e;return m.savedStates.length&&(c=a.id,d=m.getLastSavedState(),e=d.id,b=c===e),b},m.saveState=function(a){return m.isLastSavedState(a)?!1:(m.savedStates.push(m.cloneObject(a)),!0)},m.getStateByIndex=function(a){var b=null;return typeof a=="undefined"?b=m.savedStates[m.savedStates.length-1]:a<0?b=m.savedStates[m.savedStates.length+a]:b=m.savedStates[a],b},m.getHash=function(){var a=m.unescapeHash(d.location.hash);return a},m.unescapeString=function(b){var c=b,d;for(;;){d=a.unescape(c);if(d===c)break;c=d}return c},m.unescapeHash=function(a){var b=m.normalizeHash(a);return b=m.unescapeString(b),b},m.normalizeHash=function(a){var b=a.replace(/[^#]*#/,"").replace(/#.*/,"");return b},m.setHash=function(a,b){var c,e,f;return b!==!1&&m.busy()?(m.pushQueue({scope:m,callback:m.setHash,args:arguments,queue:b}),!1):(c=m.escapeHash(a),m.busy(!0),e=m.extractState(a,!0),e&&!m.emulated.pushState?m.pushState(e.data,e.title,e.url,!1):d.location.hash!==c&&(m.bugs.setHash?(f=m.getPageUrl(),m.pushState(null,null,f+"#"+c,!1)):d.location.hash=c),m)},m.escapeHash=function(b){var c=m.normalizeHash(b);return c=a.escape(c),m.bugs.hashEscape||(c=c.replace(/\%21/g,"!").replace(/\%26/g,"&").replace(/\%3D/g,"=").replace(/\%3F/g,"?")),c},m.getHashByUrl=function(a){var b=String(a).replace(/([^#]*)#?([^#]*)#?(.*)/,"$2");return b=m.unescapeHash(b),b},m.setTitle=function(a){var b=a.title,c;b||(c=m.getStateByIndex(0),c&&c.url===a.url&&(b=c.title||m.options.initialTitle));try{d.getElementsByTagName("title")[0].innerHTML=b.replace("<","&lt;").replace(">","&gt;").replace(" & "," &amp; ")}catch(e){}return d.title=b,m},m.queues=[],m.busy=function(a){typeof a!="undefined"?m.busy.flag=a:typeof m.busy.flag=="undefined"&&(m.busy.flag=!1);if(!m.busy.flag){h(m.busy.timeout);var b=function(){var a,c,d;if(m.busy.flag)return;for(a=m.queues.length-1;a>=0;--a){c=m.queues[a];if(c.length===0)continue;d=c.shift(),m.fireQueueItem(d),m.busy.timeout=g(b,m.options.busyDelay)}};m.busy.timeout=g(b,m.options.busyDelay)}return m.busy.flag},m.busy.flag=!1,m.fireQueueItem=function(a){return a.callback.apply(a.scope||m,a.args||[])},m.pushQueue=function(a){return m.queues[a.queue||0]=m.queues[a.queue||0]||[],m.queues[a.queue||0].push(a),m},m.queue=function(a,b){return typeof a=="function"&&(a={callback:a}),typeof b!="undefined"&&(a.queue=b),m.busy()?m.pushQueue(a):m.fireQueueItem(a),m},m.clearQueue=function(){return m.busy.flag=!1,m.queues=[],m},m.stateChanged=!1,m.doubleChecker=!1,m.doubleCheckComplete=function(){return m.stateChanged=!0,m.doubleCheckClear(),m},m.doubleCheckClear=function(){return m.doubleChecker&&(h(m.doubleChecker),m.doubleChecker=!1),m},m.doubleCheck=function(a){return m.stateChanged=!1,m.doubleCheckClear(),m.bugs.ieDoubleCheck&&(m.doubleChecker=g(function(){return m.doubleCheckClear(),m.stateChanged||a(),!0},m.options.doubleCheckInterval)),m},m.safariStatePoll=function(){var b=m.extractState(d.location.href),c;if(!m.isLastSavedState(b))c=b;else return;return c||(c=m.createStateObject()),m.Adapter.trigger(a,"popstate"),m},m.back=function(a){return a!==!1&&m.busy()?(m.pushQueue({scope:m,callback:m.back,args:arguments,queue:a}),!1):(m.busy(!0),m.doubleCheck(function(){m.back(!1)}),n.go(-1),!0)},m.forward=function(a){return a!==!1&&m.busy()?(m.pushQueue({scope:m,callback:m.forward,args:arguments,queue:a}),!1):(m.busy(!0),m.doubleCheck(function(){m.forward(!1)}),n.go(1),!0)},m.go=function(a,b){var c;if(a>0)for(c=1;c<=a;++c)m.forward(b);else{if(!(a<0))throw new Error("History.go: History.go requires a positive or negative integer passed.");for(c=-1;c>=a;--c)m.back(b)}return m};if(m.emulated.pushState){var o=function(){};m.pushState=m.pushState||o,m.replaceState=m.replaceState||o}else m.onPopState=function(b,c){var e=!1,f=!1,g,h;return m.doubleCheckComplete(),g=m.getHash(),g?(h=m.extractState(g||d.location.href,!0),h?m.replaceState(h.data,h.title,h.url,!1):(m.Adapter.trigger(a,"anchorchange"),m.busy(!1)),m.expectedStateId=!1,!1):(e=m.Adapter.extractEventData("state",b,c)||!1,e?f=m.getStateById(e):m.expectedStateId?f=m.getStateById(m.expectedStateId):f=m.extractState(d.location.href),f||(f=m.createStateObject(null,null,d.location.href)),m.expectedStateId=!1,m.isLastSavedState(f)?(m.busy(!1),!1):(m.storeState(f),m.saveState(f),m.setTitle(f),m.Adapter.trigger(a,"statechange"),m.busy(!1),!0))},m.Adapter.bind(a,"popstate",m.onPopState),m.pushState=function(b,c,d,e){if(m.getHashByUrl(d)&&m.emulated.pushState)throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(e!==!1&&m.busy())return m.pushQueue({scope:m,callback:m.pushState,args:arguments,queue:e}),!1;m.busy(!0);var f=m.createStateObject(b,c,d);return m.isLastSavedState(f)?m.busy(!1):(m.storeState(f),m.expectedStateId=f.id,n.pushState(f.id,f.title,f.url),m.Adapter.trigger(a,"popstate")),!0},m.replaceState=function(b,c,d,e){if(m.getHashByUrl(d)&&m.emulated.pushState)throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(e!==!1&&m.busy())return m.pushQueue({scope:m,callback:m.replaceState,args:arguments,queue:e}),!1;m.busy(!0);var f=m.createStateObject(b,c,d);return m.isLastSavedState(f)?m.busy(!1):(m.storeState(f),m.expectedStateId=f.id,n.replaceState(f.id,f.title,f.url),m.Adapter.trigger(a,"popstate")),!0};if(f){try{m.store=k.parse(f.getItem("History.store"))||{}}catch(p){m.store={}}m.normalizeStore()}else m.store={},m.normalizeStore();m.Adapter.bind(a,"beforeunload",m.clearAllIntervals),m.Adapter.bind(a,"unload",m.clearAllIntervals),m.saveState(m.storeState(m.extractState(d.location.href,!0))),f&&(m.onUnload=function(){var a,b;try{a=k.parse(f.getItem("History.store"))||{}}catch(c){a={}}a.idToState=a.idToState||{},a.urlToId=a.urlToId||{},a.stateToId=a.stateToId||{};for(b in m.idToState){if(!m.idToState.hasOwnProperty(b))continue;a.idToState[b]=m.idToState[b]}for(b in m.urlToId){if(!m.urlToId.hasOwnProperty(b))continue;a.urlToId[b]=m.urlToId[b]}for(b in m.stateToId){if(!m.stateToId.hasOwnProperty(b))continue;a.stateToId[b]=m.stateToId[b]}m.store=a,m.normalizeStore(),f.setItem("History.store",k.stringify(a))},m.intervalList.push(i(m.onUnload,m.options.storeInterval)),m.Adapter.bind(a,"beforeunload",m.onUnload),m.Adapter.bind(a,"unload",m.onUnload));if(!m.emulated.pushState){m.bugs.safariPoll&&m.intervalList.push(i(m.safariStatePoll,m.options.safariPollInterval));if(e.vendor==="Apple Computer, Inc."||(e.appCodeName||"")==="Mozilla")m.Adapter.bind(a,"hashchange",function(){m.Adapter.trigger(a,"popstate")}),m.getHash()&&m.Adapter.onDomLoad(function(){m.Adapter.trigger(a,"hashchange")})}},m.init()}(window) \ No newline at end of file
diff --git a/Blocks/Flipboard/js/jquery.tmpl.min.js b/Blocks/Flipboard/js/jquery.tmpl.min.js
new file mode 100644
index 0000000..f08e81d
--- /dev/null
+++ b/Blocks/Flipboard/js/jquery.tmpl.min.js
@@ -0,0 +1 @@
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},h=0,c=0,l=[];function g(e,d,g,i){var c={data:i||(d?d.data:{}),_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};e&&a.extend(c,e,{nodes:[],parent:d});if(g){c.tmpl=g;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++h;(l.length?f:b)[h]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a.fn[d].apply(a(i[h]),k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,l,j){if(d[0]&&d[0].nodeType){var f=a.makeArray(arguments),g=d.length,i=0,h;while(i<g&&!(h=a.data(d[i++],"tmplItem")));if(g>1)f[0]=[a.makeArray(d)];if(h&&c)f[2]=function(b){a.tmpl.afterManip(this,b,j)};r.apply(this,f)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var j,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(i(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);j=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(i(c,null,j)):j},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){_=_.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(_,$1,$2);_=[];",close:"call=$item.calls();_=call._.concat($item.wrap(call,_));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){_.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){_.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function i(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:i(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=j(c).concat(b);if(d)b=b.concat(j(d))});return b?b:j(c)}function j(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,j,d,b,c,e){var i=a.tmpl.tag[j],h,f,g;if(!i)throw"Template command not found: "+j;h=i._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=k(b);e=e?","+k(e)+")":c?")":"";f=c?b.indexOf(".")>-1?b+c:"("+b+").call($item"+e:b;g=c?f:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else g=f=h.$1||"null";d=k(d);return"');"+i[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(g).split("$1").join(f).split("$2").join(d?d.replace(/\s*([^\(]+)\s*(\((.*?)\))?/g,function(d,c,b,a){a=a?","+a+")":b?")":"";return a?"("+c+").call($item"+a:d}):h.$2||"")+"_.push('"})+"');}return _;")}function n(c,b){c._wrap=i(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function k(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,i;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(i=j.length-1;i>=0;i--)m(j[i]);m(k)}function m(j){var p,i=j,k,e,m;if(m=j.getAttribute(d)){while(i.parentNode&&(i=i.parentNode).nodeType===1&&!(p=i.getAttribute(d)));if(p!==m){i=i.parentNode?i.nodeType===11?0:i.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[i]||f[i],null,true);e.key=++h;b[h]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;i=a.data(j.parentNode,"tmplItem");i=i?i.key:0}if(e){k=e;while(k&&k.key!=i){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent,null,true)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery) \ No newline at end of file
diff --git a/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js b/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js
new file mode 100644
index 0000000..f007f55
--- /dev/null
+++ b/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js
@@ -0,0 +1,478 @@
1/*
2 * touchSwipe - jQuery Plugin
3 * http://plugins.jquery.com/project/touchSwipe
4 * http://labs.skinkers.com/touchSwipe/
5 *
6 * Copyright (c) 2010 Matt Bryson (www.skinkers.com)
7 * Dual licensed under the MIT or GPL Version 2 licenses.
8 *
9 * $version: 1.2.5
10 *
11 * Changelog
12 * $Date: 2010-12-12 (Wed, 12 Dec 2010) $
13 * $version: 1.0.0
14 * $version: 1.0.1 - removed multibyte comments
15 *
16 * $Date: 2011-21-02 (Mon, 21 Feb 2011) $
17 * $version: 1.1.0 - added allowPageScroll property to allow swiping and scrolling of page
18 * - changed handler signatures so one handler can be used for multiple events
19 * $Date: 2011-23-02 (Wed, 23 Feb 2011) $
20 * $version: 1.2.0 - added click handler. This is fired if the user simply clicks and does not swipe. The event object and click target are passed to handler.
21 * - If you use the http://code.google.com/p/jquery-ui-for-ipad-and-iphone/ plugin, you can also assign jQuery mouse events to children of a touchSwipe object.
22 * $version: 1.2.1 - removed console log!
23 *
24 * $version: 1.2.2 - Fixed bug where scope was not preserved in callback methods.
25 *
26 * $Date: 2011-28-04 (Thurs, 28 April 2011) $
27 * $version: 1.2.4 - Changed licence terms to be MIT or GPL inline with jQuery. Added check for support of touch events to stop non compatible browsers erroring.
28 *
29 * $Date: 2011-27-09 (Tues, 27 September 2011) $
30 * $version: 1.2.5 - Added support for testing swipes with mouse on desktop browser (thanks to https://github.com/joelhy)
31
32 * A jQuery plugin to capture left, right, up and down swipes on touch devices.
33 * You can capture 2 finger or 1 finger swipes, set the threshold and define either a catch all handler, or individual direction handlers.
34 * Options:
35 * swipe Function A catch all handler that is triggered for all swipe directions. Handler is passed 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
36 * swipeLeft Function A handler that is triggered for "left" swipes. Handler is passed 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
37 * swipeRight Function A handler that is triggered for "right" swipes. Handler is passed 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
38 * swipeUp Function A handler that is triggered for "up" swipes. Handler is passed 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
39 * swipeDown Function A handler that is triggered for "down" swipes. Handler is passed 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
40 * swipeStatus Function A handler triggered for every phase of the swipe. Handler is passed 4 arguments: event : The original event object, phase:The current swipe face, either "start?, "move?, "end? or "cancel?. direction : The swipe direction, either "up?, "down?, "left " or "right?.distance : The distance of the swipe.
41 * click Function A handler triggered when a user just clicks on the item, rather than swipes it. If they do not move, click is triggered, if they do move, it is not.
42 *
43 * fingers int Default 1. The number of fingers to trigger the swipe, 1 or 2.
44 * threshold int Default 75. The number of pixels that the user must move their finger by before it is considered a swipe.
45 * triggerOnTouchEnd Boolean Default true If true, the swipe events are triggered when the touch end event is received (user releases finger). If false, it will be triggered on reaching the threshold, and then cancel the touch event automatically.
46 * allowPageScroll String Default "auto". How the browser handles page scrolls when the user is swiping on a touchSwipe object.
47 * "auto" : all undefined swipes will cause the page to scroll in that direction.
48 * "none" : the page will not scroll when user swipes.
49 * "horizontal" : will force page to scroll on horizontal swipes.
50 * "vertical" : will force page to scroll on vertical swipes.
51 *
52 * This jQuery plugin will only run on devices running Mobile Webkit based browsers (iOS 2.0+, android 2.2+)
53 */
54(function($)
55{
56
57
58
59 $.fn.swipe = function(options)
60 {
61 if (!this) return false;
62
63 // Default thresholds & swipe functions
64 var defaults = {
65
66 fingers : 1, // int - The number of fingers to trigger the swipe, 1 or 2. Default is 1.
67 threshold : 75, // int - The number of pixels that the user must move their finger by before it is considered a swipe. Default is 75.
68
69 swipe : null, // Function - A catch all handler that is triggered for all swipe directions. Accepts 2 arguments, the original event object and the direction of the swipe : "left", "right", "up", "down".
70 swipeLeft : null, // Function - A handler that is triggered for "left" swipes. Accepts 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
71 swipeRight : null, // Function - A handler that is triggered for "right" swipes. Accepts 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
72 swipeUp : null, // Function - A handler that is triggered for "up" swipes. Accepts 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
73 swipeDown : null, // Function - A handler that is triggered for "down" swipes. Accepts 3 arguments, the original event object, the direction of the swipe : "left", "right", "up", "down" and the distance of the swipe.
74 swipeStatus : null, // Function - A handler triggered for every phase of the swipe. Handler is passed 4 arguments: event : The original event object, phase:The current swipe face, either "start?, "move?, "end? or "cancel?. direction : The swipe direction, either "up?, "down?, "left " or "right?.distance : The distance of the swipe.
75 click : null, // Function - A handler triggered when a user just clicks on the item, rather than swipes it. If they do not move, click is triggered, if they do move, it is not.
76
77 triggerOnTouchEnd : true, // Boolean, if true, the swipe events are triggered when the touch end event is received (user releases finger). If false, it will be triggered on reaching the threshold, and then cancel the touch event automatically.
78 allowPageScroll : "auto" /* How the browser handles page scrolls when the user is swiping on a touchSwipe object.
79 "auto" : all undefined swipes will cause the page to scroll in that direction.
80 "none" : the page will not scroll when user swipes.
81 "horizontal" : will force page to scroll on horizontal swipes.
82 "vertical" : will force page to scroll on vertical swipes.
83 */
84 };
85
86
87 //Constants
88 var LEFT = "left";
89 var RIGHT = "right";
90 var UP = "up";
91 var DOWN = "down";
92 var NONE = "none";
93 var HORIZONTAL = "horizontal";
94 var VERTICAL = "vertical";
95 var AUTO = "auto";
96
97 var PHASE_START="start";
98 var PHASE_MOVE="move";
99 var PHASE_END="end";
100 var PHASE_CANCEL="cancel";
101
102 var hasTouch = 'ontouchstart' in window,
103 START_EV = hasTouch ? 'touchstart' : 'mousedown',
104 MOVE_EV = hasTouch ? 'touchmove' : 'mousemove',
105 END_EV = hasTouch ? 'touchend' : 'mouseup',
106 CANCEL_EV = 'touchcancel';
107
108 var phase="start";
109
110 if (options.allowPageScroll==undefined && (options.swipe!=undefined || options.swipeStatus!=undefined))
111 options.allowPageScroll=NONE;
112
113 if (options)
114 $.extend(defaults, options);
115
116
117 /**
118 * Setup each object to detect swipe gestures
119 */
120 return this.each(function()
121 {
122 var that = this;
123 var $this = $(this);
124
125 var triggerElementID = null; // this variable is used to identity the triggering element
126 var fingerCount = 0; // the current number of fingers being used.
127
128 //track mouse points / delta
129 var start={x:0, y:0};
130 var end={x:0, y:0};
131 var delta={x:0, y:0};
132 // added by Codrops
133 var lastPositionX = 0;
134
135 /**
136 * Event handler for a touch start event.
137 * Stops the default click event from triggering and stores where we touched
138 */
139 function touchStart(event)
140 {
141 var evt = hasTouch ? event.touches[0] : event;
142
143 phase = PHASE_START;
144
145 if (hasTouch) {
146 // get the total number of fingers touching the screen
147 fingerCount = event.touches.length;
148 }
149
150 //clear vars..
151 distance=0;
152 direction=null;
153
154 // check the number of fingers is what we are looking for
155 if (fingerCount == defaults.fingers || !hasTouch)
156 {
157 // get the coordinates of the touch
158 start.x = end.x = evt.pageX;
159 start.y = end.y = evt.pageY;
160 // changed by Codrops
161 lastPositionX = end.x;
162
163 if (defaults.swipeStatus)
164 triggerHandler(event, phase, start, end);
165 }
166 else
167 {
168 //touch with more/less than the fingers we are looking for
169 touchCancel(event);
170 }
171
172 that.addEventListener(MOVE_EV, touchMove, false);
173 that.addEventListener(END_EV, touchEnd, false);
174
175 }
176
177 /**
178 * Event handler for a touch move event.
179 * If we change fingers during move, then cancel the event
180 */
181 function touchMove(event)
182 {
183 if (phase == PHASE_END || phase == PHASE_CANCEL)
184 return;
185
186 var evt = hasTouch ? event.touches[0] : event;
187
188 end.x = evt.pageX;
189 end.y = evt.pageY;
190
191 // changed by Codrops
192 direction = calculateDirection();
193 lastPositionX = end.x;
194
195 if (hasTouch) {
196 fingerCount = event.touches.length;
197 }
198
199 phase = PHASE_MOVE
200
201 //Check if we need to prevent default evnet (page scroll) or not
202 validateDefaultEvent(event, direction);
203
204 if ( fingerCount == defaults.fingers || !hasTouch)
205 {
206 distance = caluculateDistance();
207
208 if (defaults.swipeStatus)
209 triggerHandler(event, phase, start, end, direction, distance);
210
211 //If we trigger whilst dragging, not on touch end, then calculate now...
212 if (!defaults.triggerOnTouchEnd)
213 {
214 // if the user swiped more than the minimum length, perform the appropriate action
215 if ( distance >= defaults.threshold )
216 {
217 phase = PHASE_END;
218 triggerHandler(event, phase, start, end);
219 touchCancel(event); // reset the variables
220 }
221 }
222 }
223 else
224 {
225 phase = PHASE_CANCEL;
226 triggerHandler(event, phase, start, end);
227 touchCancel(event);
228 }
229 }
230
231 /**
232 * Event handler for a touch end event.
233 * Calculate the direction and trigger events
234 */
235 function touchEnd(event)
236 {
237 event.preventDefault();
238
239 distance = caluculateDistance();
240
241 //changed by codrops
242 //direction = caluculateDirection();
243
244 if (defaults.triggerOnTouchEnd)
245 {
246 phase = PHASE_END;
247 // check to see if more than one finger was used and that there is an ending coordinate
248 if ( (fingerCount == defaults.fingers || !hasTouch) && end.x != 0 )
249 {
250 // if the user swiped more than the minimum length, perform the appropriate action
251 if ( distance >= defaults.threshold )
252 {
253 triggerHandler(event, phase, start, end);
254 touchCancel(event); // reset the variables
255 }
256 else
257 {
258 phase = PHASE_CANCEL;
259 triggerHandler(event, phase, start, end);
260 touchCancel(event);
261 }
262 }
263 else
264 {
265 phase = PHASE_CANCEL;
266 triggerHandler(event, phase, start, end);
267 touchCancel(event);
268 }
269 }
270 else if (phase == PHASE_MOVE)
271 {
272 phase = PHASE_CANCEL;
273 triggerHandler(event, phase, start, end);
274 touchCancel(event);
275 }
276 that.removeEventListener(MOVE_EV, touchMove, false);
277 that.removeEventListener(END_EV, touchEnd, false);
278 }
279
280 /**
281 * Event handler for a touch cancel event.
282 * Clears current vars
283 */
284 function touchCancel(event)
285 {
286 // reset the variables back to default values
287 fingerCount = 0;
288
289 start.x = 0;
290 start.y = 0;
291 end.x = 0;
292 end.y = 0;
293 delta.x = 0;
294 delta.y = 0;
295 }
296
297
298 /**
299 * Trigger the relevant event handler
300 * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, "left", "right", "up", or "down"
301 */
302 // changed by Codrops added start & end
303 function triggerHandler(event, phase, start, end)
304 {
305 //update status
306 if (defaults.swipeStatus)
307 defaults.swipeStatus.call($this,event, phase, start, end, direction || null, distance || 0);
308
309
310 if (phase == PHASE_CANCEL)
311 {
312 if (defaults.click && (fingerCount==1 || !hasTouch) && (isNaN(distance) || distance==0))
313 defaults.click.call($this,event, event.target);
314 }
315
316 if (phase == PHASE_END)
317 {
318 //trigger catch all event handler
319 if (defaults.swipe)
320 {
321
322 defaults.swipe.call($this,event, direction, distance);
323
324 }
325 //trigger direction specific event handlers
326 switch(direction)
327 {
328 case LEFT :
329 if (defaults.swipeLeft)
330 defaults.swipeLeft.call($this,event, direction, distance);
331 break;
332
333 case RIGHT :
334 if (defaults.swipeRight)
335 defaults.swipeRight.call($this,event, direction, distance);
336 break;
337
338 case UP :
339 if (defaults.swipeUp)
340 defaults.swipeUp.call($this,event, direction, distance);
341 break;
342
343 case DOWN :
344 if (defaults.swipeDown)
345 defaults.swipeDown.call($this,event, direction, distance);
346 break;
347 }
348 }
349 }
350
351
352 /**
353 * Checks direction of the swipe and the value allowPageScroll to see if we should allow or prevent the default behaviour from occurring.
354 * This will essentially allow page scrolling or not when the user is swiping on a touchSwipe object.
355 */
356 function validateDefaultEvent(event, direction)
357 {
358 if( defaults.allowPageScroll==NONE )
359 {
360 event.preventDefault();
361 }
362 else
363 {
364 var auto=defaults.allowPageScroll==AUTO;
365
366 switch(direction)
367 {
368 case LEFT :
369 if ( (defaults.swipeLeft && auto) || (!auto && defaults.allowPageScroll!=HORIZONTAL))
370 event.preventDefault();
371 break;
372
373 case RIGHT :
374 if ( (defaults.swipeRight && auto) || (!auto && defaults.allowPageScroll!=HORIZONTAL))
375 event.preventDefault();
376 break;
377
378 case UP :
379 if ( (defaults.swipeUp && auto) || (!auto && defaults.allowPageScroll!=VERTICAL))
380 event.preventDefault();
381 break;
382
383 case DOWN :
384 if ( (defaults.swipeDown && auto) || (!auto && defaults.allowPageScroll!=VERTICAL))
385 event.preventDefault();
386 break;
387 }
388 }
389
390 }
391
392
393
394 /**
395 * Calcualte the length / distance of the swipe
396 */
397 function caluculateDistance()
398 {
399 //return Math.round(Math.sqrt(Math.pow(end.x - start.x,2) + Math.pow(end.y - start.y,2)));
400 return Math.round(Math.abs(end.x - start.x));
401 }
402
403 /**
404 * Calcualte the angle of the swipe
405 */
406 function caluculateAngle()
407 {
408 var X = start.x-end.x;
409 var Y = end.y-start.y;
410 var r = Math.atan2(Y,X); //radians
411 var angle = Math.round(r*180/Math.PI); //degrees
412
413 //ensure value is positive
414 if (angle < 0)
415 angle = 360 - Math.abs(angle);
416
417 return angle;
418 }
419
420 /**
421 * Calcualte the direction of the swipe
422 * This will also call caluculateAngle to get the latest angle of swipe
423 */
424 function caluculateDirection()
425 {
426 var angle = caluculateAngle();
427
428 if ( (angle <= 45) && (angle >= 0) )
429 return LEFT;
430
431 else if ( (angle <= 360) && (angle >= 315) )
432 return LEFT;
433
434 else if ( (angle >= 135) && (angle <= 225) )
435 return RIGHT;
436
437 else if ( (angle > 45) && (angle < 135) )
438 return DOWN;
439
440 else
441 return UP;
442 }
443
444 // added by codrops
445 function calculateDirection()
446 {
447 var dir;
448 if( end.x < lastPositionX ) {
449 dir = LEFT
450 }
451 else if( end.x > lastPositionX ) {
452 dir = RIGHT;
453 }
454 else {
455 dir = UP
456 }
457 return dir;
458 }
459
460 // Add gestures to all swipable areas if supported
461 try
462 {
463
464 this.addEventListener(START_EV, touchStart, false);
465 this.addEventListener(CANCEL_EV, touchCancel);
466 }
467 catch(e)
468 {
469 //touch not supported
470 }
471
472 });
473 };
474
475
476
477
478})(jQuery);
diff --git a/Blocks/Flipboard/js/modernizr.custom.08464.js b/Blocks/Flipboard/js/modernizr.custom.08464.js
new file mode 100644
index 0000000..5325668
--- /dev/null
+++ b/Blocks/Flipboard/js/modernizr.custom.08464.js
@@ -0,0 +1,4 @@
1/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
2 * Build: http://www.modernizr.com/download/#-csstransforms3d-csstransitions-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes-load
3 */
4;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["&#173;","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e});var G=function(a,c){var d=a.join(""),f=c.length;w(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d?d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"":"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.csstransforms3d=(i.csstransforms3d&&i.csstransforms3d.offsetLeft)===9&&i.csstransforms3d.offsetHeight===3},f,c)}([,["@media (",m.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join("")],[,"csstransforms3d"]);q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},q.csstransitions=function(){return F("transition")};for(var H in q)y(q,H)&&(v=H.toLowerCase(),e[v]=q[H](),t.push((e[v]?"":"no-")+v));return z(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))}; \ No newline at end of file
diff --git a/Blocks/For U_files/_notes/dwsync.xml b/Blocks/For U_files/_notes/dwsync.xml
new file mode 100644
index 0000000..bc9aad9
--- /dev/null
+++ b/Blocks/For U_files/_notes/dwsync.xml
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<dwsync>
3<file name="love.png" server="203.124.114.1//blog/" local="130216519716025503" remote="130295604600000000" Dst="0" />
4<file name="life.png" server="203.124.114.1//blog/" local="130216519716035504" remote="130295604600000000" Dst="0" />
5<file name="train.png" server="203.124.114.1//blog/" local="130278528366283935" remote="130295604600000000" Dst="0" />
6<file name="world.png" server="203.124.114.1//blog/" local="130216519716065506" remote="130295604600000000" Dst="0" />
7<file name="time.png" server="203.124.114.1//blog/" local="130216519716075506" remote="130295604600000000" Dst="0" />
8<file name="python.png" server="203.124.114.1//blog/" local="130278523147365430" remote="130295604600000000" Dst="0" />
9</dwsync> \ No newline at end of file
diff --git a/Blocks/For U_files/future.png b/Blocks/For U_files/future.png
new file mode 100644
index 0000000..7722341
--- /dev/null
+++ b/Blocks/For U_files/future.png
Binary files differ
diff --git a/Blocks/For U_files/life.png b/Blocks/For U_files/life.png
new file mode 100644
index 0000000..ebfe8d2
--- /dev/null
+++ b/Blocks/For U_files/life.png
Binary files differ
diff --git a/Blocks/For U_files/love.png b/Blocks/For U_files/love.png
new file mode 100644
index 0000000..7e914b8
--- /dev/null
+++ b/Blocks/For U_files/love.png
Binary files differ
diff --git a/Blocks/For U_files/python.png b/Blocks/For U_files/python.png
new file mode 100644
index 0000000..1ff51c3
--- /dev/null
+++ b/Blocks/For U_files/python.png
Binary files differ
diff --git a/Blocks/For U_files/time.png b/Blocks/For U_files/time.png
new file mode 100644
index 0000000..b4196cd
--- /dev/null
+++ b/Blocks/For U_files/time.png
Binary files differ
diff --git a/Blocks/For U_files/train.png b/Blocks/For U_files/train.png
new file mode 100644
index 0000000..9a668b9
--- /dev/null
+++ b/Blocks/For U_files/train.png
Binary files differ
diff --git a/Blocks/For U_files/world.png b/Blocks/For U_files/world.png
new file mode 100644
index 0000000..f1e1d5d
--- /dev/null
+++ b/Blocks/For U_files/world.png
Binary files differ
diff --git a/Blocks/alphabet.js b/Blocks/alphabet.js
new file mode 100644
index 0000000..d5bcd4d
--- /dev/null
+++ b/Blocks/alphabet.js
@@ -0,0 +1 @@
document.alphabet={A79:{W:75,P:[[64,89,9,-102],[57,103,9,-102],[5,89,9,-79],[16,104,8,-35],[51,122,8,-35],[23,118,8,-35],[31,133,8,50],[46,136,8,50],[34,153,8,69],[28,168,7,112],[21,183,7,112]]},A78:{W:85,P:[[10,148,8,-103],[21,137,8,-92],[33,125,7,-79],[50,124,7,-35],[58,135,7,-35],[68,148,7,-35],[40,111,7,51],[33,103,7,51],[21,86,7,51],[56,106,7,51],[67,92,7,112]]},A77:{W:98,P:[[24,148,10,-102],[67,151,10,-102],[34,133,9,-36],[61,134,9,-36],[76,132,8,-36],[16,130,8,-36],[14,112,7,50],[40,118,7,50],[58,117,7,50],[82,117,7,83],[86,100,7,83],[51,101,7,83],[11,95,7,83]]},A76:{W:70,P:[[12,88,9,-84],[32,138,5,-84],[36,148,9,-84],[44,133,8,-84],[60,84,6,119],[57,96,6,102],[53,107,6,50],[50,120,7,-35],[26,115,7,51],[29,127,6,69],[20,101,8,11]]},A75:{W:75,P:[[58,148,9,-103],[60,128,8,-84],[38,150,8,-35],[21,147,7,-35],[61,109,7,-35],[17,128,7,42],[13,110,7,80],[62,92,7,80],[14,90,7,80]]},A74:{W:68,P:[[33,149,9,-103],[35,130,9,-79],[34,108,9,-36],[33,90,8,5],[48,89,8,50],[14,89,8,56],[34,68,8,112]]},A73:{W:70,P:[[10,143,8,-103],[23,150,8,-92],[44,149,8,-79],[57,135,8,-38],[44,122,8,-35],[25,114,8,39],[17,98,7,39],[33,91,7,56],[45,88,7,102],[57,91,7,102]]},A72:{W:69,P:[[58,105,7,-102],[56,88,8,-35],[42,91,7,51],[29,96,7,91],[16,90,7,91],[18,105,8,37],[17,120,7,-50],[17,134,6,-79],[17,149,8,-102]]},A71:{W:75,P:[[51,182,10,-103],[51,159,9,-79],[55,138,9,-79],[35,149,8,-35],[18,143,7,11],[58,123,7,11],[12,126,7,50],[57,103,7,69],[16,109,6,69],[26,95,6,69],[49,88,6,69],[37,88,6,119]]},A70:{W:77,P:[[15,88,10,-103],[18,108,9,-91],[31,97,9,-50],[18,126,8,-50],[45,96,7,-35],[57,103,7,5],[17,143,7,5],[60,117,7,56],[60,131,7,56],[20,158,7,50],[51,143,7,50],[31,148,6,102],[17,172,6,102],[16,186,5,119]]},A6d:{W:111,P:[[15,148,10,-102],[58,152,10,-102],[98,151,10,-50],[98,134,9,-50],[56,133,9,-50],[15,129,8,11],[94,116,8,11],[56,113,8,11],[14,111,7,51],[15,93,7,51],[25,105,7,51],[55,98,7,51],[89,99,7,83],[77,92,7,112],[36,94,7,112]]},A6e:{W:75,P:[[17,148,10,-92],[62,149,10,-92],[17,125,9,-50],[62,127,9,-35],[61,107,8,29],[23,104,8,69],[15,86,7,69],[36,94,7,69],[55,92,7,69]]},A6f:{W:76,P:[[24,147,10,-103],[46,149,9,-84],[14,129,9,-50],[58,134,8,-35],[18,107,8,29],[61,114,7,51],[56,98,7,51],[31,92,7,102],[45,91,7,102]]},A6a:{W:58,P:[[34,62,10,-92],[35,95,9,-92],[37,117,8,-35],[38,133,8,-35],[37,152,8,37],[36,168,8,56],[29,185,7,56],[14,181,6,112],[6,170,5,119]]},A6b:{W:78,P:[[19,148,8,-84],[20,131,7,-84],[68,149,10,-84],[58,134,8,-84],[50,123,6,-84],[65,83,6,-35],[21,44,7,51],[21,59,6,83],[21,72,5,112],[21,85,6,112],[21,99,6,69],[53,99,5,102],[59,90,6,50],[42,110,10,29],[20,115,7,-35],[31,122,5,5]]},A6c:{W:40,P:[[20,150,10,56],[22,52,10,56],[20,71,9,-35],[21,133,8,-50],[21,88,7,-84],[21,120,6,-103],[20,104,6,-103]]},A68:{W:83,P:[[18,149,10,-102],[69,147,10,-102],[18,131,9,-36],[64,126,8,-36],[65,109,8,-36],[19,109,8,51],[57,93,7,69],[39,94,8,37],[20,89,8,37],[18,69,8,91],[17,52,7,119]]},A69:{W:41,P:[[23,60,10,-92],[22,91,9,-36],[21,111,8,39],[19,130,7,56],[21,148,6,112]]},A64:{W:84,P:[[68,147,10,-103],[45,151,9,-92],[22,145,9,-50],[15,124,8,-50],[17,104,8,39],[29,91,8,39],[46,90,8,39],[59,96,8,-50],[67,129,8,-50],[68,110,8,69],[68,83,7,69],[70,68,7,102],[71,47,7,119]]},A65:{W:79,P:[[16,127,10,-103],[23,145,9,-50],[41,151,8,11],[54,148,7,102],[70,142,6,119],[61,96,7,51],[54,109,7,51],[44,90,8,51],[41,117,8,-50],[27,92,8,-50],[17,107,8,-50]]},A66:{W:73,P:[[29,156,10,-103],[31,136,9,-84],[31,116,9,-50],[30,95,8,-35],[45,93,7,-35],[58,92,7,39],[14,95,7,39],[33,79,7,69],[36,67,7,69],[47,55,7,69],[65,52,6,119]]},A67:{W:76,P:[[61,97,10,-102],[61,118,9,-102],[42,90,9,-79],[24,97,8,-35],[53,137,8,-35],[12,110,8,-35],[40,148,7,29],[26,151,7,42],[11,124,6,56],[13,139,6,83],[60,156,7,-50],[54,172,7,50],[42,185,7,69],[25,187,7,102],[7,183,7,119]]},A61:{W:74,P:[[58,94,8,42],[45,89,7,69],[31,91,7,119],[20,99,7,91],[12,111,7,51],[11,124,8,-35],[29,151,8,-35],[45,149,7,-35],[65,153,6,-35],[57,126,6,-35],[57,112,6,-102],[58,142,8,-102],[15,140,9,-102]]},A62:{W:85,P:[[17,143,8,-102],[31,148,8,-102],[44,152,7,-102],[60,147,6,-36],[67,133,6,-36],[73,116,6,39],[65,98,6,83],[56,90,6,119],[42,89,6,51],[30,93,7,11],[17,102,8,-35],[18,124,10,-72],[17,79,7,51],[17,60,7,51],[17,47,7,102]]},A63:{W:74,P:[[24,142,9,-103],[37,152,8,-38],[54,150,7,50],[66,143,6,56],[14,123,8,-79],[20,106,7,5],[32,92,6,29],[47,88,6,102],[59,94,6,102]]},A7e:{W:86,P:[[13,113,5,-103],[22,103,5,-103],[31,96,5,11],[40,98,5,11],[44,108,5,11],[52,115,7,11],[66,116,7,11],[72,99,9,11]]},A7d:{W:53,P:[[42,115,9,-103],[31,104,7,5],[30,86,7,5],[30,72,7,5],[25,57,7,5],[32,128,7,5],[30,144,7,5],[27,158,7,5],[24,170,7,5],[11,174,5,112],[12,51,5,112]]},A7c:{W:61,P:[[33,41,5,-161],[33,53,5,5],[31,65,5,5],[32,79,5,69],[32,92,5,69],[31,107,5,112],[30,122,5,50],[29,136,5,-50],[28,147,5,-50],[28,159,5,-91],[27,171,5,-91]]},A7b:{W:53,P:[[6,115,10,-50],[20,105,7,-50],[20,89,7,-50],[20,73,7,-50],[22,58,7,-50],[18,126,7,-50],[20,140,7,-50],[21,152,7,-50],[23,166,6,80],[31,172,6,80],[44,172,6,80],[33,49,6,80],[47,49,6,80]]},A7a:{W:77,P:[[19,152,10,-103],[37,150,9,-79],[53,150,8,-35],[31,132,8,-35],[42,121,7,50],[53,109,7,50],[61,92,7,50],[40,89,7,83],[23,89,7,112]]},A4f:{W:114,P:[[40,147,10,-102],[82,142,10,-102],[16,119,9,-72],[63,151,9,-72],[22,136,8,11],[91,122,8,11],[17,96,8,11],[97,108,7,11],[97,89,7,11],[24,78,7,69],[94,71,7,69],[40,66,6,69],[54,60,6,69],[87,60,6,112],[73,59,6,112]]},A4d:{W:126,P:[[38,60,10,-72],[92,59,10,-72],[112,150,8,-72],[83,75,5,-72],[81,87,6,-72],[78,100,6,-72],[74,113,6,-72],[69,128,7,-72],[54,129,7,-72],[50,113,6,-72],[46,100,5,-72],[43,86,6,-72],[31,78,7,-72],[43,74,6,112],[28,94,8,-72],[16,150,10,-72],[20,131,9,51],[23,113,8,69],[103,106,6,119],[100,93,6,56],[104,119,7,83],[108,134,8,39],[97,79,7,50],[61,146,9,112]]},A4e:{W:114,P:[[16,151,8,-91],[19,55,8,-91],[95,59,8,-91],[98,147,8,-91],[98,132,7,-91],[16,133,7,-91],[17,71,7,-91],[100,72,7,5],[101,119,7,5],[103,86,7,5],[17,119,7,5],[84,138,7,5],[74,126,7,5],[32,68,6,56],[37,80,6,56],[45,90,6,56],[63,112,6,56],[101,102,6,56],[17,108,6,112],[54,101,6,112],[18,93,6,112],[16,81,6,112]]},A4b:{W:88,P:[[24,155,9,-92],[78,150,9,-92],[23,135,8,-92],[61,136,8,-92],[46,126,8,-36],[22,117,8,-36],[36,110,8,5],[22,95,7,50],[43,92,7,50],[52,82,7,50],[21,78,7,83],[23,59,7,83],[67,71,7,83],[75,57,7,83]]},A4c:{W:79,P:[[16,152,9,-50],[15,135,8,-50],[16,118,8,-50],[17,86,7,-50],[19,71,6,-50],[18,55,7,-50],[68,145,10,-50],[56,148,9,69],[44,151,7,119],[32,153,7,50],[17,101,7,69]]},A4a:{W:95,P:[[32,55,10,-103],[84,57,9,-84],[49,59,9,-84],[65,58,8,-36],[60,71,8,-36],[60,90,8,11],[61,105,8,11],[55,126,8,50],[54,141,7,56],[46,153,7,56],[28,151,7,112],[14,136,7,112]]},A51:{W:125,P:[[113,176,10,-92],[97,161,9,-92],[82,147,9,-92],[64,133,7,-50],[97,136,7,-50],[62,154,7,-35],[106,120,7,-35],[41,151,6,11],[108,103,6,11],[24,142,6,11],[103,88,6,11],[15,124,6,50],[97,73,6,50],[12,107,6,50],[15,94,6,69],[84,61,6,69],[24,80,6,69],[35,71,5,112],[71,57,5,112],[55,58,5,112],[43,63,5,112]]},A50:{W:75,P:[[49,56,5,-161],[56,65,5,-102],[62,78,5,-102],[34,54,6,-102],[56,93,6,-72],[17,51,6,-72],[17,64,6,-72],[49,100,6,11],[34,104,6,11],[15,78,7,11],[19,96,7,11],[16,111,7,83],[13,125,7,83],[13,140,7,83]]},A53:{W:99,P:[[18,139,8,-84],[32,149,7,-84],[47,150,6,-84],[65,146,6,-84],[79,138,6,50],[86,126,6,50],[81,112,6,50],[69,103,6,102],[58,101,6,102],[44,98,6,102],[30,92,7,50],[29,76,6,5],[42,63,6,5],[56,62,6,-84],[70,60,6,-84],[81,64,6,-84]]},A52:{W:90,P:[[17,148,8,-161],[17,134,7,39],[17,120,8,-72],[18,71,8,-72],[19,57,10,-72],[51,63,8,-72],[64,72,8,-72],[30,114,8,-72],[42,124,5,-72],[54,127,6,-72],[64,134,7,-72],[75,145,8,-72],[73,85,8,51],[70,98,8,119],[59,108,8,83],[46,114,8,56],[18,86,8,102],[18,103,9,51],[35,59,9,11]]},A55:{W:105,P:[[34,145,9,-92],[51,151,8,-92],[20,128,7,-92],[67,145,7,-50],[19,107,7,-35],[80,137,7,37],[86,122,7,37],[18,88,7,37],[89,105,6,80],[19,68,6,80],[88,87,6,80],[91,70,6,119]]},A54:{W:97,P:[[14,57,9,-102],[92,59,9,-102],[54,144,9,-50],[55,125,8,-50],[75,60,7,29],[30,59,7,29],[58,59,6,29],[46,59,6,51],[51,72,6,69],[53,109,6,69],[53,97,6,102],[53,85,6,119]]},A57:{W:148,P:[[45,143,10,-72],[78,62,10,-72],[100,150,10,-72],[137,58,10,-72],[92,133,9,-72],[54,126,9,-72],[37,126,9,-72],[67,81,9,-72],[82,81,8,-72],[59,112,8,-72],[63,97,7,-72],[33,109,7,-72],[87,99,7,-72],[120,104,7,119],[113,120,8,112],[127,90,8,83],[132,76,9,39],[109,134,9,56],[88,118,7,69],[23,76,9,112],[30,91,8,51],[20,58,10,50]]},A56:{W:93,P:[[47,146,10,-72],[38,128,9,-72],[33,111,8,-72],[26,81,8,-72],[22,66,7,-72],[19,54,8,-72],[56,130,8,-72],[86,55,8,-72],[77,70,8,42],[72,85,8,56],[66,100,8,119],[61,115,8,56],[30,96,8,56]]},A59:{W:91,P:[[8,59,9,-102],[77,58,9,-102],[34,151,8,-50],[43,135,8,-50],[71,73,7,5],[18,71,7,5],[25,80,7,50],[63,89,7,50],[34,95,7,50],[48,121,6,102],[57,102,6,102],[39,109,6,102]]},A58:{W:103,P:[[11,149,8,-103],[23,140,8,-103],[87,148,8,-84],[76,134,7,-50],[69,121,7,-50],[34,126,7,-50],[45,114,6,5],[62,109,6,5],[53,99,6,29],[65,92,6,29],[41,86,6,69],[76,77,6,69],[32,78,6,69],[87,64,6,69],[25,64,6,69],[14,57,6,69],[94,55,6,69]]},A5a:{W:99,P:[[15,146,10,-92],[89,148,10,-92],[33,149,9,-92],[52,150,9,-92],[69,150,8,-36],[27,129,8,-36],[38,112,7,11],[47,97,7,11],[57,87,7,56],[67,74,7,56],[79,68,7,56],[91,61,7,119],[15,56,7,-35],[29,58,7,11],[45,60,7,50],[61,58,7,112],[75,55,7,56]]},A5c:{W:79,P:[[19,58,5,-35],[25,67,5,-35],[31,76,6,-35],[35,86,6,-35],[40,95,7,-35],[45,106,6,-35],[48,116,6,-35],[54,125,6,-35],[58,136,5,-35],[63,146,5,-35],[65,152,5,-35]]},A5b:{W:55,P:[[40,57,5,-35],[31,58,5,-35],[20,57,8,-35],[20,72,8,-35],[20,85,8,-35],[20,100,8,-35],[20,115,8,-35],[20,127,8,-35],[19,144,8,-35],[17,160,8,-35],[17,175,8,-35],[29,177,6,-35],[41,176,5,-35]]},A5e:{W:83,P:[[20,70,9,-79],[65,68,9,-79],[33,58,7,50],[52,58,7,50],[42,48,6,112]]},A5d:{W:55,P:[[20,58,5,-35],[30,58,5,-35],[40,58,8,-35],[41,74,8,-35],[41,92,8,-35],[41,109,8,-35],[41,127,8,-35],[41,144,8,-35],[40,159,8,-35],[40,172,8,-35],[27,174,6,-35],[15,175,6,-35]]},A5f:{W:90,P:[[0,172,5,-35],[11,171,5,-35],[21,169,5,-35],[33,172,5,-35],[45,172,5,-35],[55,170,5,-35],[66,172,5,-35],[74,170,5,-35],[85,170,5,-35]]},A46:{W:87,P:[[20,149,9,-103],[20,128,8,-84],[20,108,8,-84],[33,98,8,-36],[20,86,8,-36],[51,96,7,29],[68,98,7,29],[21,63,7,56],[35,54,7,56],[52,54,7,112],[68,53,7,112]]},A47:{W:97,P:[[25,148,8,-103],[61,145,8,-103],[16,109,8,-79],[43,151,8,-79],[15,132,7,-36],[77,132,7,-36],[23,83,7,37],[83,110,7,37],[36,66,6,37],[49,53,6,37],[67,106,6,56],[53,112,6,56],[63,57,6,112],[40,114,6,112],[76,59,6,112]]},A44:{W:103,P:[[19,148,8,-161],[34,154,8,-79],[60,149,8,-36],[80,141,7,-36],[86,123,7,29],[20,128,8,-92],[20,110,8,-92],[21,91,8,-50],[21,73,8,5],[23,57,8,42],[37,63,8,51],[52,70,7,69],[66,78,7,69],[86,109,7,112],[79,90,7,112]]},A45:{W:89,P:[[19,149,10,-102],[18,103,10,-102],[22,55,9,-72],[17,126,9,-72],[20,79,8,5],[36,155,8,5],[38,101,8,5],[40,52,7,50],[54,157,7,50],[53,100,7,50],[56,53,7,91],[71,155,7,91],[70,99,7,91],[73,51,7,91]]},A42:{W:90,P:[[26,56,9,-102],[22,68,5,-102],[23,79,5,-102],[21,92,5,-84],[22,103,6,-50],[20,114,6,-50],[22,125,6,91],[22,137,6,91],[32,104,7,-35],[24,151,7,-35],[48,148,7,-35],[68,115,7,-35],[35,152,6,51],[43,110,6,51],[61,144,6,51],[76,124,6,51],[72,137,9,119],[52,107,9,-79],[66,81,7,80],[66,92,9,11],[42,52,9,42],[64,64,9,-102],[55,54,6,-102]]},A43:{W:86,P:[[77,69,8,-103],[76,56,7,56],[64,60,7,119],[50,61,7,29],[30,78,7,-72],[23,88,7,-35],[17,100,8,-35],[15,116,8,50],[39,69,6,83],[17,131,9,-72],[29,145,9,-72],[46,147,8,29],[61,142,8,83],[72,134,8,-103]]},A40:{W:132,P:[[95,150,7,51],[81,154,8,11],[64,156,9,11],[46,151,9,-79],[29,140,9,-79],[20,123,9,-103],[17,104,9,-103],[19,85,9,50],[28,68,9,56],[41,55,9,80],[58,49,9,112],[75,51,8,119],[91,56,8,91],[104,66,8,51],[113,80,8,50],[113,97,8,5],[107,113,8,-36],[90,118,9,-36],[75,113,7,-36],[68,108,5,5],[60,115,7,-79],[47,114,7,-79],[42,102,7,-103],[47,91,7,-35],[55,81,6,-35],[67,77,8,-103],[76,97,8,-79]]},A41:{W:104,P:[[88,148,10,-102],[29,118,10,-102],[68,57,5,-102],[23,134,8,11],[16,148,8,119],[39,103,8,51],[47,90,7,51],[55,77,7,51],[62,67,6,83],[76,95,5,-35],[77,107,6,-35],[73,83,5,83],[71,71,5,83],[79,121,7,-35],[84,134,8,-50],[65,111,6,-50],[52,114,6,-50]]},A48:{W:110,P:[[16,152,10,-103],[92,148,9,-91],[92,129,9,-91],[18,130,8,-50],[90,109,8,-50],[19,109,8,-50],[33,110,8,11],[53,106,8,11],[70,104,8,11],[94,90,8,51],[95,68,8,51],[18,85,7,102],[22,66,7,102],[22,47,7,102],[95,49,7,102]]},A49:{W:78,P:[[13,152,9,-103],[36,146,9,-84],[53,146,8,11],[68,145,8,11],[35,125,8,-36],[38,105,7,-36],[37,88,7,56],[38,72,7,56],[52,61,7,91],[65,60,7,119],[40,58,7,50],[24,58,6,-72],[12,59,6,-102]]},A33:{W:87,P:[[22,65,10,-35],[16,136,10,-35],[32,100,10,-35],[38,56,8,-35],[54,57,7,-35],[63,67,6,-35],[66,80,6,-35],[57,91,7,-35],[47,99,7,-35],[56,106,7,-35],[64,117,6,-35],[65,129,6,-35],[59,138,7,-35],[49,144,7,-35],[31,144,7,-35]]},A32:{W:87,P:[[69,148,10,-35],[51,149,9,-35],[33,149,9,-35],[14,149,8,-35],[19,133,8,-35],[28,118,8,-35],[42,109,8,-35],[56,100,7,-35],[66,88,7,-35],[68,73,7,-35],[60,57,6,-35],[47,56,6,-35],[34,57,6,-35],[24,65,6,-35],[16,72,6,-35]]},A31:{W:65,P:[[19,149,9,-35],[51,148,9,-35],[39,53,9,-35],[36,147,6,-35],[35,135,6,-35],[34,120,5,-35],[34,109,5,-35],[34,98,6,-35],[35,84,6,-35],[37,69,6,-35],[27,62,6,-35],[19,68,6,-35]]},A30:{W:87,P:[[67,138,10,-102],[48,148,10,-102],[73,117,9,-50],[74,95,9,-50],[22,144,8,11],[69,76,8,11],[15,126,8,11],[12,104,7,56],[58,63,7,56],[13,87,6,56],[46,57,6,56],[20,75,6,112],[27,64,6,112]]},A37:{W:87,P:[[26,152,10,-102],[36,133,9,-102],[47,116,9,-50],[57,100,9,5],[66,86,9,5],[80,70,8,56],[62,65,8,56],[44,63,7,56],[26,64,6,56],[11,64,6,56]]},A36:{W:87,P:[[65,145,10,-79],[46,151,9,-79],[70,127,8,-79],[66,111,8,-79],[26,148,7,-79],[52,100,7,-79],[18,131,7,11],[15,114,7,11],[37,97,7,51],[20,102,7,51],[23,86,7,51],[34,72,7,80],[44,61,7,112],[55,49,7,112]]},A35:{W:87,P:[[21,55,9,-50],[38,56,9,-50],[53,57,9,-50],[69,55,9,-50],[20,71,8,-50],[18,87,8,-50],[18,104,8,-50],[32,95,8,-50],[46,89,7,-50],[57,91,7,50],[64,101,7,50],[71,113,7,83],[69,127,7,83],[61,140,7,83],[49,146,6,83],[34,146,6,83],[22,140,6,83]]},A34:{W:87,P:[[10,117,9,-35],[25,118,9,-35],[39,117,9,-35],[55,117,9,-35],[70,117,9,-35],[61,98,8,-35],[61,78,7,-35],[61,58,7,-35],[46,68,7,-35],[36,82,7,-35],[27,94,7,-35],[61,136,7,-35],[61,149,7,-35]]},A39:{W:87,P:[[69,103,10,-103],[60,122,9,-92],[47,134,8,-50],[33,144,8,-50],[17,155,8,-50],[70,82,8,-50],[48,106,7,51],[64,68,7,51],[53,58,7,51],[34,107,7,51],[21,97,7,51],[17,82,7,51],[38,59,7,51],[26,65,7,51]]},A38:{W:87,P:[[43,98,10,-103],[61,90,8,-103],[58,105,8,-79],[27,107,8,-79],[24,91,7,-36],[67,73,7,-36],[21,75,7,-36],[29,61,7,-36],[58,61,6,102],[46,55,6,102],[17,118,7,37],[67,118,7,37],[69,131,7,37],[16,133,6,56],[66,142,6,56],[23,146,6,56],[33,151,6,56],[57,151,5,119],[46,154,5,119]]},A2a:{W:76,P:[[35,69,9,-103],[44,83,7,-35],[27,83,7,-35],[20,67,7,-35],[36,54,7,-35],[51,67,7,-35],[53,92,5,83],[17,92,5,83],[7,63,5,83],[35,42,5,83],[63,67,5,83]]},A2b:{W:69,P:[[32,109,10,-102],[32,92,6,37],[47,109,6,37],[32,126,6,37],[14,109,6,37],[33,137,6,37],[60,110,6,37],[32,79,6,37],[4,109,6,37]]},A2c:{W:41,P:[[30,150,10,-79],[24,164,7,50],[17,177,6,102]]},A2d:{W:60,P:[[12,118,9,-84],[29,117,8,69],[46,117,6,5]]},A2e:{W:37,P:[[19,152,6,-35]]},A2f:{W:74,P:[[14,154,10,-102],[23,133,9,-72],[34,114,9,5],[42,96,9,5],[50,77,8,83],[59,62,8,83]]},A20:{W:40,P:[]},A21:{W:35,P:[[17,151,9,-35],[18,50,8,-35],[17,67,8,-35],[17,85,7,-35],[18,100,6,-35],[18,114,5,-35],[19,128,5,-35]]},A22:{W:61,P:[[15,51,5,-35],[16,61,5,-35],[14,73,5,-35],[14,85,5,-35],[44,53,5,-35],[43,66,5,-35],[42,77,5,-35],[40,87,5,-35]]},A23:{W:120,P:[[31,120,9,-102],[79,120,9,-102],[90,79,9,-102],[43,80,9,-102],[48,120,7,29],[62,121,7,29],[83,103,7,29],[86,92,7,29],[73,79,7,29],[59,79,7,29],[26,79,7,29],[11,79,7,29],[47,64,7,29],[51,49,7,29],[94,62,7,29],[98,46,7,29],[107,79,7,29],[118,79,7,29],[92,121,7,29],[107,120,7,29],[75,137,7,29],[70,150,7,29],[28,135,7,29],[23,147,7,29],[37,104,7,29],[39,93,7,29],[17,121,7,29],[3,120,7,29]]},A24:{W:99,P:[[21,144,9,-35],[36,150,8,-35],[54,150,8,-35],[71,145,7,-35],[78,133,7,-35],[81,118,6,-35],[73,108,6,-35],[60,102,6,-35],[46,101,7,-35],[31,95,7,-35],[24,80,8,-35],[37,67,8,-35],[52,58,9,-35],[71,61,9,-35],[51,39,6,-35],[52,76,6,-35],[52,88,6,-35],[51,115,6,-35],[51,127,6,-35],[51,138,6,-35],[51,165,6,-35],[51,177,6,-35]]},A26:{W:94,P:[[80,151,10,-103],[68,134,9,11],[58,117,9,11],[48,98,9,11],[39,80,9,11],[32,99,7,91],[20,108,7,91],[11,120,6,91],[10,133,6,91],[17,143,5,91],[27,148,6,56],[40,150,6,-72],[54,147,6,-72],[76,123,6,-72],[81,108,6,-72],[56,81,6,-72],[63,69,5,-92],[60,57,5,-92],[47,52,5,-92],[44,63,5,-92]]},A27:{W:56,P:[[27,72,5,-35],[25,62,5,-35],[27,51,5,-35]]},A28:{W:53,P:[[39,177,10,-35],[41,49,10,-35],[27,63,9,-35],[17,80,8,-35],[25,168,8,-35],[14,152,8,-35],[10,135,7,-35],[10,120,7,-35],[13,93,7,-35],[9,108,7,-35]]},A29:{W:53,P:[[15,179,10,-92],[15,51,10,-92],[29,165,9,-35],[27,63,9,-35],[34,79,9,-35],[37,151,8,56],[41,133,8,56],[41,96,8,56],[44,113,7,119]]},A3c:{W:55,P:[[36,88,5,-35],[28,94,5,-35],[20,100,5,-35],[14,106,5,-35],[10,113,5,-35],[16,116,5,-35],[22,120,5,-35],[30,126,5,-35],[36,133,5,-35]]},A3b:{W:44,P:[[21,91,10,-79],[21,144,8,42],[11,155,6,102]]},A3a:{W:44,P:[[21,134,10,-79],[23,86,10,51]]},A3f:{W:75,P:[[24,150,10,-103],[10,68,9,11],[26,61,8,11],[41,61,8,11],[26,125,8,11],[36,117,7,11],[48,108,7,11],[57,99,6,11],[52,70,6,11],[59,84,6,11]]},A3e:{W:55,P:[[15,83,5,-35],[24,90,5,-35],[31,97,5,-35],[39,105,5,-35],[34,114,5,-35],[26,120,5,-35],[19,125,5,-35],[10,132,5,-35]]},A3d:{W:73,P:[[11,91,9,-50],[27,90,9,-50],[44,90,9,-50],[59,90,9,-50],[11,127,6,69],[21,128,6,69],[33,129,6,69],[44,129,6,69],[53,129,6,69]]}}; \ No newline at end of file
diff --git a/Blocks/audiojs/Bandari-Your Smile.mp3 b/Blocks/audiojs/Bandari-Your Smile.mp3
new file mode 100644
index 0000000..a964060
--- /dev/null
+++ b/Blocks/audiojs/Bandari-Your Smile.mp3
Binary files differ
diff --git a/Blocks/audiojs/Richard .mp3 b/Blocks/audiojs/Richard .mp3
new file mode 100644
index 0000000..365839d
--- /dev/null
+++ b/Blocks/audiojs/Richard .mp3
Binary files differ
diff --git a/Blocks/audiojs/The First Snowflake.mp3 b/Blocks/audiojs/The First Snowflake.mp3
new file mode 100644
index 0000000..fc43528
--- /dev/null
+++ b/Blocks/audiojs/The First Snowflake.mp3
Binary files differ
diff --git a/Blocks/audiojs/audio.min.js b/Blocks/audiojs/audio.min.js
new file mode 100644
index 0000000..e5fde2b
--- /dev/null
+++ b/Blocks/audiojs/audio.min.js
@@ -0,0 +1,24 @@
1(function(h,o,g){var p=function(){for(var b=/audio(.min)?.js.*/,a=document.getElementsByTagName("script"),c=0,d=a.length;c<d;c++){var e=a[c].getAttribute("src");if(b.test(e))return e.replace(b,"")}}();g[h]={instanceCount:0,instances:{},flashSource:' <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="$1" width="1" height="1" name="$1" style="position: absolute; left: -1px;"> <param name="movie" value="$2?playerInstance='+h+'.instances[\'$1\']&datetime=$3"> <param name="allowscriptaccess" value="always"> <embed name="$1" src="$2?playerInstance='+
2h+'.instances[\'$1\']&datetime=$3" width="1" height="1" allowscriptaccess="always"> </object>',settings:{autoplay:false,loop:false,preload:true,imageLocation:p+"player-graphics.gif",swfLocation:p+"audiojs.swf",useFlash:function(){var b=document.createElement("audio");return!(b.canPlayType&&b.canPlayType("audio/mpeg;").replace(/no/,""))}(),hasFlash:function(){if(navigator.plugins&&navigator.plugins.length&&navigator.plugins["Shockwave Flash"])return true;else if(navigator.mimeTypes&&navigator.mimeTypes.length){var b=
3navigator.mimeTypes["application/x-shockwave-flash"];return b&&b.enabledPlugin}else try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash");return true}catch(a){}return false}(),createPlayer:{markup:' <div class="play-pause"> <p class="play"></p> <p class="pause"></p> <p class="loading"></p> <p class="error"></p> </div> <div class="scrubber"> <div class="progress"></div> <div class="loaded"></div> </div> <div class="time"> <em class="played">00:00</em>/<strong class="duration">00:00</strong> </div> <div class="error-message"></div>',
4playPauseClass:"play-pause",scrubberClass:"scrubber",progressClass:"progress",loaderClass:"loaded",timeClass:"time",durationClass:"duration",playedClass:"played",errorMessageClass:"error-message",playingClass:"playing",loadingClass:"loading",errorClass:"error"},css:' .audiojs audio { position: absolute; left: -1px; } .audiojs { width: 460px; height: 36px; background: #404040; overflow: hidden; font-family: monospace; font-size: 12px; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #444), color-stop(0.5, #555), color-stop(0.51, #444), color-stop(1, #444)); background-image: -moz-linear-gradient(center top, #444 0%, #555 50%, #444 51%, #444 100%); -webkit-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); -moz-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); -o-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); } .audiojs .play-pause { width: 25px; height: 40px; padding: 4px 6px; margin: 0px; float: left; overflow: hidden; border-right: 1px solid #000; } .audiojs p { display: none; width: 25px; height: 40px; margin: 0px; cursor: pointer; } .audiojs .play { display: block; } .audiojs .scrubber { position: relative; float: left; width: 280px; background: #5a5a5a; height: 14px; margin: 10px; border-top: 1px solid #3f3f3f; border-left: 0px; border-bottom: 0px; overflow: hidden; } .audiojs .progress { position: absolute; top: 0px; left: 0px; height: 14px; width: 0px; background: #ccc; z-index: 1; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ccc), color-stop(0.5, #ddd), color-stop(0.51, #ccc), color-stop(1, #ccc)); background-image: -moz-linear-gradient(center top, #ccc 0%, #ddd 50%, #ccc 51%, #ccc 100%); } .audiojs .loaded { position: absolute; top: 0px; left: 0px; height: 14px; width: 0px; background: #000; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #222), color-stop(0.5, #333), color-stop(0.51, #222), color-stop(1, #222)); background-image: -moz-linear-gradient(center top, #222 0%, #333 50%, #222 51%, #222 100%); } .audiojs .time { float: left; height: 36px; line-height: 36px; margin: 0px 0px 0px 6px; padding: 0px 6px 0px 12px; border-left: 1px solid #000; color: #ddd; text-shadow: 1px 1px 0px rgba(0, 0, 0, 0.5); } .audiojs .time em { padding: 0px 2px 0px 0px; color: #f9f9f9; font-style: normal; } .audiojs .time strong { padding: 0px 0px 0px 2px; font-weight: normal; } .audiojs .error-message { float: left; display: none; margin: 0px 10px; height: 36px; width: 400px; overflow: hidden; line-height: 36px; white-space: nowrap; color: #fff; text-overflow: ellipsis; -o-text-overflow: ellipsis; -icab-text-overflow: ellipsis; -khtml-text-overflow: ellipsis; -moz-text-overflow: ellipsis; -webkit-text-overflow: ellipsis; } .audiojs .error-message a { color: #eee; text-decoration: none; padding-bottom: 1px; border-bottom: 1px solid #999; white-space: wrap; } .audiojs .play { background: url("$1") -2px -1px no-repeat; } .audiojs .loading { background: url("$1") -2px -31px no-repeat; } .audiojs .error { background: url("$1") -2px -61px no-repeat; } .audiojs .pause { background: url("$1") -2px -91px no-repeat; } .playing .play, .playing .loading, .playing .error { display: none; } .playing .pause { display: block; } .loading .play, .loading .pause, .loading .error { display: none; } .loading .loading { display: block; } .error .time, .error .play, .error .pause, .error .scrubber, .error .loading { display: none; } .error .error { display: block; } .error .play-pause p { cursor: auto; } .error .error-message { display: block; }',
5trackEnded:function(){},flashError:function(){var b=this.settings.createPlayer,a=j(b.errorMessageClass,this.wrapper),c='Missing <a href="http://get.adobe.com/flashplayer/">flash player</a> plugin.';if(this.mp3)c+=' <a href="'+this.mp3+'">Download audio file</a>.';g[h].helpers.removeClass(this.wrapper,b.loadingClass);g[h].helpers.addClass(this.wrapper,b.errorClass);a.innerHTML=c},loadError:function(){var b=this.settings.createPlayer,a=j(b.errorMessageClass,this.wrapper);g[h].helpers.removeClass(this.wrapper,
6b.loadingClass);g[h].helpers.addClass(this.wrapper,b.errorClass);a.innerHTML='Error loading: "'+this.mp3+'"'},init:function(){g[h].helpers.addClass(this.wrapper,this.settings.createPlayer.loadingClass)},loadStarted:function(){var b=this.settings.createPlayer,a=j(b.durationClass,this.wrapper),c=Math.floor(this.duration/60),d=Math.floor(this.duration%60);g[h].helpers.removeClass(this.wrapper,b.loadingClass);a.innerHTML=(c<10?"0":"")+c+":"+(d<10?"0":"")+d},loadProgress:function(b){var a=this.settings.createPlayer,
7c=j(a.scrubberClass,this.wrapper);j(a.loaderClass,this.wrapper).style.width=c.offsetWidth*b+"px"},playPause:function(){this.playing?this.settings.play():this.settings.pause()},play:function(){g[h].helpers.addClass(this.wrapper,this.settings.createPlayer.playingClass)},pause:function(){g[h].helpers.removeClass(this.wrapper,this.settings.createPlayer.playingClass)},updatePlayhead:function(b){var a=this.settings.createPlayer,c=j(a.scrubberClass,this.wrapper);j(a.progressClass,this.wrapper).style.width=
8c.offsetWidth*b+"px";a=j(a.playedClass,this.wrapper);c=this.duration*b;b=Math.floor(c/60);c=Math.floor(c%60);a.innerHTML=(b<10?"0":"")+b+":"+(c<10?"0":"")+c}},create:function(b,a){a=a||{};return b.length?this.createAll(a,b):this.newInstance(b,a)},createAll:function(b,a){var c=a||document.getElementsByTagName("audio"),d=[];b=b||{};for(var e=0,i=c.length;e<i;e++)d.push(this.newInstance(c[e],b));return d},newInstance:function(b,a){var c=this.helpers.clone(this.settings),d="audiojs"+this.instanceCount,
9e="audiojs_wrapper"+this.instanceCount;this.instanceCount++;if(b.getAttribute("autoplay")!=null)c.autoplay=true;if(b.getAttribute("loop")!=null)c.loop=true;if(b.getAttribute("preload")=="none")c.preload=false;a&&this.helpers.merge(c,a);if(c.createPlayer.markup)b=this.createPlayer(b,c.createPlayer,e);else b.parentNode.setAttribute("id",e);e=new g[o](b,c);c.css&&this.helpers.injectCss(e,c.css);if(c.useFlash&&c.hasFlash){this.injectFlash(e,d);this.attachFlashEvents(e.wrapper,e)}else c.useFlash&&!c.hasFlash&&
10this.settings.flashError.apply(e);if(!c.useFlash||c.useFlash&&c.hasFlash)this.attachEvents(e.wrapper,e);return this.instances[d]=e},createPlayer:function(b,a,c){var d=document.createElement("div"),e=b.cloneNode(true);d.setAttribute("class","audiojs");d.setAttribute("className","audiojs");d.setAttribute("id",c);if(e.outerHTML&&!document.createElement("audio").canPlayType){e=this.helpers.cloneHtml5Node(b);d.innerHTML=a.markup;d.appendChild(e);b.outerHTML=d.outerHTML;d=document.getElementById(c)}else{d.appendChild(e);
11d.innerHTML+=a.markup;b.parentNode.replaceChild(d,b)}return d.getElementsByTagName("audio")[0]},attachEvents:function(b,a){if(a.settings.createPlayer){var c=a.settings.createPlayer,d=j(c.playPauseClass,b),e=j(c.scrubberClass,b);g[h].events.addListener(d,"click",function(){a.playPause.apply(a)});g[h].events.addListener(e,"click",function(i){i=i.clientX;var f=this,k=0;if(f.offsetParent){do k+=f.offsetLeft;while(f=f.offsetParent)}a.skipTo((i-k)/e.offsetWidth)});if(!a.settings.useFlash){g[h].events.trackLoadProgress(a);
12g[h].events.addListener(a.element,"timeupdate",function(){a.updatePlayhead.apply(a)});g[h].events.addListener(a.element,"ended",function(){a.trackEnded.apply(a)});g[h].events.addListener(a.source,"error",function(){clearInterval(a.readyTimer);clearInterval(a.loadTimer);a.settings.loadError.apply(a)})}}},attachFlashEvents:function(b,a){a.swfReady=false;a.load=function(c){a.mp3=c;a.swfReady&&a.element.load(c)};a.loadProgress=function(c,d){a.loadedPercent=c;a.duration=d;a.settings.loadStarted.apply(a);
13a.settings.loadProgress.apply(a,[c])};a.skipTo=function(c){if(!(c>a.loadedPercent)){a.updatePlayhead.call(a,[c]);a.element.skipTo(c)}};a.updatePlayhead=function(c){a.settings.updatePlayhead.apply(a,[c])};a.play=function(){if(!a.settings.preload){a.settings.preload=true;a.element.init(a.mp3)}a.playing=true;a.element.pplay();a.settings.play.apply(a)};a.pause=function(){a.playing=false;a.element.ppause();a.settings.pause.apply(a)};a.setVolume=function(c){a.element.setVolume(c)};a.loadStarted=function(){a.swfReady=
14true;a.settings.preload&&a.element.init(a.mp3);a.settings.autoplay&&a.play.apply(a)}},injectFlash:function(b,a){var c=this.flashSource.replace(/\$1/g,a);c=c.replace(/\$2/g,b.settings.swfLocation);c=c.replace(/\$3/g,+new Date+Math.random());var d=b.wrapper.innerHTML,e=document.createElement("div");e.innerHTML=c+d;b.wrapper.innerHTML=e.innerHTML;b.element=this.helpers.getSwf(a)},helpers:{merge:function(b,a){for(attr in a)if(b.hasOwnProperty(attr)||a.hasOwnProperty(attr))b[attr]=a[attr]},clone:function(b){if(b==
15null||typeof b!=="object")return b;var a=new b.constructor,c;for(c in b)a[c]=arguments.callee(b[c]);return a},addClass:function(b,a){RegExp("(\\s|^)"+a+"(\\s|$)").test(b.className)||(b.className+=" "+a)},removeClass:function(b,a){b.className=b.className.replace(RegExp("(\\s|^)"+a+"(\\s|$)")," ")},injectCss:function(b,a){for(var c="",d=document.getElementsByTagName("style"),e=a.replace(/\$1/g,b.settings.imageLocation),i=0,f=d.length;i<f;i++){var k=d[i].getAttribute("title");if(k&&~k.indexOf("audiojs")){f=
16d[i];if(f.innerHTML===e)return;c=f.innerHTML;break}}d=document.getElementsByTagName("head")[0];i=d.firstChild;f=document.createElement("style");if(d){f.setAttribute("type","text/css");f.setAttribute("title","audiojs");if(f.styleSheet)f.styleSheet.cssText=c+e;else f.appendChild(document.createTextNode(c+e));i?d.insertBefore(f,i):d.appendChild(styleElement)}},cloneHtml5Node:function(b){var a=document.createDocumentFragment(),c=a.createElement?a:document;c.createElement("audio");c=c.createElement("div");
17a.appendChild(c);c.innerHTML=b.outerHTML;return c.firstChild},getSwf:function(b){b=document[b]||window[b];return b.length>1?b[b.length-1]:b}},events:{memoryLeaking:false,listeners:[],addListener:function(b,a,c){if(b.addEventListener)b.addEventListener(a,c,false);else if(b.attachEvent){this.listeners.push(b);if(!this.memoryLeaking){window.attachEvent("onunload",function(){if(this.listeners)for(var d=0,e=this.listeners.length;d<e;d++)g[h].events.purge(this.listeners[d])});this.memoryLeaking=true}b.attachEvent("on"+
18a,function(){c.call(b,window.event)})}},trackLoadProgress:function(b){if(b.settings.preload){var a,c;b=b;var d=/(ipod|iphone|ipad)/i.test(navigator.userAgent);a=setInterval(function(){if(b.element.readyState>-1)d||b.init.apply(b);if(b.element.readyState>1){b.settings.autoplay&&b.play.apply(b);clearInterval(a);c=setInterval(function(){b.loadProgress.apply(b);b.loadedPercent>=1&&clearInterval(c)})}},10);b.readyTimer=a;b.loadTimer=c}},purge:function(b){var a=b.attributes,c;if(a)for(c=0;c<a.length;c+=
191)if(typeof b[a[c].name]==="function")b[a[c].name]=null;if(a=b.childNodes)for(c=0;c<a.length;c+=1)purge(b.childNodes[c])},ready:function(){return function(b){var a=window,c=false,d=true,e=a.document,i=e.documentElement,f=e.addEventListener?"addEventListener":"attachEvent",k=e.addEventListener?"removeEventListener":"detachEvent",n=e.addEventListener?"":"on",m=function(l){if(!(l.type=="readystatechange"&&e.readyState!="complete")){(l.type=="load"?a:e)[k](n+l.type,m,false);if(!c&&(c=true))b.call(a,l.type||
20l)}},q=function(){try{i.doScroll("left")}catch(l){setTimeout(q,50);return}m("poll")};if(e.readyState=="complete")b.call(a,"lazy");else{if(e.createEventObject&&i.doScroll){try{d=!a.frameElement}catch(r){}d&&q()}e[f](n+"DOMContentLoaded",m,false);e[f](n+"readystatechange",m,false);a[f](n+"load",m,false)}}}()}};g[o]=function(b,a){this.element=b;this.wrapper=b.parentNode;this.source=b.getElementsByTagName("source")[0]||b;this.mp3=function(c){var d=c.getElementsByTagName("source")[0];return c.getAttribute("src")||
21(d?d.getAttribute("src"):null)}(b);this.settings=a;this.loadStartedCalled=false;this.loadedPercent=0;this.duration=1;this.playing=false};g[o].prototype={updatePlayhead:function(){this.settings.updatePlayhead.apply(this,[this.element.currentTime/this.duration])},skipTo:function(b){if(!(b>this.loadedPercent)){this.element.currentTime=this.duration*b;this.updatePlayhead()}},load:function(b){this.loadStartedCalled=false;this.source.setAttribute("src",b);this.element.load();this.mp3=b;g[h].events.trackLoadProgress(this)},
22loadError:function(){this.settings.loadError.apply(this)},init:function(){this.settings.init.apply(this)},loadStarted:function(){if(!this.element.duration)return false;this.duration=this.element.duration;this.updatePlayhead();this.settings.loadStarted.apply(this)},loadProgress:function(){if(this.element.buffered!=null&&this.element.buffered.length){if(!this.loadStartedCalled)this.loadStartedCalled=this.loadStarted();this.loadedPercent=this.element.buffered.end(this.element.buffered.length-1)/this.duration;
23this.settings.loadProgress.apply(this,[this.loadedPercent])}},playPause:function(){this.playing?this.pause():this.play()},play:function(){/(ipod|iphone|ipad)/i.test(navigator.userAgent)&&this.element.readyState==0&&this.init.apply(this);if(!this.settings.preload){this.settings.preload=true;this.element.setAttribute("preload","auto");g[h].events.trackLoadProgress(this)}this.playing=true;this.element.play();this.settings.play.apply(this)},pause:function(){this.playing=false;this.element.pause();this.settings.pause.apply(this)},
24setVolume:function(b){this.element.volume=b},trackEnded:function(){this.skipTo.apply(this,[0]);this.settings.loop||this.pause.apply(this);this.settings.trackEnded.apply(this)}};var j=function(b,a){var c=[];a=a||document;if(a.getElementsByClassName)c=a.getElementsByClassName(b);else{var d,e,i=a.getElementsByTagName("*"),f=RegExp("(^|\\s)"+b+"(\\s|$)");d=0;for(e=i.length;d<e;d++)f.test(i[d].className)&&c.push(i[d])}return c.length>1?c:c[0]}})("audiojs","audiojsInstance",this);
diff --git a/Blocks/audiojs/audiojs.swf b/Blocks/audiojs/audiojs.swf
new file mode 100644
index 0000000..483599f
--- /dev/null
+++ b/Blocks/audiojs/audiojs.swf
Binary files differ
diff --git a/Blocks/audiojs/player-graphics.gif b/Blocks/audiojs/player-graphics.gif
new file mode 100644
index 0000000..3e4d9d4
--- /dev/null
+++ b/Blocks/audiojs/player-graphics.gif
Binary files differ
diff --git a/Blocks/code.html b/Blocks/code.html
new file mode 100644
index 0000000..40ff107
--- /dev/null
+++ b/Blocks/code.html
@@ -0,0 +1,97 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3<head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>World of Codes</title>
6 <script type="text/javascript" src="syntax/scripts/shCore.js"></script>
7 <script type="text/javascript" src="syntax/scripts/shBrushCpp.js"></script>
8 <link type="text/css" rel="stylesheet" href="syntax/styles/shCoreDefault.css"/>
9 <style type="text/css">
10 body {
11 background-color: #FF0000;
12 background-image: url();
13}
14 </style>
15 <script type="text/javascript">SyntaxHighlighter.all();</script>
16</head>
17
18<body style="background: white; font-family: Helvetica">
19
20<h1>A gift of code</h1>
21<pre class="brush: cpp;">
22/**
23* We are both from Lanxi No.1 Middle School,where we met for the first time
24* I write some code to celebrate your birthday.
25*/
26#include "stdio.h"
27int main()
28{
29 int i,j;
30 for(i=0;i< 9;i++)
31 {
32 if(i==0||i==8)
33 {
34 for(j=0;j< 11;j++)
35 printf("*");
36 }
37 else
38 {
39 for(j=0;j< 11;j++)
40 {
41 if(j< 7 && j>3)
42 printf("*");
43 else
44 printf(" ");
45 }
46 }
47 printf("\n");
48 }
49 for(i=0;i< 2;i++)
50 {
51 for(j=0;j< 2-i;j++)
52 printf(" ");
53 for(j=0;j< 2*i+1;j++)
54 printf("*");
55 for(j=0;j< 5-2*i;j++)
56 printf(" ");
57 for(j=0;j< 2*i+1;j++)
58 printf("*");
59 printf("\n");
60 }
61 printf("***********\n");
62 for(i=0;i< 6;i++)
63 {
64 for(j=0;j< i;j++)
65 printf(" ");
66 for(j=0;j< 11-2*i;j++)
67 printf("*");
68 printf("\n");
69 }
70 for(i=0;i< 5;i++)
71 {
72 for(j=0;j< 11;j++)
73 if((j<=1&&j>=0)||(j<=10&&j>=9))
74 printf("*");
75 else
76 printf(" ");
77 printf("\n");
78 }
79 for(i=0;i< 5;i++)
80 {
81 for(j=0;j< i;j++)
82 printf(" ");
83 printf("**");
84 for(j=0;j< 7-2*i;j++)
85 printf(" ");
86 if(i==4)
87 printf("*");
88 else
89 printf("**\n");
90 }
91 printf("\n");
92 return 0;
93}
94
95
96</pre>
97</html>
diff --git a/Blocks/countdown/audiojs/The First Snowflake.mp3 b/Blocks/countdown/audiojs/The First Snowflake.mp3
new file mode 100644
index 0000000..fc43528
--- /dev/null
+++ b/Blocks/countdown/audiojs/The First Snowflake.mp3
Binary files differ
diff --git a/Blocks/countdown/audiojs/audio.min.js b/Blocks/countdown/audiojs/audio.min.js
new file mode 100644
index 0000000..e5fde2b
--- /dev/null
+++ b/Blocks/countdown/audiojs/audio.min.js
@@ -0,0 +1,24 @@
1(function(h,o,g){var p=function(){for(var b=/audio(.min)?.js.*/,a=document.getElementsByTagName("script"),c=0,d=a.length;c<d;c++){var e=a[c].getAttribute("src");if(b.test(e))return e.replace(b,"")}}();g[h]={instanceCount:0,instances:{},flashSource:' <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="$1" width="1" height="1" name="$1" style="position: absolute; left: -1px;"> <param name="movie" value="$2?playerInstance='+h+'.instances[\'$1\']&datetime=$3"> <param name="allowscriptaccess" value="always"> <embed name="$1" src="$2?playerInstance='+
2h+'.instances[\'$1\']&datetime=$3" width="1" height="1" allowscriptaccess="always"> </object>',settings:{autoplay:false,loop:false,preload:true,imageLocation:p+"player-graphics.gif",swfLocation:p+"audiojs.swf",useFlash:function(){var b=document.createElement("audio");return!(b.canPlayType&&b.canPlayType("audio/mpeg;").replace(/no/,""))}(),hasFlash:function(){if(navigator.plugins&&navigator.plugins.length&&navigator.plugins["Shockwave Flash"])return true;else if(navigator.mimeTypes&&navigator.mimeTypes.length){var b=
3navigator.mimeTypes["application/x-shockwave-flash"];return b&&b.enabledPlugin}else try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash");return true}catch(a){}return false}(),createPlayer:{markup:' <div class="play-pause"> <p class="play"></p> <p class="pause"></p> <p class="loading"></p> <p class="error"></p> </div> <div class="scrubber"> <div class="progress"></div> <div class="loaded"></div> </div> <div class="time"> <em class="played">00:00</em>/<strong class="duration">00:00</strong> </div> <div class="error-message"></div>',
4playPauseClass:"play-pause",scrubberClass:"scrubber",progressClass:"progress",loaderClass:"loaded",timeClass:"time",durationClass:"duration",playedClass:"played",errorMessageClass:"error-message",playingClass:"playing",loadingClass:"loading",errorClass:"error"},css:' .audiojs audio { position: absolute; left: -1px; } .audiojs { width: 460px; height: 36px; background: #404040; overflow: hidden; font-family: monospace; font-size: 12px; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #444), color-stop(0.5, #555), color-stop(0.51, #444), color-stop(1, #444)); background-image: -moz-linear-gradient(center top, #444 0%, #555 50%, #444 51%, #444 100%); -webkit-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); -moz-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); -o-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); } .audiojs .play-pause { width: 25px; height: 40px; padding: 4px 6px; margin: 0px; float: left; overflow: hidden; border-right: 1px solid #000; } .audiojs p { display: none; width: 25px; height: 40px; margin: 0px; cursor: pointer; } .audiojs .play { display: block; } .audiojs .scrubber { position: relative; float: left; width: 280px; background: #5a5a5a; height: 14px; margin: 10px; border-top: 1px solid #3f3f3f; border-left: 0px; border-bottom: 0px; overflow: hidden; } .audiojs .progress { position: absolute; top: 0px; left: 0px; height: 14px; width: 0px; background: #ccc; z-index: 1; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ccc), color-stop(0.5, #ddd), color-stop(0.51, #ccc), color-stop(1, #ccc)); background-image: -moz-linear-gradient(center top, #ccc 0%, #ddd 50%, #ccc 51%, #ccc 100%); } .audiojs .loaded { position: absolute; top: 0px; left: 0px; height: 14px; width: 0px; background: #000; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #222), color-stop(0.5, #333), color-stop(0.51, #222), color-stop(1, #222)); background-image: -moz-linear-gradient(center top, #222 0%, #333 50%, #222 51%, #222 100%); } .audiojs .time { float: left; height: 36px; line-height: 36px; margin: 0px 0px 0px 6px; padding: 0px 6px 0px 12px; border-left: 1px solid #000; color: #ddd; text-shadow: 1px 1px 0px rgba(0, 0, 0, 0.5); } .audiojs .time em { padding: 0px 2px 0px 0px; color: #f9f9f9; font-style: normal; } .audiojs .time strong { padding: 0px 0px 0px 2px; font-weight: normal; } .audiojs .error-message { float: left; display: none; margin: 0px 10px; height: 36px; width: 400px; overflow: hidden; line-height: 36px; white-space: nowrap; color: #fff; text-overflow: ellipsis; -o-text-overflow: ellipsis; -icab-text-overflow: ellipsis; -khtml-text-overflow: ellipsis; -moz-text-overflow: ellipsis; -webkit-text-overflow: ellipsis; } .audiojs .error-message a { color: #eee; text-decoration: none; padding-bottom: 1px; border-bottom: 1px solid #999; white-space: wrap; } .audiojs .play { background: url("$1") -2px -1px no-repeat; } .audiojs .loading { background: url("$1") -2px -31px no-repeat; } .audiojs .error { background: url("$1") -2px -61px no-repeat; } .audiojs .pause { background: url("$1") -2px -91px no-repeat; } .playing .play, .playing .loading, .playing .error { display: none; } .playing .pause { display: block; } .loading .play, .loading .pause, .loading .error { display: none; } .loading .loading { display: block; } .error .time, .error .play, .error .pause, .error .scrubber, .error .loading { display: none; } .error .error { display: block; } .error .play-pause p { cursor: auto; } .error .error-message { display: block; }',
5trackEnded:function(){},flashError:function(){var b=this.settings.createPlayer,a=j(b.errorMessageClass,this.wrapper),c='Missing <a href="http://get.adobe.com/flashplayer/">flash player</a> plugin.';if(this.mp3)c+=' <a href="'+this.mp3+'">Download audio file</a>.';g[h].helpers.removeClass(this.wrapper,b.loadingClass);g[h].helpers.addClass(this.wrapper,b.errorClass);a.innerHTML=c},loadError:function(){var b=this.settings.createPlayer,a=j(b.errorMessageClass,this.wrapper);g[h].helpers.removeClass(this.wrapper,
6b.loadingClass);g[h].helpers.addClass(this.wrapper,b.errorClass);a.innerHTML='Error loading: "'+this.mp3+'"'},init:function(){g[h].helpers.addClass(this.wrapper,this.settings.createPlayer.loadingClass)},loadStarted:function(){var b=this.settings.createPlayer,a=j(b.durationClass,this.wrapper),c=Math.floor(this.duration/60),d=Math.floor(this.duration%60);g[h].helpers.removeClass(this.wrapper,b.loadingClass);a.innerHTML=(c<10?"0":"")+c+":"+(d<10?"0":"")+d},loadProgress:function(b){var a=this.settings.createPlayer,
7c=j(a.scrubberClass,this.wrapper);j(a.loaderClass,this.wrapper).style.width=c.offsetWidth*b+"px"},playPause:function(){this.playing?this.settings.play():this.settings.pause()},play:function(){g[h].helpers.addClass(this.wrapper,this.settings.createPlayer.playingClass)},pause:function(){g[h].helpers.removeClass(this.wrapper,this.settings.createPlayer.playingClass)},updatePlayhead:function(b){var a=this.settings.createPlayer,c=j(a.scrubberClass,this.wrapper);j(a.progressClass,this.wrapper).style.width=
8c.offsetWidth*b+"px";a=j(a.playedClass,this.wrapper);c=this.duration*b;b=Math.floor(c/60);c=Math.floor(c%60);a.innerHTML=(b<10?"0":"")+b+":"+(c<10?"0":"")+c}},create:function(b,a){a=a||{};return b.length?this.createAll(a,b):this.newInstance(b,a)},createAll:function(b,a){var c=a||document.getElementsByTagName("audio"),d=[];b=b||{};for(var e=0,i=c.length;e<i;e++)d.push(this.newInstance(c[e],b));return d},newInstance:function(b,a){var c=this.helpers.clone(this.settings),d="audiojs"+this.instanceCount,
9e="audiojs_wrapper"+this.instanceCount;this.instanceCount++;if(b.getAttribute("autoplay")!=null)c.autoplay=true;if(b.getAttribute("loop")!=null)c.loop=true;if(b.getAttribute("preload")=="none")c.preload=false;a&&this.helpers.merge(c,a);if(c.createPlayer.markup)b=this.createPlayer(b,c.createPlayer,e);else b.parentNode.setAttribute("id",e);e=new g[o](b,c);c.css&&this.helpers.injectCss(e,c.css);if(c.useFlash&&c.hasFlash){this.injectFlash(e,d);this.attachFlashEvents(e.wrapper,e)}else c.useFlash&&!c.hasFlash&&
10this.settings.flashError.apply(e);if(!c.useFlash||c.useFlash&&c.hasFlash)this.attachEvents(e.wrapper,e);return this.instances[d]=e},createPlayer:function(b,a,c){var d=document.createElement("div"),e=b.cloneNode(true);d.setAttribute("class","audiojs");d.setAttribute("className","audiojs");d.setAttribute("id",c);if(e.outerHTML&&!document.createElement("audio").canPlayType){e=this.helpers.cloneHtml5Node(b);d.innerHTML=a.markup;d.appendChild(e);b.outerHTML=d.outerHTML;d=document.getElementById(c)}else{d.appendChild(e);
11d.innerHTML+=a.markup;b.parentNode.replaceChild(d,b)}return d.getElementsByTagName("audio")[0]},attachEvents:function(b,a){if(a.settings.createPlayer){var c=a.settings.createPlayer,d=j(c.playPauseClass,b),e=j(c.scrubberClass,b);g[h].events.addListener(d,"click",function(){a.playPause.apply(a)});g[h].events.addListener(e,"click",function(i){i=i.clientX;var f=this,k=0;if(f.offsetParent){do k+=f.offsetLeft;while(f=f.offsetParent)}a.skipTo((i-k)/e.offsetWidth)});if(!a.settings.useFlash){g[h].events.trackLoadProgress(a);
12g[h].events.addListener(a.element,"timeupdate",function(){a.updatePlayhead.apply(a)});g[h].events.addListener(a.element,"ended",function(){a.trackEnded.apply(a)});g[h].events.addListener(a.source,"error",function(){clearInterval(a.readyTimer);clearInterval(a.loadTimer);a.settings.loadError.apply(a)})}}},attachFlashEvents:function(b,a){a.swfReady=false;a.load=function(c){a.mp3=c;a.swfReady&&a.element.load(c)};a.loadProgress=function(c,d){a.loadedPercent=c;a.duration=d;a.settings.loadStarted.apply(a);
13a.settings.loadProgress.apply(a,[c])};a.skipTo=function(c){if(!(c>a.loadedPercent)){a.updatePlayhead.call(a,[c]);a.element.skipTo(c)}};a.updatePlayhead=function(c){a.settings.updatePlayhead.apply(a,[c])};a.play=function(){if(!a.settings.preload){a.settings.preload=true;a.element.init(a.mp3)}a.playing=true;a.element.pplay();a.settings.play.apply(a)};a.pause=function(){a.playing=false;a.element.ppause();a.settings.pause.apply(a)};a.setVolume=function(c){a.element.setVolume(c)};a.loadStarted=function(){a.swfReady=
14true;a.settings.preload&&a.element.init(a.mp3);a.settings.autoplay&&a.play.apply(a)}},injectFlash:function(b,a){var c=this.flashSource.replace(/\$1/g,a);c=c.replace(/\$2/g,b.settings.swfLocation);c=c.replace(/\$3/g,+new Date+Math.random());var d=b.wrapper.innerHTML,e=document.createElement("div");e.innerHTML=c+d;b.wrapper.innerHTML=e.innerHTML;b.element=this.helpers.getSwf(a)},helpers:{merge:function(b,a){for(attr in a)if(b.hasOwnProperty(attr)||a.hasOwnProperty(attr))b[attr]=a[attr]},clone:function(b){if(b==
15null||typeof b!=="object")return b;var a=new b.constructor,c;for(c in b)a[c]=arguments.callee(b[c]);return a},addClass:function(b,a){RegExp("(\\s|^)"+a+"(\\s|$)").test(b.className)||(b.className+=" "+a)},removeClass:function(b,a){b.className=b.className.replace(RegExp("(\\s|^)"+a+"(\\s|$)")," ")},injectCss:function(b,a){for(var c="",d=document.getElementsByTagName("style"),e=a.replace(/\$1/g,b.settings.imageLocation),i=0,f=d.length;i<f;i++){var k=d[i].getAttribute("title");if(k&&~k.indexOf("audiojs")){f=
16d[i];if(f.innerHTML===e)return;c=f.innerHTML;break}}d=document.getElementsByTagName("head")[0];i=d.firstChild;f=document.createElement("style");if(d){f.setAttribute("type","text/css");f.setAttribute("title","audiojs");if(f.styleSheet)f.styleSheet.cssText=c+e;else f.appendChild(document.createTextNode(c+e));i?d.insertBefore(f,i):d.appendChild(styleElement)}},cloneHtml5Node:function(b){var a=document.createDocumentFragment(),c=a.createElement?a:document;c.createElement("audio");c=c.createElement("div");
17a.appendChild(c);c.innerHTML=b.outerHTML;return c.firstChild},getSwf:function(b){b=document[b]||window[b];return b.length>1?b[b.length-1]:b}},events:{memoryLeaking:false,listeners:[],addListener:function(b,a,c){if(b.addEventListener)b.addEventListener(a,c,false);else if(b.attachEvent){this.listeners.push(b);if(!this.memoryLeaking){window.attachEvent("onunload",function(){if(this.listeners)for(var d=0,e=this.listeners.length;d<e;d++)g[h].events.purge(this.listeners[d])});this.memoryLeaking=true}b.attachEvent("on"+
18a,function(){c.call(b,window.event)})}},trackLoadProgress:function(b){if(b.settings.preload){var a,c;b=b;var d=/(ipod|iphone|ipad)/i.test(navigator.userAgent);a=setInterval(function(){if(b.element.readyState>-1)d||b.init.apply(b);if(b.element.readyState>1){b.settings.autoplay&&b.play.apply(b);clearInterval(a);c=setInterval(function(){b.loadProgress.apply(b);b.loadedPercent>=1&&clearInterval(c)})}},10);b.readyTimer=a;b.loadTimer=c}},purge:function(b){var a=b.attributes,c;if(a)for(c=0;c<a.length;c+=
191)if(typeof b[a[c].name]==="function")b[a[c].name]=null;if(a=b.childNodes)for(c=0;c<a.length;c+=1)purge(b.childNodes[c])},ready:function(){return function(b){var a=window,c=false,d=true,e=a.document,i=e.documentElement,f=e.addEventListener?"addEventListener":"attachEvent",k=e.addEventListener?"removeEventListener":"detachEvent",n=e.addEventListener?"":"on",m=function(l){if(!(l.type=="readystatechange"&&e.readyState!="complete")){(l.type=="load"?a:e)[k](n+l.type,m,false);if(!c&&(c=true))b.call(a,l.type||
20l)}},q=function(){try{i.doScroll("left")}catch(l){setTimeout(q,50);return}m("poll")};if(e.readyState=="complete")b.call(a,"lazy");else{if(e.createEventObject&&i.doScroll){try{d=!a.frameElement}catch(r){}d&&q()}e[f](n+"DOMContentLoaded",m,false);e[f](n+"readystatechange",m,false);a[f](n+"load",m,false)}}}()}};g[o]=function(b,a){this.element=b;this.wrapper=b.parentNode;this.source=b.getElementsByTagName("source")[0]||b;this.mp3=function(c){var d=c.getElementsByTagName("source")[0];return c.getAttribute("src")||
21(d?d.getAttribute("src"):null)}(b);this.settings=a;this.loadStartedCalled=false;this.loadedPercent=0;this.duration=1;this.playing=false};g[o].prototype={updatePlayhead:function(){this.settings.updatePlayhead.apply(this,[this.element.currentTime/this.duration])},skipTo:function(b){if(!(b>this.loadedPercent)){this.element.currentTime=this.duration*b;this.updatePlayhead()}},load:function(b){this.loadStartedCalled=false;this.source.setAttribute("src",b);this.element.load();this.mp3=b;g[h].events.trackLoadProgress(this)},
22loadError:function(){this.settings.loadError.apply(this)},init:function(){this.settings.init.apply(this)},loadStarted:function(){if(!this.element.duration)return false;this.duration=this.element.duration;this.updatePlayhead();this.settings.loadStarted.apply(this)},loadProgress:function(){if(this.element.buffered!=null&&this.element.buffered.length){if(!this.loadStartedCalled)this.loadStartedCalled=this.loadStarted();this.loadedPercent=this.element.buffered.end(this.element.buffered.length-1)/this.duration;
23this.settings.loadProgress.apply(this,[this.loadedPercent])}},playPause:function(){this.playing?this.pause():this.play()},play:function(){/(ipod|iphone|ipad)/i.test(navigator.userAgent)&&this.element.readyState==0&&this.init.apply(this);if(!this.settings.preload){this.settings.preload=true;this.element.setAttribute("preload","auto");g[h].events.trackLoadProgress(this)}this.playing=true;this.element.play();this.settings.play.apply(this)},pause:function(){this.playing=false;this.element.pause();this.settings.pause.apply(this)},
24setVolume:function(b){this.element.volume=b},trackEnded:function(){this.skipTo.apply(this,[0]);this.settings.loop||this.pause.apply(this);this.settings.trackEnded.apply(this)}};var j=function(b,a){var c=[];a=a||document;if(a.getElementsByClassName)c=a.getElementsByClassName(b);else{var d,e,i=a.getElementsByTagName("*"),f=RegExp("(^|\\s)"+b+"(\\s|$)");d=0;for(e=i.length;d<e;d++)f.test(i[d].className)&&c.push(i[d])}return c.length>1?c:c[0]}})("audiojs","audiojsInstance",this);
diff --git a/Blocks/countdown/audiojs/audiojs.swf b/Blocks/countdown/audiojs/audiojs.swf
new file mode 100644
index 0000000..483599f
--- /dev/null
+++ b/Blocks/countdown/audiojs/audiojs.swf
Binary files differ
diff --git a/Blocks/countdown/audiojs/player-graphics.gif b/Blocks/countdown/audiojs/player-graphics.gif
new file mode 100644
index 0000000..3e4d9d4
--- /dev/null
+++ b/Blocks/countdown/audiojs/player-graphics.gif
Binary files differ
diff --git a/Blocks/countdown/css/countdown.css b/Blocks/countdown/css/countdown.css
new file mode 100644
index 0000000..21974f8
--- /dev/null
+++ b/Blocks/countdown/css/countdown.css
@@ -0,0 +1,13 @@
1/* ---------- DEMO TIMER CONTAINER ---------- */
2.timerArea {text-align: center;padding: 5em 0 0;display:block;position:relative;height:180px;clear:both;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}
3.timerArea h1 {color: white}
4
5/* ---------- DEFAULT SKIN---------- */
6ul.countdown_default {display:block;position:relative;margin:0 auto;width:425px;height:100%}
7ul.countdown_default li {display: block;background: transparent url('images/timer-piece.png') no-repeat left top;width: 104px;margin-bottom: 4em;text-align: center;position:relative;float:left;}
8ul.countdown_default li span {font-size: 3em;font-weight: bold;color: #1f2225;height: 108px;line-height: 108px;position: relative}
9ul.countdown_default li span::before {content: '';width: 100%;height: 1px;position: absolute;top: 31px}
10ul.countdown_default li p.timeRefDays,
11ul.countdown_default li p.timeRefHours,
12ul.countdown_default li p.timeRefMinutes,
13ul.countdown_default li p.timeRefSeconds {margin-top: 1em;color: #909091;text-transform: uppercase;font-size: .875em} \ No newline at end of file
diff --git a/Blocks/countdown/index.html b/Blocks/countdown/index.html
new file mode 100644
index 0000000..6644fb0
--- /dev/null
+++ b/Blocks/countdown/index.html
@@ -0,0 +1,68 @@
1<!DOCTYPE html>
2<html>
3<head>
4
5<title>Countdown</title>
6<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
7<link rel="stylesheet" type="text/css" href="css/countdown.css"/>
8<script type="text/javascript" src="js/jquery-1.10.2.js"></script>
9<script type="text/javascript" src="js/jquery.knob.min.js"></script>
10<script type="text/javascript" src="js/countdown.min.js"></script>
11
12</head>
13<body>
14
15 <div id='countdown_knob' class='timerArea' ></div>
16
17
18 <script>
19 $(document).ready(function() {
20 $("#countdown_def").countdown(
21 {
22 dateEnd:'11/30/2013 00:00:00',
23 format:true,
24 callback:function(){alert('Happy Birthday to U')}
25 },
26 {
27 timezone:false,
28 offset:0
29 }
30 );
31
32 $("#countdown_knob").countdown(
33 {
34 skin: 'knob',
35 option:{
36 global:{thickness:0.1},
37 day:{thickness:0.2},
38 hour:{thickness:0.4},
39 second:{thickness:.0}
40 },
41 dateEnd:'05/03/2014 02:00:00',
42 dateStart:'11/30/2013 00:00:00',
43 format:true,
44 callback:function(){alert('Tiga!')}
45 },
46 {
47 timezone:true,
48 offset:6
49 }
50 );
51 });
52 </script>
53<div style="text-align:center;clear:both"><br><br>
54 <br>
55 <img src="waiting.png" width="557" height="158"><br><br>
56
57</div>
58
59
60<!-- jinwei.me Baidu tongji analytics -->
61<script type="text/javascript">
62var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
63document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
64</script>
65
66</body>
67
68</html> \ No newline at end of file
diff --git a/Blocks/countdown/js/countdown.min.js b/Blocks/countdown/js/countdown.min.js
new file mode 100644
index 0000000..72a3164
--- /dev/null
+++ b/Blocks/countdown/js/countdown.min.js
@@ -0,0 +1,14 @@
1/*!jQuery Professional Countdown*/
2/**
3 * Simple COuntdown with callback and Time Zone Support
4 *
5 * Version: 1.0.1 (16/11/2013)
6 * Requires: jQuery v1.7+
7 *
8 * Where applicable: Copyright (c) 2013 Luca Grandi
9 * Under MIT:
10 * http://www.opensource.org/licenses/mit-license.php
11 *
12 *
13 */
14(function(b){function n(){var b=document.createElement("canvas");return!(!b.getContext||!b.getContext("2d"))}b.fn.countdown=function(d,p){function q(){currentDate=Math.floor(((new Date).getTime()-e.offset)/1E3);f<currentDate?(null!=a.callback&&a.callback.call(this),"undefined"!=typeof r&&clearInterval(r)):(seconds=f-currentDate,days=Math.floor(seconds/86400),seconds-=86400*days,hours=Math.floor(seconds/3600),seconds-=3600*hours,minutes=Math.floor(seconds/60),seconds-=60*minutes,"knob"!=a.skin?(0!= a.format&&(days=2<=String(days).length?days:"0"+days,hours=2<=String(hours).length?hours:"0"+hours,minutes=2<=String(minutes).length?minutes:"0"+minutes,seconds=2<=String(seconds).length?seconds:"0"+seconds),g.text(days),h.text(hours),k.text(minutes),l.text(seconds),1==days?g.parent().children(".timeRefDays").text("Day"):g.parent().children(".timeRefDays").text("Days"),1==hours?h.parent().children(".timeRefHours").text("Hour"):h.parent().children(".timeRefHours").text("Hours"),1==minutes?k.parent().children(".timeRefMinutes").text("Minute"): k.parent().children(".timeRefMinutes").text("Minutes"),1==seconds?l.parent().children(".timeRefSeconds").text("Second"):l.parent().children(".timeRefSeconds").text("Seconds")):(g.val(days).trigger("change"),h.val(hours).trigger("change"),k.val(minutes).trigger("change"),l.val(seconds).trigger("change")))}var a={skin:"countdown_default",fallbackSkin:"countdown_default",option:{day:{max:null,eClass:"days"},hour:{max:23,eClass:"hours"},minute:{max:59,eClass:"minutes"},second:{max:59,eClass:"seconds"}}, dateStart:null,dateEnd:null,format:!0,callback:null},e={timezone:!1,offset:0};d&&b.extend(!0,a,d);p&&b.extend(!0,e,p);var f=(new Date(a.dateEnd)).getTime()/1E3,m=(new Date(a.dateStart)).getTime()/1E3,c=(new Date).getTime();if(isNaN(f))alert("Invalid or null dateEnd mm/dd/yyyy. Example: 12/25/2013 17:30:00"),b(this).append("Invalid or null date mm/dd/yyyy. Example: 12/25/2013 17:30:00");else if("knob"!=a.skin||null!=m&&!isNaN(m))if(m>c)alert("Starting date is greater than the current date"),b(this).append("Starting date is greater than the current date"); else{!0==e.timezone&&(e.offset=36E5*parseInt(e.offset)+6E4*(new Date).getTimezoneOffset());c=b(this);"undefined"!=typeof d.option&&"undefined"==typeof d.option.global&&(d.option.global={});a.option.day=b.extend(!0,{},a.option.global,a.option.day);a.option.hour=b.extend(!0,{},a.option.global,a.option.hour);a.option.minute=b.extend(!0,{},a.option.global,a.option.minute);a.option.second=b.extend(!0,{},a.option.global,a.option.second);"knob"==a.skin.toLowerCase()&&n?(a.skin=a.skin.toLowerCase(),c.append('<input class="'+ a.option.day.eClass+'" type="text" value="0" data-readonly="true" /><input class="'+a.option.hour.eClass+'" type="text" value="0" data-readonly="true" /><input class="'+a.option.minute.eClass+'" type="text" value="0" data-readonly="true" /><input class="'+a.option.second.eClass+'" type="text" value="0" data-readonly="true" />'),a.option.day.eClass="."+a.option.day.eClass.split(" ").join("."),a.option.hour.eClass="."+a.option.hour.eClass.split(" ").join("."),a.option.minute.eClass="."+a.option.minute.eClass.split(" ").join("."), a.option.second.eClass="."+a.option.second.eClass.split(" ").join("."),a.option.day.max=Math.floor((f-m)/86400),c.find(a.option.day.eClass).knob(a.option.day),c.find(a.option.hour.eClass).knob(a.option.hour),c.find(a.option.minute.eClass).knob(a.option.minute),c.find(a.option.second.eClass).knob(a.option.second)):("knob"==a.skin.toLowerCase()||n?c.append('<ul class="'+a.skin+'" ><li><span class="'+a.option.day.eClass+'">00</span><p class="timeRefDays">Days</p></li><li><span class="'+a.option.hour.eClass+ '">00</span><p class="timeRefHours">Hours</p></li><li><span class="'+a.option.minute.eClass+'">00</span><p class="timeRefMinutes">Minutes</p></li><li><span class="'+a.option.second.eClass+'">00</span><p class="timeRefSeconds">Seconds</p></li></ul>'):(a.skin=a.fallbackSkin,c.html('<ul class="'+a.skin+'"><li><span class="'+a.option.day.eClass+'">00</span><p class="timeRefDays">Days</p></li><li><span class="'+a.option.hour.eClass+'">00</span><p class="timeRefHours">Hours</p></li><li><span class="'+a.option.minute.eClass+ '">00</span><p class="timeRefMinutes">Minutes</p></li><li><span class="'+a.option.second.eClass+'">00</span><p class="timeRefSeconds">Seconds</p></li></ul>')),a.option.day.eClass="."+a.option.day.eClass.split(" ").join("."),a.option.hour.eClass="."+a.option.hour.eClass.split(" ").join("."),a.option.minute.eClass="."+a.option.minute.eClass.split(" ").join("."),a.option.second.eClass="."+a.option.second.eClass.split(" ").join("."));var g=c.find(a.option.day.eClass),h=c.find(a.option.hour.eClass),k= c.find(a.option.minute.eClass),l=c.find(a.option.second.eClass);q();if(f>(new Date).getTime()/1E3)var r=setInterval(function(){q()},1E3)}else alert("Invalid or null dateStart mm/dd/yyyy. Example: 12/25/2013 17:30:00"),b(this).append("Invalid or null dateStart mm/dd/yyyy. Example: 12/25/2013 17:30:00")}})(jQuery); \ No newline at end of file
diff --git a/Blocks/countdown/js/jquery-1.10.2.js b/Blocks/countdown/js/jquery-1.10.2.js
new file mode 100644
index 0000000..da41706
--- /dev/null
+++ b/Blocks/countdown/js/jquery-1.10.2.js
@@ -0,0 +1,6 @@
1/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
2//@ sourceMappingURL=jquery-1.10.2.min.map
3*/
4(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}: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},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?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},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.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+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===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]||at.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]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.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"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
5}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
6u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},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)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/Blocks/countdown/js/jquery.knob.min.js b/Blocks/countdown/js/jquery.knob.min.js
new file mode 100644
index 0000000..103fa51
--- /dev/null
+++ b/Blocks/countdown/js/jquery.knob.min.js
@@ -0,0 +1,15 @@
1/*!jQuery Knob*/
2/**
3 * Downward compatible, touchable dial
4 *
5 * Version: 1.2.0 (15/07/2012)
6 * Requires: jQuery v1.7+
7 *
8 * Copyright (c) 2012 Anthony Terrien
9 * Under MIT and GPL licenses:
10 * http://www.opensource.org/licenses/mit-license.php
11 * http://www.gnu.org/licenses/gpl.html
12 *
13 * Thanks to vor, eskimoblood, spiffistan, FabrizioC
14 */
15(function(f){var g,m,n,k=Math.max,l=Math.min;g={};g.d=f(document);g.t=function(a){return a.originalEvent.touches.length-1};m=function(){var a=this;this.cv=this.v=this.g=this.i=this.$=this.o=null;this.h=this.w=this.y=this.x=0;this.c=this.$c=null;this.t=0;this.isInit=!1;this.rH=this.eH=this.cH=this.dH=this.pColor=this.fgColor=null;this.scale=1;this.relativeHeight=this.relativeWidth=this.relative=!1;this.$div=null;this.run=function(){var b=function(b,d){for(var e in d)a.o[e]=d[e];a.init();a._configure()._draw()}; if(!this.$.data("kontroled")){this.$.data("kontroled",!0);this.extend();this.o=f.extend({min:this.$.data("min")||0,max:this.$.data("max")||100,stopper:!0,readOnly:this.$.data("readonly")||"readonly"==this.$.attr("readonly"),cursor:!0===this.$.data("cursor")&&30||this.$.data("cursor")||0,thickness:this.$.data("thickness")&&Math.max(Math.min(this.$.data("thickness"),1),0.01)||0.35,lineCap:this.$.data("linecap")||"butt",width:this.$.data("width")||200,height:this.$.data("height")||200,displayInput:null== this.$.data("displayinput")||this.$.data("displayinput"),displayPrevious:this.$.data("displayprevious"),fgColor:this.$.data("fgcolor")||"#87CEEB",inputColor:this.$.data("inputcolor"),font:this.$.data("font")||"Arial",fontWeight:this.$.data("font-weight")||"bold",inline:!1,step:this.$.data("step")||1,draw:null,change:null,cancel:null,release:null,error:null},this.o);this.o.inputColor||(this.o.inputColor=this.o.fgColor);this.$.is("fieldset")?(this.v={},this.i=this.$.find("input"),this.i.each(function(b){var d= f(this);a.i[b]=d;a.v[b]=d.val();d.bind("change",function(){var e={};e[b]=d.val();a.val(e)})}),this.$.find("legend").remove()):(this.i=this.$,this.v=this.$.val(),""==this.v&&(this.v=this.o.min),this.$.bind("change",function(){a.val(a._validate(a.$.val()))}));!this.o.displayInput&&this.$.hide();this.$c=f(document.createElement("canvas"));"undefined"!==typeof G_vmlCanvasManager&&G_vmlCanvasManager.initElement(this.$c[0]);if(this.c=this.$c[0].getContext?this.$c[0].getContext("2d"):null)return this.scale= (window.devicePixelRatio||1)/(this.c.webkitBackingStorePixelRatio||this.c.mozBackingStorePixelRatio||this.c.msBackingStorePixelRatio||this.c.oBackingStorePixelRatio||this.c.backingStorePixelRatio||1),this.relativeWidth=0!==this.o.width%1&&this.o.width.indexOf("%"),this.relativeHeight=0!==this.o.height%1&&this.o.height.indexOf("%"),this.relative=this.relativeWidth||this.relativeHeight,this.$div=f('<div style="'+(this.o.inline?"display:inline;text-align:center;":"")+'"></div>'),this.$.wrap(this.$div).before(this.$c), this.$div=this.$.parent(),this._carve(),this.v instanceof Object?(this.cv={},this.copy(this.v,this.cv)):this.cv=this.v,this.$.bind("configure",b).parent().bind("configure",b),this._listen()._configure()._xy().init(),this.isInit=!0,this._draw(),this;this.o.error&&this.o.error()}};this._carve=function(){if(this.relative){var a=this.relativeWidth?this.$div.parent().width()*parseInt(this.o.width)/100:this.$div.parent().width(),c=this.relativeHeight?this.$div.parent().height()*parseInt(this.o.height)/ 100:this.$div.parent().height();this.w=this.h=Math.min(a,c)}else this.w=this.o.width,this.h=this.o.height;this.$div.css({width:this.w+"px",height:this.h+"px"});this.$c.attr({width:this.w,height:this.h});1!==this.scale&&(this.$c[0].width*=this.scale,this.$c[0].height*=this.scale,this.$c.width(this.w),this.$c.height(this.h));return this};this._draw=function(){var b=!0;a.g=a.c;a.clear();a.dH&&(b=a.dH());!1!==b&&a.draw()};this._touch=function(b){var c=function(b){b=a.xy2val(b.originalEvent.touches[a.t].pageX, b.originalEvent.touches[a.t].pageY);b==a.cv||a.cH&&!1===a.cH(b)||(a.change(a._validate(b)),a._draw())};this.t=g.t(b);c(b);g.d.bind("touchmove.k",c).bind("touchend.k",function(){g.d.unbind("touchmove.k touchend.k");a.rH&&!1===a.rH(a.cv)||a.val(a.cv)});return this};this._mouse=function(b){var c=function(b){b=a.xy2val(b.pageX,b.pageY);b==a.cv||a.cH&&!1===a.cH(b)||(a.change(a._validate(b)),a._draw())};c(b);g.d.bind("mousemove.k",c).bind("keyup.k",function(b){27===b.keyCode&&(g.d.unbind("mouseup.k mousemove.k keyup.k"), a.eH&&!1===a.eH()||a.cancel())}).bind("mouseup.k",function(b){g.d.unbind("mousemove.k mouseup.k keyup.k");a.rH&&!1===a.rH(a.cv)||a.val(a.cv)});return this};this._xy=function(){var a=this.$c.offset();this.x=a.left;this.y=a.top;return this};this._listen=function(){this.o.readOnly?this.$.attr("readonly","readonly"):(this.$c.bind("mousedown",function(b){b.preventDefault();a._xy()._mouse(b)}).bind("touchstart",function(b){b.preventDefault();a._xy()._touch(b)}),this.listen());this.relative&&f(window).resize(function(){a._carve().init(); a._draw()});return this};this._configure=function(){this.o.draw&&(this.dH=this.o.draw);this.o.change&&(this.cH=this.o.change);this.o.cancel&&(this.eH=this.o.cancel);this.o.release&&(this.rH=this.o.release);this.o.displayPrevious?(this.pColor=this.h2rgba(this.o.fgColor,"0.4"),this.fgColor=this.h2rgba(this.o.fgColor,"0.6")):this.fgColor=this.o.fgColor;return this};this._clear=function(){this.$c[0].width=this.$c[0].width};this._validate=function(a){return~~((0>a?-0.5:0.5)+a/this.o.step)*this.o.step}; this.listen=function(){};this.extend=function(){};this.init=function(){};this.change=function(a){};this.val=function(a){};this.xy2val=function(a,c){};this.draw=function(){};this.clear=function(){this._clear()};this.h2rgba=function(a,c){var d;a=a.substring(1,7);d=[parseInt(a.substring(0,2),16),parseInt(a.substring(2,4),16),parseInt(a.substring(4,6),16)];return"rgba("+d[0]+","+d[1]+","+d[2]+","+c+")"};this.copy=function(a,c){for(var d in a)c[d]=a[d]}};n=function(){m.call(this);this.w2=this.cursorExt= this.lineWidth=this.radius=this.xy=this.startAngle=null;this.PI2=2*Math.PI;this.extend=function(){this.o=f.extend({bgColor:this.$.data("bgcolor")||"#EEEEEE",angleOffset:this.$.data("angleoffset")||0,angleArc:this.$.data("anglearc")||360,inline:!0},this.o)};this.val=function(a){if(null!=a)this.v=this.cv=this.o.stopper?k(l(a,this.o.max),this.o.min):a,this.$.val(this.v),this._draw();else return this.v};this.xy2val=function(a,b){var c;c=Math.atan2(a-(this.x+this.w2),-(b-this.y-this.w2))-this.angleOffset; this.angleArc!=this.PI2&&0>c&&-0.5<c?c=0:0>c&&(c+=this.PI2);c=~~(0.5+c*(this.o.max-this.o.min)/this.angleArc)+this.o.min;this.o.stopper&&(c=k(l(c,this.o.max),this.o.min));return c};this.listen=function(){var a=this,b=function(b){b.preventDefault();var c=b.originalEvent;b=c.detail||c.wheelDeltaX;c=c.detail||c.wheelDeltaY;b=parseInt(a.$.val())+(0<b||0<c?a.o.step:0>b||0>c?-a.o.step:0);a.cH&&!1===a.cH(b)||a.val(b)},c,d,e=1,g={37:-a.o.step,38:a.o.step,39:a.o.step,40:-a.o.step};this.$.bind("keydown",function(b){var h= b.keyCode;96<=h&&105>=h&&(h=b.keyCode=h-48);c=parseInt(String.fromCharCode(h));isNaN(c)&&(13!==h&&8!==h&&9!==h&&189!==h&&b.preventDefault(),-1<f.inArray(h,[37,38,39,40])&&(b.preventDefault(),b=parseInt(a.$.val())+g[h]*e,a.o.stopper&&(b=k(l(b,a.o.max),a.o.min)),a.change(b),a._draw(),d=window.setTimeout(function(){e*=2},30)))}).bind("keyup",function(b){isNaN(c)?d&&(window.clearTimeout(d),d=null,e=1,a.val(a.$.val())):a.$.val()>a.o.max&&a.$.val(a.o.max)||a.$.val()<a.o.min&&a.$.val(a.o.min)});this.$c.bind("mousewheel DOMMouseScroll", b);this.$.bind("mousewheel DOMMouseScroll",b)};this.init=function(){if(this.v<this.o.min||this.v>this.o.max)this.v=this.o.min;this.$.val(this.v);this.w2=this.w/2;this.cursorExt=this.o.cursor/100;this.xy=this.w2*this.scale;this.lineWidth=this.xy*this.o.thickness;this.lineCap=this.o.lineCap;this.radius=this.xy-this.lineWidth/2;this.o.angleOffset&&(this.o.angleOffset=isNaN(this.o.angleOffset)?0:this.o.angleOffset);this.o.angleArc&&(this.o.angleArc=isNaN(this.o.angleArc)?this.PI2:this.o.angleArc);this.angleOffset= this.o.angleOffset*Math.PI/180;this.angleArc=this.o.angleArc*Math.PI/180;this.startAngle=1.5*Math.PI+this.angleOffset;this.endAngle=1.5*Math.PI+this.angleOffset+this.angleArc;var a=k(String(Math.abs(this.o.max)).length,String(Math.abs(this.o.min)).length,2)+2;this.o.displayInput&&this.i.css({width:(this.w/2+4>>0)+"px",height:(this.w/3>>0)+"px",position:"absolute","vertical-align":"middle","margin-top":(this.w/3>>0)+"px","margin-left":"-"+(3*this.w/4+2>>0)+"px",border:0,background:"none",font:this.o.fontWeight+ " "+(this.w/a>>0)+"px "+this.o.font,"text-align":"center",color:this.o.inputColor||this.o.fgColor,padding:"0px","-webkit-appearance":"none"})||this.i.css({width:"0px",visibility:"hidden"})};this.change=function(a){this.cv=a;this.$.val(a)};this.angle=function(a){return(a-this.o.min)*this.angleArc/(this.o.max-this.o.min)};this.draw=function(){var a=this.g,b=this.angle(this.cv),c=this.startAngle,b=c+b,d,e;d=1;a.lineWidth=this.lineWidth;a.lineCap=this.lineCap;this.o.cursor&&(c=b-this.cursorExt)&&(b+= this.cursorExt);a.beginPath();a.strokeStyle=this.o.bgColor;a.arc(this.xy,this.xy,this.radius,this.endAngle,this.startAngle,!0);a.stroke();this.o.displayPrevious&&(e=this.startAngle+this.angle(this.v),d=this.startAngle,this.o.cursor&&(d=e-this.cursorExt)&&(e+=this.cursorExt),a.beginPath(),a.strokeStyle=this.pColor,a.arc(this.xy,this.xy,this.radius,d,e,!1),a.stroke(),d=this.cv==this.v);a.beginPath();a.strokeStyle=d?this.o.fgColor:this.fgColor;a.arc(this.xy,this.xy,this.radius,c,b,!1);a.stroke()};this.cancel= function(){this.val(this.v)}};f.fn.dial=f.fn.knob=function(a){return this.each(function(){var b=new n;b.o=a;b.$=f(this);b.run()}).parent()}})(jQuery); \ No newline at end of file
diff --git a/Blocks/countdown/js/jquery.min.js b/Blocks/countdown/js/jquery.min.js
new file mode 100644
index 0000000..7c24308
--- /dev/null
+++ b/Blocks/countdown/js/jquery.min.js
@@ -0,0 +1,154 @@
1/*!
2 * jQuery JavaScript Library v1.4.2
3 * http://jquery.com/
4 *
5 * Copyright 2010, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2010, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Sat Feb 13 22:33:48 2010 -0500
15 */
16(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
17e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
18j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
19"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
20true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
21Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
22(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
23a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
24"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
25function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
26c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
27L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
28"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
29a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
30d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
31a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
32!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
33true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
34var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
35parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
36false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
37s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
38applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
39else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
40a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
41w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
42cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
43i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
44" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
45this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
46e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
47c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
48a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
49function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
50k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
51C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
52null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
53e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
54f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
55if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
56fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
57d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
58"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
59a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
60isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
61{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
62if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
63e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
64"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
65d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
66!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
67toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
68u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
69function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
70if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
71e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
72t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
73g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
74for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
751)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
76CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
77relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
78l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
79h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
80CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
81g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
82text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
83setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
84h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
85m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
86"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
87h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
88!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
89h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
90q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
91if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
92(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
93function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
94gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
95c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
96{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
97"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
98d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
99a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1001&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
101a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
102c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
103wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
104prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
105this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
106return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
107""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
108this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
109u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1101?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
111return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
112""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
113c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
114c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
115function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
116Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
117"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
118a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
119a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
120"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
121serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
122function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
123global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
124e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
125"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
126false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
127false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
128c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
129d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
130g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1311223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
132"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
133if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
134this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
135"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
136animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
137j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
138this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
139"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
140c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
141this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
142this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
143e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
144c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
145function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
146this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
147k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
148f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
149a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
150c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
151d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
152f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
153"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
154e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/Blocks/countdown/js/lrtk.js b/Blocks/countdown/js/lrtk.js
new file mode 100644
index 0000000..04fa8c8
--- /dev/null
+++ b/Blocks/countdown/js/lrtk.js
@@ -0,0 +1,130 @@
1$(window).load(function(){
2
3 // We are listening to the window.load event, so we can be sure
4 // that the images in the slideshow are loaded properly.
5
6
7 // Testing wether the current browser supports the canvas element:
8 var supportCanvas = 'getContext' in document.createElement('canvas');
9
10 // The canvas manipulations of the images are CPU intensive,
11 // this is why we are using setTimeout to make them asynchronous
12 // and improve the responsiveness of the page.
13
14 var slides = $('#slideshow li'),
15 current = 0,
16 slideshow = {width:0,height:0};
17
18 setTimeout(function(){
19
20 window.console && window.console.time && console.time('Generated In');
21
22 if(supportCanvas){
23 $('#slideshow img').each(function(){
24
25 if(!slideshow.width){
26 // Taking the dimensions of the first image:
27 slideshow.width = this.width;
28 slideshow.height = this.height;
29 }
30
31 // Rendering the modified versions of the images:
32 createCanvasOverlay(this);
33 });
34 }
35
36 window.console && window.console.timeEnd && console.timeEnd('Generated In');
37
38 $('#slideshow .arrow').click(function(){
39 var li = slides.eq(current),
40 canvas = li.find('canvas'),
41 nextIndex = 0;
42
43 // Depending on whether this is the next or previous
44 // arrow, calculate the index of the next slide accordingly.
45
46 if($(this).hasClass('next')){
47 nextIndex = current >= slides.length-1 ? 0 : current+1;
48 }
49 else {
50 nextIndex = current <= 0 ? slides.length-1 : current-1;
51 }
52
53 var next = slides.eq(nextIndex);
54
55 if(supportCanvas){
56
57 // This browser supports canvas, fade it into view:
58
59 canvas.fadeIn(function(){
60
61 // Show the next slide below the current one:
62 next.show();
63 current = nextIndex;
64
65 // Fade the current slide out of view:
66 li.fadeOut(function(){
67 li.removeClass('slideActive');
68 canvas.hide();
69 next.addClass('slideActive');
70 });
71 });
72 }
73 else {
74
75 // This browser does not support canvas.
76 // Use the plain version of the slideshow.
77
78 current=nextIndex;
79 next.addClass('slideActive').show();
80 li.removeClass('slideActive').hide();
81 }
82 });
83
84 },100);
85
86 // This function takes an image and renders
87 // a version of it similar to the Overlay blending
88 // mode in Photoshop.
89
90 function createCanvasOverlay(image){
91
92 var canvas = document.createElement('canvas'),
93 canvasContext = canvas.getContext("2d");
94
95 // Make it the same size as the image
96 canvas.width = slideshow.width;
97 canvas.height = slideshow.height;
98
99 // Drawing the default version of the image on the canvas:
100 canvasContext.drawImage(image,0,0);
101
102
103 // Taking the image data and storing it in the imageData array:
104 var imageData = canvasContext.getImageData(0,0,canvas.width,canvas.height),
105 data = imageData.data;
106
107 // Loop through all the pixels in the imageData array, and modify
108 // the red, green, and blue color values.
109
110 for(var i = 0,z=data.length;i<z;i++){
111
112 // The values for red, green and blue are consecutive elements
113 // in the imageData array. We modify the three of them at once:
114
115 data[i] = ((data[i] < 128) ? (2*data[i]*data[i] / 255) : (255 - 2 * (255 - data[i]) * (255 - data[i]) / 255));
116 data[++i] = ((data[i] < 128) ? (2*data[i]*data[i] / 255) : (255 - 2 * (255 - data[i]) * (255 - data[i]) / 255));
117 data[++i] = ((data[i] < 128) ? (2*data[i]*data[i] / 255) : (255 - 2 * (255 - data[i]) * (255 - data[i]) / 255));
118
119 // After the RGB elements is the alpha value, but we leave it the same.
120 ++i;
121 }
122
123 // Putting the modified imageData back to the canvas.
124 canvasContext.putImageData(imageData,0,0);
125
126 // Inserting the canvas in the DOM, before the image:
127 image.parentNode.insertBefore(canvas,image);
128 }
129
130});
diff --git a/Blocks/countdown/something.png b/Blocks/countdown/something.png
new file mode 100644
index 0000000..f571c4a
--- /dev/null
+++ b/Blocks/countdown/something.png
Binary files differ
diff --git a/Blocks/countdown/waiting.png b/Blocks/countdown/waiting.png
new file mode 100644
index 0000000..0b54f92
--- /dev/null
+++ b/Blocks/countdown/waiting.png
Binary files differ
diff --git a/Blocks/demo/2(3).jpg b/Blocks/demo/2(3).jpg
new file mode 100644
index 0000000..47e2927
--- /dev/null
+++ b/Blocks/demo/2(3).jpg
Binary files differ
diff --git a/Blocks/demo/bg.jpg b/Blocks/demo/bg.jpg
new file mode 100644
index 0000000..45a85e9
--- /dev/null
+++ b/Blocks/demo/bg.jpg
Binary files differ
diff --git a/Blocks/demo/cartedeParis1.html b/Blocks/demo/cartedeParis1.html
new file mode 100644
index 0000000..a7268ea
--- /dev/null
+++ b/Blocks/demo/cartedeParis1.html
@@ -0,0 +1,159 @@
1<!DOCTYPE html>
2<html >
3<head>
4<title>Paris</title>
5 <meta charset="utf-8" />
6<style>
7body, div, h1,h2, form, fieldset, input, textarea, footer,p {
8 margin: 0; padding: 0; border: 0; outline: none;
9}
10@font-face {
11 font-family: 'DeibiRegular';
12 src: url('deibi-webfont.eot');
13 src: url('deibi-webfont.eot?#iefix') format('embedded-opentype'),
14 url('deibi-webfont.woff') format('woff'),
15 url('deibi-webfont.ttf') format('truetype'),
16 url('deibi-webfont.svg#DeibiRegular') format('svg');
17 font-weight: normal;
18 font-style: normal;}
19
20body, html {background: #f2f2f2; font-family:'DeibiRegular', Helvetica, Arial, sans-serif;}
21
22#wrap {
23 background: url('images/clouds1000.png') repeat-x, url('images/clouds1200_1.png') repeat-x 0 0, url('images/Paris_sky.jpg') 0 0;
24 width: 600px;
25 height: 680px;
26 overflow: hidden;
27 display: block;
28 position: relative;
29 margin: 0px auto;
30 border: 0px solid #fff;
31 -webkit-box-shadow: 0 0 20px #bababa;
32 -moz-box-shadow: 0 0 20px #bababa;
33 box-shadow: 0 0 20px #bababa;
34 -webkit-border-radius: 10px;
35 -moz-border-radius: 10px;
36 border-radius: 10px;
37 -webkit-animation: wind 30s linear infinite;
38 -moz-animation: wind 80s linear infinite;
39 }
40
41 #eiffel {position:absolute; background: url('images/Paris_eiffel.png') no-repeat ; width:240px; height:462px; right:10px; top: 180px; }
42
43 #sparkling1 { position:absolute; background: url('images/sparkling1.png') no-repeat; width:240px; height:462px; opacity:0;
44 -webkit-animation: sparkling .4s .2s infinite;-moz-animation: sparkling .4s .2s infinite; }
45
46
47 #sparkling2 { position:absolute;background: url('images/sparkling2.png') no-repeat; width:240px; height:462px; opacity:0;
48 -webkit-animation: sparkling .4s infinite; -moz-animation: sparkling .4s linear infinite; }
49
50 #eiffel_wrap {position:absolute; width:240px; height:462px; right:10px; top: 180px;opacity:0;
51 -webkit-animation: eiffel_wrap 30s 1s infinite; -moz-animation: eiffel_wrap 30s 1s infinite; }
52
53
54 #roofs {width: 600px; height: 900px; position:relative;
55 background: url('images/clouds1200_2.png') repeat-x left 200px, url('images/Paris_roofs.png') repeat-x left bottom ;
56 -webkit-animation: wind1 70s linear infinite; -moz-animation: wind1 70s linear infinite;}
57
58 #phare {position:absolute; background: url('images/phare.png'); width:130px; height:510px; right:64px; top: 185px; opacity:0;
59 -webkit-transform-origin: center top; -webkit-animation: phare 15s linear infinite;
60 -moz-transform-origin: center top; -moz-animation: phare 15s linear infinite;}
61
62h1 {position:absolute; top: 180px; left:45px; text-shadow: 0 4px 5px #8c8c8C;color: #f2f2f2; font-size:48px;}
63h1 em {font-style:normal; font-size: 60px;}
64footer {position:absolute; bottom: 10px; right: 10px;font-size:14px;color: #838383;}
65
66 @-webkit-keyframes wind {
67 0% {background-position: 0px 200px,0px 350px, left top;}
68 50% {background-position: 500px 40px,600px 450px, left top;}
69 100% {background-position: 1000px 200px,1200px 350px, left top}
70 }
71
72 @-moz-keyframes wind {
73 0% {background-position: 0px 200px,0px 350px, left top;}
74 50% {background-position: 500px 40px,600px 450px, left top;}
75 100% {background-position: 1000px 200px,1200px 350px, left top}
76 }
77
78 @-webkit-keyframes wind1 {
79 0% {background-position: 100px 250px, left bottom;}
80 50% {background-position: 650px 150px, left bottom;}
81 100% {background-position: 1300px 250px, left bottom}
82 }
83
84 @-moz-keyframes wind1 {
85 0% {background-position: 100px 250px, left bottom;}
86 50% {background-position: 650px 150px, left bottom;}
87 100% {background-position: 1300px 250px, left bottom}
88 }
89
90 @-webkit-keyframes sparkling {
91 0% {opacity:0;}
92 50%{opacity:1;}
93 100% {opacity:0;}
94 }
95
96 @-moz-keyframes sparkling {
97 0% {opacity:0;}
98 50%{opacity:1;}
99 100% {opacity:0;}
100 }
101
102 @-webkit-keyframes eiffel_wrap {
103 0% {opacity:1;-webkit-animation-timing-function: steps(1);}
104 40%{opacity:0;}
105 100% {opacity:0;}
106 }
107
108
109
110 @-moz-keyframes eiffel_wrap {
111 0% {opacity:1;-moz-animation-timing-function: steps(1);}
112 40%{opacity:0;}
113 100% {opacity:0;}
114 }
115
116 @-webkit-keyframes phare {
117 0% { -webkit-transform:rotate(0deg); opacity:0 }
118 40% { -webkit-transform:rotate(144deg); opacity:.2 }
119 50% { -webkit-transform:rotate(180deg); opacity:1 }
120 60% { -webkit-transform:rotate(216deg); opacity:.2 }
121 100% { -webkit-transform:rotate(360deg); opacity:0; }
122 }
123
124 @-moz-keyframes phare {
125 0% { -moz-transform:rotate(0deg); opacity:0 }
126 40% { -moz-transform:rotate(144deg); opacity:.2 }
127 50% { -moz-transform:rotate(180deg); opacity:1 }
128 60% { -moz-transform:rotate(216deg); opacity:.2 }
129 100% { -moz-transform:rotate(360deg); opacity:0; }
130 }
131
132
133body,td,th {
134 font-family: DeibiRegular, Helvetica, Arial, sans-serif;
135}
136</style>
137</head>
138
139<body>
140 <div id="wrap">
141 <h1>Happy Birthday <em>Tiga !</em></h1>
142 <div id="phare"></div>
143 <div id="eiffel"></div>
144 <div id="eiffel_wrap">
145 <div id="sparkling1"></div>
146 <div id="sparkling2"></div>
147 </div>
148 <div id="roofs"></div>
149 <footer>by Jinwei, Paris 2013</footer>
150</div>
151
152<!-- jinwei.me Baidu tongji analytics -->
153<script type="text/javascript">
154var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
155document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
156</script>
157
158</body>
159</html> \ No newline at end of file
diff --git a/Blocks/demo/deibi-webfont.eot b/Blocks/demo/deibi-webfont.eot
new file mode 100644
index 0000000..f8fd431
--- /dev/null
+++ b/Blocks/demo/deibi-webfont.eot
Binary files differ
diff --git a/Blocks/demo/deibi-webfont.svg b/Blocks/demo/deibi-webfont.svg
new file mode 100644
index 0000000..6022466
--- /dev/null
+++ b/Blocks/demo/deibi-webfont.svg
@@ -0,0 +1,213 @@
1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3<svg xmlns="http://www.w3.org/2000/svg">
4<metadata>
5This is a custom SVG webfont generated by Font Squirrel.
6Copyright : Generated in 2009 by FontLab Studio Copyright info pending
7</metadata>
8<defs>
9<font id="DeibiRegular" horiz-adv-x="1024" >
10<font-face units-per-em="2048" ascent="1536" descent="-512" />
11<missing-glyph horiz-adv-x="507" />
12<glyph unicode=" " horiz-adv-x="507" />
13<glyph unicode="&#x09;" horiz-adv-x="507" />
14<glyph unicode="&#xa0;" horiz-adv-x="507" />
15<glyph unicode="!" horiz-adv-x="333" d="M131 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430q0 -18 -2 -193.5t-5 -350.5t-3 -179zM133 2l84 -4l-4 188q-18 -2 -38 -3t-38 1z" />
16<glyph unicode="&#x22;" horiz-adv-x="561" d="M27 1149q3 -5 12 -5q22 0 78 30q78 43 86 141l-78 10v24v48q0 33 -1 53t-3 20l40 -2l85 -4l43 -2q-14 -203 -58 -280q-18 -35 -68 -62.5t-91 -38.5l-41 -10zM250 1149q3 -5 12 -5q22 0 78 30q78 43 86 141l-78 10v25v47q0 33 -1 53t-3 20l40 -2l85 -4l43 -2 q-14 -203 -57 -280q-18 -35 -68.5 -62.5t-91.5 -38.5l-41 -10z" />
17<glyph unicode="$" horiz-adv-x="915" d="M59 1167q0 84 32 145.5t84 93.5t102.5 47t103.5 20q23 2 76 2v65h18l37 -4h20q0 -31 -2 -70q160 -23 232 -104q37 -43 53 -102.5t19 -96.5l2 -39l-91 -8q1 13 1 25q0 90 -52 153q-59 72 -164 97q-3 -169 -3 -240q0 -35 1 -45q0 -90 -6 -322q121 -80 200 -146.5 t116 -139.5q43 -84 48 -169q1 -11 1 -22q0 -73 -29 -136q-33 -73 -121 -124t-223 -63v-101h-12q-8 0 -23.5 -1t-25.5 -1l-11 2v99q-4 0 -8 -1t-8 -1q-78 0 -137.5 20t-95 54t-59 74t-33 80t-13.5 73.5t-2 54.5v20l76 -6q0 -37 8 -78t30.5 -94t75 -90t127.5 -41q12 -2 39 -2 v138q0 79 -1 135.5t-1 62.5q0 188 2 356q-96 63 -144 99t-114.5 95.5t-95.5 117t-29 118.5zM150 1155q0 -55 47 -113.5t99 -99.5t148 -104q0 219 5 252q0 10 1 60t3 125t2 126h-18q-38 0 -76 -7q-48 -8 -100 -31.5t-82 -76.5q-29 -50 -29 -121v-10zM514 47q129 8 213 76 q80 66 80 211v14q-2 90 -77 168t-210 170q0 -61 -2 -127.5t-3 -104.5t-1 -40v-367z" />
18<glyph unicode="%" horiz-adv-x="817" d="M0 2q2 6 187.5 328.5t197.5 353.5q8 23 93 211l165 365l82 176h24q21 0 46 -2h22q-336 -698 -360.5 -782.5t-360.5 -653.5q-86 0 -96 4zM66 1251.5q0 71.5 42 121.5t101 50t103 -51t44 -120.5t-44 -121t-103 -51.5t-101 50.5t-42 122zM135 1253q0 -41 21.5 -69.5 t52.5 -28.5t51.5 28.5t20.5 69.5t-20.5 71t-51.5 30t-52.5 -30t-21.5 -71zM446 174q0 72 42 122t101.5 50t103.5 -51t44 -121t-44 -121t-103.5 -51t-101.5 50t-42 122zM516 176q0 -41 21.5 -69.5t52.5 -28.5t51.5 28.5t20.5 69.5t-20.5 70.5t-51.5 29.5t-52.5 -29.5 t-21.5 -70.5z" />
19<glyph unicode="&#x26;" horiz-adv-x="1167" d="M86 289q0 131 91 239.5t255 227.5q-147 180 -188 254q-39 68 -43 147v18q0 68 25 129q30 70 110 117t199 47q195 0 271.5 -86t76.5 -260q0 -55 -24.5 -106t-81 -102.5t-98.5 -83t-126 -89.5l338 -413q100 123 164 241l75 -22q-74 -137 -192 -277l184 -223l-43 -57 l-192 221q-219 -229 -426 -236h-14q-361 0 -361 314zM174 291q0 -78 25.5 -130t72.5 -75t89.5 -29t97.5 -6q184 2 381 215l-357 426q-147 -100 -228 -193t-81 -208zM281 1159q1 -64 38 -117q23 -37 183 -237l78 58l68 52q48 37 66 57l44 50q26 31 35.5 57.5t9.5 53.5 q0 145 -63 209q-60 59 -187 59h-16q-82 -2 -142.5 -38t-87.5 -88q-27 -49 -27 -109q0 -4 1 -7z" />
20<glyph unicode="'" horiz-adv-x="385" d="M61 1149q3 -5 12 -5q22 0 79 30q78 43 86 141l-78 10v25v47q0 33 -1 53t-3 20l40 -2l85 -4l43 -2q-14 -203 -58 -280q-18 -35 -68.5 -62.5t-91.5 -38.5l-40 -10z" />
21<glyph unicode="(" horiz-adv-x="739" d="M111 469q0 104 17 253.5t44 223.5q141 412 463 412l4 -86q-45 -6 -74.5 -13.5t-78 -28t-92.5 -65.5t-83 -112q-49 -84 -79.5 -262.5t-30.5 -323.5q0 -158 75.5 -347.5t133.5 -244.5q45 -43 66.5 -59.5t81.5 -32.5q48 -13 117 -13q17 0 36 1v-78q-12 0 -52 -1 q-21 -1 -34 -1t-19 1q-12 1 -47 3t-50 8l-45 17q-30 12 -48 28l-45 40q-27 24 -50.5 56.5t-48.5 73.5q-63 104 -112 263t-49 288z" />
22<glyph unicode=")" horiz-adv-x="761" d="M78 -229q18 -1 36 -1q68 0 117 13q60 16 81.5 32.5t66.5 59.5q57 55 133 244.5t76 347.5q0 145 -31 323.5t-80 262.5q-39 68 -83 112.5t-92 65t-77.5 28t-74.5 13.5l4 86q322 0 462 -412q27 -74 44.5 -223.5t17.5 -253.5q0 -129 -49 -287.5t-113 -263.5q-29 -47 -57 -82 l-50 -60q-22 -24 -57 -40.5t-49 -24.5t-56 -13l-50 -6q-5 -1 -20 -1t-41 1q-52 1 -58 1q-1 39 -1 58.5t1 19.5z" />
23<glyph unicode="*" horiz-adv-x="598" d="M27 784l204 154l-198 160l43 59q4 -4 172 -133q0 176 4 209l80 4q0 -2 -4 -227l186 139l47 -57q-6 -4 -34 -27l-76 -58l-91 -69l195 -152l-45 -67q-16 10 -186 145q0 -53 -2.5 -109.5t-3.5 -89t-1 -34.5l-73 -2q0 109 2 219q-133 -102 -166 -125z" />
24<glyph unicode="+" horiz-adv-x="700" d="M31 735q72 0 258 -6q0 47 1 113.5t2 101.5t1 43l80 4q0 -74 -6 -264q203 -6 270 -6l2 -74q-141 0 -274 2q-6 -199 -7 -264l-73 -2q0 137 2 268q-45 0 -110.5 1t-99.5 2t-42 1z" />
25<glyph unicode="," horiz-adv-x="483" d="M80 -162q2 -5 11 -5q21 0 79 28q78 43 86 141l-78 10v24v48q0 33 -1 53.5t-3 20.5l40 -2l85 -4l43 -2q-14 -203 -57 -281q-18 -35 -68.5 -62.5t-91.5 -37.5l-41 -11z" />
26<glyph unicode="-" horiz-adv-x="677" d="M31 735q18 0 164.5 -3t291 -7t150.5 -4l2 -74q-440 0 -604 8z" />
27<glyph unicode="." horiz-adv-x="374" d="M94 14l12 146l148 -6v-152z" />
28<glyph unicode="/" horiz-adv-x="935" d="M47 2q2 6 202 319.5t212 344.5q8 23 87 215l152 372l72 183h25q20 0 43 -2h24q-307 -717 -332 -801q-10 -37 -107 -195l-189 -299l-93 -141q-86 0 -96 4z" />
29<glyph unicode="0" horiz-adv-x="1155" d="M51 702q0 139 64 347q51 172 180 277.5t283 105.5q166 0 294.5 -124t190.5 -329q41 -133 41 -277q0 -117 -35 -248.5t-72 -185.5q-100 -141 -198.5 -217t-220.5 -76q-238 0 -398 254q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 240 -93 q184 0 312 187.5t128 455.5q0 141 -58.5 292t-117.5 220q-111 133 -264 134q-201 0 -328 -191q-113 -168 -113 -455z" />
30<glyph unicode="1" horiz-adv-x="499" d="M20 1319q0 -2 84 50l111 69v2l18 -2h37l21 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-245h174l3 -60l-338 -16q-20 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708q0 10 2 70.5t4 143.5t2 136l-166 -92q-2 4 -5 12.5t-9 23.5t-10 26z" />
31<glyph unicode="2" horiz-adv-x="796" d="M2 8l6 84q25 18 65 51t144.5 130.5t184 190.5t148 213t75.5 216q2 31 2 60q0 85 -17 155q-24 94 -66 144.5t-85 76t-84 27.5h-11q-43 0 -111 -14q-77 -15 -130 -31l-55 -17l-5 11l-11 22l-11 22q-4 9 -2 7l31 14q31 14 79 30.5t107 29.5q39 9 81 9q21 0 43 -2 q66 -7 125.5 -36t111 -102.5t79.5 -184.5q17 -74 17 -144q0 -44 -7 -86q-16 -110 -66 -212.5t-116.5 -191.5t-140.5 -160.5t-135.5 -124t-100.5 -80.5l-41 -27l670 2l-6 -90q-4 4 -385 6z" />
32<glyph unicode="3" horiz-adv-x="825" d="M43 113l4 18q4 16 6 33l4 18q207 -98 244 -104q16 -2 46 -3h13q28 0 70 3q53 4 101.5 26.5t91.5 59.5t64 108q12 44 12 97q0 34 -5 71q-25 193 -239 219q-27 3 -52 3t-47 -3v97h29q18 0 64.5 15t82 46t64.5 102.5t29 174.5q0 115 -55.5 176t-134.5 66q-25 2 -49 2 q-54 0 -108 -8q-77 -11 -133 -32l-55 -20q-27 59 -33 63q206 94 349 94q147 0 227 -100q37 -45 57 -110q23 -74 25 -143v-16q0 -58 -12 -102q-15 -49 -38.5 -92t-50 -70.5t-51 -47t-39.5 -29.5l-16 -8q10 0 28.5 -2t63.5 -17.5t81 -41t67.5 -82t35.5 -134.5q1 -19 1 -38 q0 -137 -65 -235q-75 -110 -178 -150q-76 -29 -150 -29q-28 0 -56 4q-39 6 -76 15t-65.5 20.5t-54 23.5t-43 22.5t-31 20.5t-17.5 15z" />
33<glyph unicode="4" horiz-adv-x="944" d="M29 524l651 910v6l18 -2h39l19 -2v-4h4l-4 -9q-2 -31 -4 -210q-1 -89 -1 -141t1 -66q0 -57 -9 -431q240 -12 250 -18l-6 -76q-125 12 -246 19q0 -43 -1 -89t-2 -71t-1 -27v-245h174l2 -60l-338 -16q-18 2 -36 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 109 2 223 q-45 2 -79 2t-57 -2l-444 -49zM123 528l99 16q61 9 206 24q127 12 215 12h23q4 389 6 409q0 10 1 63.5t3 131.5t2 129z" />
34<glyph unicode="5" horiz-adv-x="819" d="M2 846q10 37 24 98l47 191l53 214q19 77 19 83q17 -2 61 -2q64 0 152 1t181 1h153h66q4 -4 4 -68q0 -2 -288 -7q-206 -4 -266 -4q-23 0 -24 1l-24 -107q-27 -106 -51 -213l-25 -106q14 -2 40 -4t98.5 -15.5t138 -32t146.5 -55.5t138 -83t97 -116.5t40 -154.5 q0 -141 -27.5 -237.5t-83 -147.5t-122 -72.5t-158.5 -21.5h-8q-221 0 -332 114l-14 17l8 16l16 33l9 18q12 -14 36.5 -33.5t103.5 -52t165 -32.5q158 2 244 99q81 92 81 307v26q-2 92 -74.5 162.5t-175 103.5t-204 53.5t-172.5 24.5z" />
35<glyph unicode="6" horiz-adv-x="1015" d="M53 737q16 291 193 499q163 191 338 191q16 0 32 -2q213 -18 330 -174q18 -27 19 -26q-62 -58 -64 -58l-8 9q-6 8 -20 21l-30 30q-16 16 -38.5 33.5t-47 33t-53 26.5t-57.5 15q-22 3 -44 3q-177 0 -320 -195q-133 -185 -133 -477q0 -88 12 -187q0 29 6 61.5t31.5 82 t67.5 85t125 61.5q77 24 178 24h16q106 -2 182 -38t115 -95.5t56 -122t19 -136.5v-12q0 -199 -128 -317q-117 -107 -239 -107q-16 0 -32 2q-223 23 -373 248q-135 203 -135 465q0 28 2 57zM231 422v-10q0 -47 16 -98q19 -58 56 -115.5t108.5 -97.5t166.5 -46q12 -1 23 -1 q38 0 70 11q42 13 70.5 39.5t51 55t36 64.5t21.5 60.5t14 51.5l4 24q4 12 5 45v6q0 31 -10 80q-11 52 -36.5 98t-84 81t-140.5 37q-14 1 -28 1q-93 0 -160 -24q-78 -27 -115 -75t-51.5 -92t-16.5 -95z" />
36<glyph unicode="7" horiz-adv-x="690" d="M20 1343q3 89 5 89h22h60q36 0 84.5 1t101.5 1h106h102h85h59h23l-4 -9l-246 -622q94 -2 141 -2t47 2v-19q-2 -18 -4 -39v-20h-12q-12 0 -32.5 1t-46.5 2t-57.5 2t-62.5 1l-35 -98l-221 -637q-86 0 -96 4l246 666l24 65h-2h-2h-2h-2h-2h-2h-2h-2h-2h-2h-2h-2h-2h-2 l-129 2l2 72q86 -2 182 -2l207 547z" />
37<glyph unicode="8" horiz-adv-x="847" d="M27 360q0 88 27.5 157t67.5 103.5t80 58t68 30.5l27 6q-10 4 -26.5 13t-59.5 44t-75 77t-56 113q-22 62 -22 130q0 11 1 22q4 100 45 169t103.5 98.5t114 40t104.5 10.5q51 0 106.5 -15.5t114 -50.5t96 -105.5t37.5 -166.5q0 -45 -8 -86t-22.5 -73t-33 -60.5t-38 -50 t-40 -40t-38.5 -31t-32.5 -20.5t-22.5 -12l-8 -4h10q10 -2 26.5 -6t38 -11.5t45 -20.5t47 -31.5t45 -47.5t38 -64.5t26.5 -86t10 -107.5q0 -98 -32.5 -172t-91 -115t-124 -60.5t-141.5 -19.5q-66 0 -132 19.5t-131 61.5t-104.5 121t-39.5 183zM102 348q0 -129 104.5 -222 t235.5 -93q127 0 218.5 93t91.5 224t-99.5 226.5t-228.5 95.5t-225.5 -96.5t-96.5 -227.5zM141 1057q0 -111 94.5 -204t196.5 -93q100 0 184 105.5t84 219.5q0 111 -84 192t-198 81q-133 0 -205 -89t-72 -212z" />
38<glyph unicode="9" horiz-adv-x="995" d="M31 172q61 57 63 57l8 -8q6 -8 20 -22l30 -29q16 -16 38.5 -33.5t47 -33t53 -26.5t57.5 -16q22 -3 44 -3q177 0 321 196q133 184 133 474q0 89 -12 187q0 -29 -6.5 -61.5t-33 -80.5t-68.5 -85t-125 -62q-77 -22 -175 -22h-16q-106 2 -182 38t-115 95.5t-56.5 122 t-19.5 135.5v12q0 196 126 310q126 113 264 113h9q258 -6 392 -230q116 -195 116 -463q0 -38 -2 -78q-16 -291 -194 -499q-163 -190 -338 -190q-16 0 -31 1q-213 18 -330 174zM122 991v-6q0 -31 10 -79q11 -52 37 -98t84 -81t140 -37q15 -1 29 -1q92 0 159 23 q78 27 115 75.5t51.5 92.5t16.5 95v19q0 48 -8 92q-11 53 -42.5 115.5t-107.5 100t-188 39.5q-51 0 -93 -14t-71 -39.5t-51.5 -54.5t-35.5 -65l-21 -59q-9 -24 -15 -48l-4 -25q-4 -12 -5 -45z" />
39<glyph unicode=":" horiz-adv-x="354" d="M100 16l13 146l147 -6v-152zM100 410l13 145l147 -6v-152z" />
40<glyph unicode=";" horiz-adv-x="333" d="M-6 -162q4 -4 12 -4q23 0 78 27q78 43 86 141l-78 10v24v48q0 33 -1 53.5t-3 20.5l40 -2l85 -4l43 -2q-14 -203 -57 -281q-18 -35 -68.5 -62.5t-91.5 -37.5l-41 -11zM98 410l13 145l147 -6v-152z" />
41<glyph unicode="=" horiz-adv-x="757" d="M31 551q18 0 186 -3t333 -7t171 -4l2 -74q-524 0 -688 8zM31 815q18 0 186 -3t333 -7t171 -4l2 -74q-524 0 -688 8z" />
42<glyph unicode="?" horiz-adv-x="761" d="M23 1401l10 4l27 7l42 11q23 7 53.5 13t62.5 11t69 9t69 6q16 1 32 1q39 0 76 -4q50 -5 113.5 -29.5t104.5 -68.5t65 -132q14 -55 14 -122q0 -41 -5 -85q-31 -266 -350 -375q-111 -39 -207 -45q25 -324 28 -323l-84 -3l-28 375q12 6 111.5 30t188.5 53.5t172 104 t93 179.5q3 36 3 68q0 65 -13 115q-21 75 -69 112t-101.5 53t-124.5 18h-28q-153 0 -294 -61q-28 78 -30 78zM154 2l84 -4l-5 188q-18 -2 -37.5 -3t-37.5 1z" />
43<glyph unicode="@" horiz-adv-x="1382" d="M33 571q0 184 44 332t117.5 239t156.5 143t171 67q20 10 110 17q32 2 67 2q66 0 143 -8q119 -13 178 -54q70 -49 84 -151q6 -45 6 -100q0 -74 -11 -168q-18 -165 -18 -208q0 -86 8.5 -251t16.5 -288l10 -120q-82 2 -82 6l-12 172q-25 -18 -67 -44t-144 -68 q-93 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-101.5 164.5q-20 65 -20 144q0 50 8 106q14 96 76.5 161t144.5 89.5t175 39t170 16.5t129 13t52 36q2 31 10 93q10 70 10 99q0 31 -17 70q-17 41 -58 67q-39 27 -112 37q-52 6 -99 6h-33q-59 -4 -119 -10l-59 -6 q-4 -4 -4 -2q0 4 -40 -10.5t-97.5 -57.5t-116.5 -115.5t-102 -210.5t-48 -315v-26q0 -139 39 -255q43 -126 115 -206t162 -134t183 -75q81 -17 154 -17h21q82 3 142 27q88 37 136 68t113.5 98.5t87.5 180.5q14 67 14 149q0 59 -7 125l-62 641q4 0 9 1l22 4q16 3 21 3h10 l4 -24q4 -25 10 -67t13 -97.5t14.5 -122t13.5 -136t9 -142t3 -140.5t-5 -130t-17 -110q-35 -141 -151 -239.5t-266 -134.5q-81 -18 -161 -18q-70 0 -139 14q-236 49 -397.5 252.5t-163.5 508.5zM340 352q41 -104 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65 t112.5 68q3 6 3 40q0 39 -4 114q-7 141 -16.5 274t-11.5 131l-6 -2q-6 -2 -20 -5l-28 -6q-14 -3 -37 -7l-38 -7q-16 -3 -43 -8.5t-39 -7.5q-6 0 -70.5 -5t-103.5 -13t-97.5 -27.5t-98.5 -57.5t-58 -93q-24 -68 -24 -128q0 -56 20 -106z" />
44<glyph unicode="A" horiz-adv-x="989" d="M43 4l27 115l72 300l87 367q-18 4 -24 9q-68 25 -146 118l43 48q25 -31 97 -74q25 -14 49 -25l65 270l52 224l18 69l113 5l493 -1426q-82 -12 -84 -12l-252 758q-45 -2 -83 -2t-70 2q-139 10 -191 18q-147 -629 -153 -651l-47 -117zM328 844q16 -2 49 -2q57 -6 252 -23 q-178 537 -180 537q-4 0 -121 -512z" />
45<glyph unicode="B" horiz-adv-x="1052" d="M123 0v-1l2 366q2 387 4 689q1 151 1 245t-1 131q-2 4 28.5 11t77 13t78.5 6q45 0 93.5 -2t150.5 -19.5t176 -47t135.5 -94t63.5 -152.5v-8q0 -228 -451 -410q-55 -23 -55 -25t12 -2q14 1 29 1q61 0 146 -13q108 -16 230 -70.5t158 -136.5q22 -50 22 -101q0 -75 -46 -155 q-76 -135 -178 -196q-47 -29 -217 -34q-77 -2 -149 -2q-86 0 -165 3q-108 5 -136 5zM195 130q0 -58 2 -56l49 -4q47 -4 118.5 -9.5t148.5 -6.5h15q69 0 131 8q69 9 101 32q90 63 152 180q37 69 38 119q0 34 -18 58q-45 63 -210 126q-147 56 -239 57q-12 0 -22 -1 q-24 -2 -51 -2q-33 0 -69 3q-65 5 -101.5 10t-38.5 3t-3 -62.5t-2 -144.5t-1 -168v-142zM207 1231q2 -158 2 -316v-157q25 4 66.5 10t148 34.5t188.5 64.5t152 101.5t74 143.5v19q0 34 -6 63q-8 37 -26 63.5t-38 47t-50 33t-53.5 20.5t-56.5 12l-50 6q-17 2 -44 3t-29 1 q-59 4 -175 8q-80 3 -101 4q-8 0 -8 -1v-3q0 -4 0.5 -11t1 -16.5t1.5 -23t1.5 -29t1 -35.5t0.5 -42z" />
46<glyph unicode="C" horiz-adv-x="925" d="M53 705v15q1 209 109 397q112 195 282 259q100 37 210 51q97 13 154 13h16q60 -2 59 -6l-4 -72q-25 1 -49 1q-203 0 -365 -75q-139 -63 -224 -214.5t-94 -366.5v-22q0 -131 65 -268q71 -149 177.5 -245t202.5 -100q20 -1 39 -1q67 0 124 11q74 14 103 31l29 16l18 -92 q-12 -6 -36.5 -14.5t-105.5 -21.5t-171 -13q-123 0 -250 119.5t-207 286.5t-82 311z" />
47<glyph unicode="D" horiz-adv-x="1058" d="M123 76q0 80 1 206t2 282.5t1 308t1 282.5t1 207v80q274 0 412 -17q61 -8 138 -54t151.5 -124t126 -200.5t51.5 -262t-50.5 -286t-121 -250t-145.5 -172t-128 -74.5q-61 -6 -170 -7h-69q-66 0 -119 1h-80zM209 74q121 -13 206 -13q140 0 187 35q80 61 194.5 254 t131.5 379q2 28 2 56q0 176 -99 335q-114 183 -266 215q-88 18 -175 24q-50 3 -87 3q-27 0 -46 -2q-46 -4 -44 -8z" />
48<glyph unicode="E" horiz-adv-x="937" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2h98q29 -2 221 -2h230q27 0 63.5 2t61.5 2l22 2l7 -80l-705 4q-4 -183 -4 -275q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q15 0 25 -1q29 -2 165 -3t159 -1q25 0 65.5 -1t63.5 -3h25l2 -68l-588 4 q-8 -328 -8 -336v-247q12 0 55 2t61 0q29 -2 221 -2h230q27 0 63.5 2t61.5 2l22 2l7 -80l-775 6v2h-18v66q0 50 -1 126t-1 89z" />
49<glyph unicode="F" horiz-adv-x="876" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2h98q29 -2 232 -2h239q27 0 64 2t61 2l23 2l6 -80l-725 4q-4 -183 -4 -275q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q15 0 25 -1q29 -2 165 -3t159 -1q25 0 71 -1t74 -3h29l2 -68l-608 4 q-8 -328 -8 -336v-313h-13q-9 0 -24 -1h-9q-9 0 -16 1h-10v66q0 50 -1 126t-1 89z" />
50<glyph unicode="G" horiz-adv-x="995" d="M62 649q-10 57 -10 112q0 69 15 133q25 116 80.5 195.5t113.5 134t118 85.5q39 20 95 39.5t111 33.5l101 27q47 12 76 18l31 7q4 -57 4 -58q-14 -2 -39 -7t-96.5 -26.5t-135 -49t-141.5 -79t-133 -113t-90 -152.5q-31 -82 -31 -175v-22q6 -147 55.5 -268.5t117 -194 t144 -120.5t136.5 -65q43 -12 74 -12q11 0 20 2q72 12 145 12l56 574q-270 -27 -353 -33h-18q-28 0 -61 4q-44 6 -70 15l-25 8q14 70 14.5 72t23 -2.5t54.5 -11.5l56 -13q11 -3 39 -3q100 0 415 40l-63 -697q0 -10 -53 -10v-4q-106 -29 -256 -31q-57 0 -137 49.5t-158 130 t-141.5 203.5t-83.5 252z" />
51<glyph unicode="H" horiz-adv-x="1091" d="M-86 926l55 18l4 -14q4 -12 12.5 -41t18.5 -58q16 -41 37.5 -55t73.5 -28q12 -2 18 -5q47 -12 80 -12q0 225 4 258q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430q0 -76 -6 -287q52 3 83 3q15 0 25 -1q29 -2 165 -3t158.5 -1t82 -1t76.5 -3q0 51 1 123.5 t2 108.5t1 44q2 35 6 243q3 139 3 185q0 23 -1 23l18 -2h39l19 -2l-4 -430q0 -18 -3.5 -186.5t-7.5 -334.5t-4 -172v-313h-12q-8 0 -24 -1h-9q-9 0 -16 1h-10v65q0 50 -1 126.5t-1 89.5q0 193 2 364l-588 4q-8 -328 -8 -336v-313h-13q-9 0 -24 -1h-9q-9 0 -16 1h-10v65 q0 50 -1 126.5t-1 89.5q0 203 2 378q-29 2 -96 15q-135 23 -191 207z" />
52<glyph unicode="I" horiz-adv-x="438" d="M41 1382l2 60q0 2 37 2t91 -1l109 -2q54 -1 93 -3h37q4 -70 6 -70q-6 0 -37 -2q-4 -1 -19 -1q-30 0 -102 3q-4 -184 -4 -278q0 -62 2 -84q0 -18 -3 -186.5t-7 -334.5t-4 -172v-245h174l2 -60l-338 -16q-18 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708 q2 23 8 383z" />
53<glyph unicode="J" horiz-adv-x="417" d="M-307 -139l61 22q12 -25 32.5 -60.5t88.5 -101t139 -75.5q12 -2 24 -2q30 0 54 12q33 16 47.5 39.5t22.5 66.5t9 65.5t1 61.5v111h-2v66q0 49 -1 125.5t-1 89.5q0 545 8 708q2 23 8 383l-143 10l2 60q0 2 37 2t91 -1l109 -2q54 -1 93 -3h37q4 -70 6 -70q-6 0 -37 -2 q-4 -1 -19 -1q-29 0 -102 3q-4 -184 -4 -278q0 -62 2 -84q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313q0 -227 -11 -268q-8 -31 -34.5 -68t-72.5 -71q-35 -25 -87 -25q-15 0 -32 2q-73 10 -155 76q-111 88 -157 215z" />
54<glyph unicode="K" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430q0 -8 -1 -38t-2 -89.5t-1 -106.5q139 70 174 98q45 37 498 594q2 -2 6 -4t14 -9t19.5 -13t18.5 -12.5t13 -8.5l6 -4l-41 -49l-115 -136l-132 -157l2 -6q12 -49 34 -130l80 -293 q60 -212 114 -381t118.5 -323.5t109.5 -189.5v-92q-78 31 -177 248t-155.5 398t-93.5 325l-96 370q-139 -164 -168 -186q-66 -51 -231 -131q-8 -348 -8 -367v-313h-13q-9 0 -24 -1t-25 1h-10v65q0 50 -1 126.5t-1 89.5z" />
55<glyph unicode="L" horiz-adv-x="389" d="M123 -137l12 205q0 43 -1 124.5t-1 88.5q0 545 8 708q3 35 7 243q3 144 3 188q0 20 -1 20l18 -2h37l20 -2l-4 -430q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-2q0 -55 -4 -72q-2 -4 45 -10t127 -23.5t139 -44.5q29 -12 74 -34.5t62.5 -29.5t56 -20.5t54 -10.5t58.5 5 q47 10 88 33t60 39l18 18q2 -4 6 -10l13 -20q9 -14 14 -21l6 -8l-8 -6l-23 -17l-35 -23t-44.5 -24.5t-53.5 -19.5q-30 -8 -60 -12q-15 -2 -30.5 -2t-32.5 2q-90 10 -221 71.5t-149 67.5q-37 12 -97.5 20.5t-103.5 12.5z" />
56<glyph unicode="M" horiz-adv-x="1241" d="M123 281q0 545 8 708q8 156 8 438l-2 7h2v6l19 -2h39l18 -2v-2h4l408 -1104l409 1104h6v6l19 -2h37l20 -2l-4 -430q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-12q-9 0 -24 -1h-10q-9 0 -16 1h-10v66q0 50 -1 126t-1 89q0 545 8 708q0 8 1 44t3 90.5t2 99.5l-370 -1000 h-84l-375 1010v-227q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-10 0 -24 -1h-9q-9 0 -16 1h-10v66q0 50 -1 126t-1 89z" />
57<glyph unicode="N" horiz-adv-x="1038" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2v-4l16 -2l611 -1258q4 430 4 576q0 33 -5 253t-7 240q-2 8 -3.5 31.5t-1.5 50.5t-1 52.5t-1 41.5v15l21 2l41 4l22 4q-1 -51 -1 -89q0 -76 3 -100v-1253h-18h-35l-18 2l-629 1288q-3 -169 -3 -239 q0 -35 1 -45q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-9 0 -24 -1h-9q-9 0 -16 1h-10v66q0 50 -1 126t-1 89z" />
58<glyph unicode="O" horiz-adv-x="1183" d="M51 702q0 139 64 347q36 121 118 213q150 170 355 170t360 -189q45 39 82 53q104 38 179 39q13 0 26 -2v-88q-13 1 -26 1q-115 0 -187 -50l-27 -20q53 -86 88 -197q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186 q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318 188.5t132 454.5q0 195 -114 416q-239 -200 -471 -200q-33 0 -66 4q-162 18 -186 141q-64 -154 -64 -361zM233 1262l11 -11zM275 1131q-1 -8 0 -15q0 -28 10 -51q14 -29 64 -51 q46 -20 120 -19h14q88 2 170 36t127 66.5t105 88.5l-19 26q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-10 -53.5z" />
59<glyph unicode="P" d="M-266 838q6 2 17 7t51 13t86 12q20 2 46 2q32 0 74 -3q74 -5 152 -21q4 139 4 141q8 147 8 428q-4 19 -2 21h2v2q2 -2 6 -2q37 4 92 7q41 2 108 2h48q102 -1 195.5 -21.5t182.5 -56.5t143 -110.5t54 -177.5v-7q0 -124 -67 -206q-69 -84 -160.5 -112.5t-204.5 -34.5 q-57 -3 -101 -3t-76 3q-63 6 -99 14l-53 10l-5 -189q-3 -107 -4.5 -173t-1.5 -70v-313h-12q-7 0 -23 -1h-10q-9 0 -16 1h-10v66q0 50 -1 126t-1 89q0 80 4 477q-197 27 -265 27q-11 0 -18 -1q-33 -4 -60.5 -12t-37.5 -14l-12 -6zM242 831q152 -20 301 -20t262 62.5 t115 179.5v6q0 140 -92 206q-94 66 -277 95q-120 18 -217 18q-47 0 -88 -4q-4 -185 -4 -281q0 -64 2 -87q0 -84 -2 -175z" />
60<glyph unicode="Q" horiz-adv-x="1148" d="M51 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-59 -80 -119 -143q23 -18 54.5 -46t39.5 -34q50 -39 144 -39q29 0 63 4l-4 -90q-23 -7 -50 -7q-59 0 -138 34q-41 16 -172 123 q-117 -94 -248 -95q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM141 700q0 -125 45 -258t105 -225q156 78 287 78q111 0 268 -125q90 88 143 227.5t53 302.5q0 141 -58 292t-118 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM342 150 q94 -93 250 -93q96 0 186 58q-123 96 -198 104h-16q-98 0 -222 -69z" />
61<glyph unicode="R" d="M-285 838q6 2 17.5 7t51.5 13t86 12q20 2 46 2q32 0 74 -3q74 -5 151 -21q4 139 4 141q8 147 9 428q-4 19 -2 21h2v2q2 -2 6 -2q37 4 91 7q40 2 108 2h48q102 -1 195.5 -21.5t182.5 -56.5t143.5 -110.5t54.5 -180.5q0 -292 -340 -349q33 -49 55 -111l105 -239 q121 -276 193.5 -387t189.5 -156q34 -11 64 -11q13 0 25 2q40 7 70.5 31.5t51 51.5t30.5 49l11 21l57 -60l-10 -19q-6 -12 -30.5 -41.5t-55.5 -52t-85 -37.5q-43 -12 -91 -13q-12 0 -25 1q-63 4 -115.5 31t-90.5 71t-61.5 79.5t-50 88t-34.5 66.5q-18 27 -211 469 q-29 68 -51 109q-14 27 -72 45q-19 -1 -38 -1q-103 0 -200 19l-53 10q-2 -82 -4 -189t-4 -173t-2 -70v-313h-13q-9 0 -23.5 -1t-24.5 1h-11v66q0 50 -1 126t-1 89q0 80 4 477q-197 27 -264 27q-11 0 -18 -1q-33 -4 -60.5 -12t-40.5 -14l-10 -6zM223 831q152 -20 301.5 -20 t262 62.5t114.5 179.5v6q0 140 -92 206q-94 66 -277 95q-120 18 -217 18q-47 0 -88 -4q-4 -185 -4 -281q0 -64 2 -87q0 -84 -2 -175z" />
62<glyph unicode="S" horiz-adv-x="933" d="M53 1167q0 84 32 145.5t84 93.5t102.5 47t103.5 20q106 8 214.5 -19t166.5 -92q37 -43 53 -102.5t18 -96.5l2 -39l-90 -8q8 121 -66.5 195.5t-199.5 87.5q-43 4 -92 -1t-107.5 -25.5t-95.5 -77t-35 -140.5q2 -66 60.5 -132.5t147.5 -126.5l181 -121q93 -60 178 -133 t121 -144q47 -92 49.5 -182.5t-39.5 -166t-150.5 -122.5t-270.5 -47q-78 0 -137.5 20t-95 54t-59.5 74t-33 80t-13 73.5t-4 54.5l2 20l76 -6q0 -37 8 -78t30.5 -94t75 -90t127.5 -41q72 -4 133.5 3t129 35t105.5 95.5t36 167.5q-2 86 -80 171q-77 85 -187 157l-220 144 q-110 72 -185.5 162.5t-75.5 184.5z" />
63<glyph unicode="T" horiz-adv-x="770" d="M0 1382l6 84q14 -2 45 -11t56.5 -13t62.5 -4q119 0 265.5 14t232.5 27l88 12l2 -21l8 -36l2 -19l-37 -6q-37 -4 -105.5 -14.5t-127.5 -16.5q-61 -8 -92 -10q0 -256 8 -379q8 -164 8 -708q0 -12 -1 -89t-1 -127v-65h-19h-34h-19v313q0 6 -4 172t-7 334t-3 187 q0 127 -4 356q-40 -3 -80 -3q-121 0 -250 23z" />
64<glyph unicode="U" horiz-adv-x="1064" d="M102 1436h6q4 0 14.5 1t19 1t17.5 1t13 1h6q-1 0 -1 -23q0 -46 3 -185q4 -208 6 -243q10 -175 10 -379q0 -114 -3 -237q2 -25 8 -54.5t27.5 -73.5t54 -79t92 -61.5t135.5 -28.5h18q87 0 154 35q74 39 110.5 100t52 100t21.5 70q-12 516 -12 608v17l-4 430h6q4 0 14.5 1 t18.5 1t17 1t16 1h4q-1 0 -1 -23q0 -46 3 -185q4 -208 6 -243q2 -33 8 -602v-106q0 -12 -1 -89t-1 -126v-66h-18h-35h-19v188q-116 -184 -337 -184h-21q-109 4 -188.5 46t-116.5 92.5t-58.5 112.5t-24.5 90t-3 42l-13 619z" />
65<glyph unicode="V" horiz-adv-x="983" d="M0 1427l86 7l418 -1305q215 528 219 537q8 25 50 216l80 372q38 180 38 182h24q21 0 43 -2h25q-164 -717 -188 -801q-9 -37 -71 -195l-118 -299l-57 -141q-86 0 -96 4z" />
66<glyph unicode="W" horiz-adv-x="1331" d="M0 1427l76 7l377 -1330l204 510l-151 535l76 6l114 -416q12 61 30.5 164t30 173.5t11.5 72.5h23q18 0 40 -2h21q-86 -430 -111 -514l-8 -25l141 -504l228 564q8 25 45 216t68.5 370.5t31.5 181.5h23q18 0 41 -2h20q-143 -717 -168 -801q-9 -37 -71 -195l-117 -299 l-57 -141q-72 0 -82 4h-2l-142 494l-196 -498q-72 0 -82 4h-2z" />
67<glyph unicode="X" horiz-adv-x="899" d="M20 2q2 6 202 319.5t212 344.5q2 6 2 8l-389 753l86 7l344 -662l103 256l120 293l45 115h25q21 0 45 -2h23q-242 -565 -314 -752l355 -682l-93 2l-303 582q-37 -70 -129 -216l-166 -257l-71 -113q-86 0 -97 4z" />
68<glyph unicode="Y" horiz-adv-x="882" d="M20 1430q0 2 45.5 3t47.5 -1l151 -281l211 -379q199 436 209 463q8 23 45 114t37 89t86 -6h8q-2 0 -134 -293t-140 -314l-62 -141q-2 -41 -5 -127t-6 -150.5t-3 -87.5v-313h-12q-9 0 -24 -1t-25 -1l-11 2v66q0 49 -1 125.5t-1 89.5q0 242 6 360q-231 401 -243 436 q-6 14 -51 101l-87 166z" />
69<glyph unicode="Z" horiz-adv-x="1040" d="M41 2v66q340 602 412 675q33 33 141 184l202 286q93 135 91 137l-719 -8v90l829 4l2 -88q-356 -510 -438 -609q-16 -20 -49 -67l-72 -106l-82 -127l-82 -131l-73 -115l-51 -82l-21 -31q-2 2 78 2t168 -1t106 -3q7 -1 25 -1q90 0 457 17l-2 -90h-230q-231 -2 -463 -2h-229 z" />
70<glyph unicode="[" horiz-adv-x="507" d="M115 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l6 -2q6 0 18.5 -1t20.5 -1q264 6 293 6l-10 -82h-45q-47 2 -104 2h-105q-4 -183 -4 -275q0 -61 2 -81q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-239q270 0 271 4l10 -82h-20q-20 0 -52 1t-69 2t-75 1h-65h-12 q-8 0 -23.5 -1t-25.5 1h-10v66q0 49 -1 125.5t-1 89.5z" />
71<glyph unicode="\" horiz-adv-x="927" d="M47 1434h14q9 0 32.5 1t31.5 1h14l74 -183l151 -373l87 -214q12 -31 211.5 -344.5t201.5 -319.5l-96 -4q-365 551 -389 635q-10 37 -93 237l-161 383z" />
72<glyph unicode="]" horiz-adv-x="569" d="M117 -4l10 82q0 -4 270 -4v239q0 6 -4 172t-7 334t-3 187q0 131 -4 356h-103q-57 0 -104 -2h-45l-10 82q23 0 293 -6l45 4q-1 0 -1 -23q0 -46 3 -185q4 -208 6 -243q8 -164 8 -708q0 -12 -1 -89t-1 -126v-66h-18h-35h-19z" />
73<glyph unicode="`" horiz-adv-x="471" d="M39 1731l76 55q33 -76 84 -111q29 -20 84 -45.5t97 -42t46 -16.5q-4 -4 -12 -35l-11 -33h-1q-6 0 -57 19q-56 20 -123.5 47.5t-92.5 44.5q-14 10 -29.5 26.5t-26 32t-18.5 28.5t-12 21z" />
74<glyph unicode="a" d="M49 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 32 -17 70q-18 41 -58 67q-33 23 -103.5 35.5t-145.5 15.5q-56 2 -109 2h-36q-71 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 13q26 1 54 0q107 0 231 -13 q158 -18 219 -63q71 -49 85 -151q6 -45 6 -103q0 -73 -10 -165q-18 -165 -19 -208q0 -86 9 -251t17 -288l9 -120q-82 2 -82 6l-13 172q-25 -18 -67 -44t-144 -68q-94 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-100.5 164.5q-20 67 -21 146q0 50 8 104zM145 352 q40 -105 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 115q-7 141 -16.5 273.5t-11.5 130.5l-6 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-39 -7q-16 -3 -42.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5t-98.5 -57.5t-58 -93 q-24 -68 -24 -129q0 -55 19 -105z" />
75<glyph unicode="b" horiz-adv-x="1083" d="M123 281q0 545 8 708q2 31 4 361q1 165 1 248t-1 83l19 -2h39l18 -2q-2 -315 -2 -512q27 16 60.5 32.5t98 41.5t125 39t133 14t130.5 -24q276 -116 275 -589q0 -37 -1 -75q-6 -158 -39 -277.5t-75 -187t-104 -107.5t-109 -52q-38 -10 -87 -11q-12 0 -23 1q-63 3 -85 9 l-53 13q-6 2 -9 2q-102 20 -249 151v-145h-12q-9 0 -24.5 -1t-25.5 1h-10v66q0 50 -1 126t-1 89zM197 262q18 -29 42.5 -57.5t67.5 -65.5t107.5 -59.5t138.5 -22.5q92 0 160.5 31t108.5 78t64.5 126t35 154.5t14.5 184.5q1 31 1 61q0 91 -13 165q-18 99 -48 158.5t-77 100.5 t-86 58.5t-87 24.5q-42 6 -64 6h-5q-21 -1 -45 -3q-80 -10 -303 -121v-33q0 -18 1 -29t1 -13q0 -18 -3 -186.5t-7 -334.5t-4 -172v-51z" />
76<glyph unicode="c" horiz-adv-x="774" d="M51 702q0 166 64 347q47 137 154.5 227t219 124t224.5 34l4 -86q-6 0 -19 -2q-324 -35 -444 -191q-113 -145 -113 -455q0 -158 71 -325.5t130 -224.5q43 -43 183.5 -69t228.5 -25v-79q-70 0 -111 2.5t-116.5 14.5t-128 36.5t-114 76t-104.5 122.5q-129 213 -129 473z" />
77<glyph unicode="d" horiz-adv-x="1083" d="M53 670q6 158 39 277.5t75 187t104.5 107.5t109.5 52q37 10 83 10q13 0 27 -1q63 -3 85 -8t53 -13q6 -2 8 -2q104 -23 235 -141v538h6q4 0 14.5 1t19 1t17.5 1t13 1h6q-1 0 -1 -82.5t1 -248.5q2 -330 4 -361q8 -164 9 -708q0 -12 -1 -89q-2 -76 -2 -126v-66h-16h-37h-18 v113l-2 2q-6 -4 -19.5 -11.5t-52.5 -27t-78 -34.5t-94 -31.5t-105 -23.5q-32 -4 -67 -4q-20 0 -40 1q-56 4 -101 22q-277 116 -277 592q0 35 2 72zM147 643l-2 -61q0 -91 15 -166q18 -99 48 -158t77 -100t86 -58.5t87 -24.5q42 -6 64 -6h6q21 1 43 3q39 4 168.5 59.5 t147.5 67.5v114q0 6 -4 172t-7.5 334t-3.5 187v24q-129 186 -342 187q-92 0 -160.5 -31t-108.5 -78t-64.5 -126t-34.5 -154.5t-15 -184.5z" />
78<glyph unicode="e" horiz-adv-x="1097" d="M51 702q0 139 64 347q53 172 176 277.5t276 105.5q164 0 289 -123t186 -330q23 -74 23 -277q-35 -2 -89 -4t-202 -4q-49 -1 -89 -1q-81 0 -128 3q-18 1 -37 1q-151 0 -377 -42q8 -147 64.5 -280t109.5 -185q137 -133 227 -133h3q70 2 129 34t94 68t89 67.5t116 33.5v-28 v-46l2 -24q-47 -2 -88 -27.5t-73 -58.5t-103.5 -62.5t-169.5 -38.5q-13 -1 -25 -1q-99 0 -172 57q-82 64 -166 198q-129 205 -129 473zM141 733l54 17q20 6 149 16q108 8 161 9q11 0 19 -1q21 -1 82 -1h71q122 1 206 3q42 1 68 1t36 -1q-14 135 -65.5 258t-96.5 178 q-111 133 -254 134q-190 0 -317 -191q-107 -156 -113 -422z" />
79<glyph unicode="f" horiz-adv-x="659" d="M61 965q49 33 117 36v136l2 98q2 10 5 28.5t18.5 64.5t39 81t69.5 63.5t103.5 28.5t111 -21.5t77.5 -41.5l25 -23l-47 -63q-4 8 -18.5 22.5t-56.5 33.5t-93 19q-57 0 -98.5 -55t-55.5 -109.5t-8 -56.5v-37q0 -84 2 -178q6 0 14 -4q49 -18 96.5 -18t92.5 18 q20 8 35.5 18.5t19.5 18.5l6 6l51 -59q-10 -10 -30.5 -24.5t-80.5 -34.5q-44 -15 -87 -15q-16 0 -33 2q-49 6 -82 12q8 -385 8 -450q-2 -33 -6 -273q-3 -159 -3 -212q0 -27 1 -27l-18 2h-37l-21 2l4 491q-2 16 -6 486h-16q-29 -2 -86 -47z" />
80<glyph unicode="g" horiz-adv-x="1067" d="M53 1004q2 106 84 209.5t199 164.5q110 56 206 56h13q121 -6 200 -51.5t111 -102.5l2 160l19 -2h39l18 -2l-4 -430q0 -18 -3 -186.5t-7 -334.5t-4 -172v-63q-6 -115 -101 -196q-94 -79 -273 -79h-9q-55 0 -105.5 12.5t-88.5 34t-70.5 48t-56 56.5t-42 59.5t-31 57 t-19.5 48t-11 33.5l-4 12h10q10 2 24.5 3t28.5 1h25l10 2q-2 0 8 -29.5t34 -72.5t60.5 -86t98.5 -72q59 -27 129 -27h10q72 2 128 23.5t86 44t51.5 58.5t25.5 46.5t8 26.5v27q0 168 2 327q-107 -100 -298 -100h-15q-219 6 -355 161q-133 150 -133 325v10zM152 1004 q-2 -16 -2 -34q0 -27 5 -58q9 -50 36.5 -106t71.5 -101.5t117 -76t165 -32.5h19q78 0 135 15q65 16 93.5 41.5t45 51t18.5 44.5v18q0 190 4 223v43q2 43 2 80q-63 225 -299 231h-10q-148 0 -266 -111q-121 -116 -135 -228z" />
81<glyph unicode="h" horiz-adv-x="968" d="M123 281q0 545 8 708q2 35 7 287q4 180 4 231q0 21 -1 21h19l37 -4h20l-6 -518q0 -55 -2 -115q92 151 303 151h8q254 -2 324 -225q20 -56 20 -106v-13h-2v-17q0 -46 -6 -188q-8 -178 -8 -180v-313h-12q-9 0 -24 -1h-10q-9 0 -16 1h-10v66q0 50 -1 126t-1 89q0 211 8 399 v28q0 18 -12 62.5t-34.5 78.5t-76 62.5t-127.5 30.5q-82 0 -145 -22.5t-99 -59.5t-53.5 -64.5t-27.5 -56.5q-2 -82 -4 -187.5t-4 -170t-2 -68.5v-313h-12q-9 0 -24 -1h-10q-9 0 -16 1h-10v66q0 50 -1 126t-1 89z" />
82<glyph unicode="i" horiz-adv-x="337" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-9 0 -24 -1h-9q-9 0 -16 1h-10v66q0 50 -1 126t-1 89z" />
83<glyph unicode="j" horiz-adv-x="382" d="M-307 -139l61 22q12 -25 32.5 -60.5t88.5 -101t139 -75.5q12 -2 24 -2q30 0 54 12q33 16 47.5 39.5t22.5 66.5t9 65.5t1 61.5v111h-2v66q0 49 -1 125.5t-1 89.5q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430q0 -18 -3 -186.5t-7 -334.5 t-4 -172v-313q0 -227 -11 -268q-8 -31 -34.5 -68t-72.5 -71q-35 -25 -87 -25q-15 0 -32 2q-73 10 -155 76q-111 88 -157 215z" />
84<glyph unicode="k" horiz-adv-x="960" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430q0 -70 -8 -443q133 63 178 100t479 574q2 -2 6 -4t14 -9l20 -14q8 -6 18 -12l16 -10l4 -2l-37 -43l-109 -131l-124 -148l2 -6q16 -76 43.5 -193.5t97.5 -346t121 -295.5l-101 -27 q-14 27 -26 58.5t-20.5 56t-21.5 71.5l-18 68q-6 21 -22 85t-23 85l-96 371q-152 -174 -168 -187q-35 -27 -235 -133q0 -37 -1 -76t-2 -59.5t-1 -22.5v-313h-13q-9 0 -24 -1t-25 1h-10v66q0 50 -1 126t-1 89z" />
85<glyph unicode="l" horiz-adv-x="557" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430q0 -18 -3 -186.5t-7 -334.5t-4 -172v-227q101 -3 148 -3q23 0 32 1h76h108h55l2 -23q4 -20 7 -41l2 -22l-430 2h-7h-20h-31h-14v66q0 50 -1 126t-1 89z" />
86<glyph unicode="m" horiz-adv-x="1607" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2q-2 -66 -2 -146q91 148 301 148h6q227 -2 309 -187q84 187 327 187h3q254 -2 324 -226q20 -56 20 -105v-13h-2v-88q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-9 0 -23 -1h-10q-9 0 -16 1h-10 v66q0 50 -1 126t-1 89q0 545 8 708q2 33 2 54.5t-2 31.5v28q0 18 -12 62.5t-34.5 78.5t-76 62.5t-127.5 30.5h-5q-223 0 -310 -174l8 -69h-2v-88q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-9 0 -23 -1h-10q-9 0 -16 1h-10v66q0 50 -1 126t-1 89q0 545 8 708q2 33 2 54.5 t-2 31.5v28q0 18 -12 62.5t-34.5 78.5t-76 62.5t-127.5 30.5h-5q-240 0 -316 -190q-2 -58 -2 -93.5t2 -47.5q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-9 0 -24 -1h-9q-9 0 -16 1h-10v66q0 50 -1 126t-1 89z" />
87<glyph unicode="n" horiz-adv-x="1007" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2q-2 -72 -4 -156q103 158 324 158h6q98 -2 171.5 -38t108.5 -86t56.5 -100.5t23.5 -85.5l4 -34h-2v-88q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-9 0 -23 -1h-10q-9 0 -16 1h-10v66 q0 50 -1 126t-1 89q0 545 8 708q2 33 2 54.5t-2 31.5q0 10 -2 27.5t-17.5 62.5t-41 79t-80.5 62.5t-129 30.5q-80 0 -143.5 -20.5t-103.5 -55t-61.5 -63.5t-33.5 -57q-2 -56 -2 -89.5t2 -45.5q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-9 0 -24 -1h-9q-9 0 -16 1h-10v66 q0 50 -1 126t-1 89z" />
88<glyph unicode="o" horiz-adv-x="1175" d="M51 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93 q186 0 318 188.5t132 454.5q0 141 -58 292t-118 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455z" />
89<glyph unicode="p" horiz-adv-x="1005" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2q-2 -35 -2 -78q92 106 326 106q211 -2 324 -124q110 -119 110 -312v-14q-4 -174 -136 -273.5t-372 -99.5q-174 0 -258 84q-2 -80 -4 -182.5t-4 -164t-2 -65.5v-313h-13q-8 0 -24 -1h-9q-9 0 -16 1 h-10v66q0 49 -1 125.5t-1 89.5zM209 846q25 -63 106.5 -93t149.5 -36h11q30 0 78 8q58 10 137 36.5t135.5 93.5t56.5 161v8q0 182 -96 267q-97 87 -250 93q-14 1 -27 1q-109 0 -186 -45q-86 -50 -113 -123v-211q0 -76 -2 -160z" />
90<glyph unicode="q" horiz-adv-x="1175" d="M51 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-96 -133 -182 -200q90 -209 94 -209l-45 -29l-43 -23q4 4 -76 216q-90 -47 -178 -48q-121 0 -226.5 68t-181.5 186q-129 205 -129 473z M141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q76 0 145 35q-43 111 -51 119q-10 6 41 25l35 12l45 -113q106 84 170.5 234.5t64.5 330.5q0 141 -58 292t-118 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455z" />
91<glyph unicode="r" horiz-adv-x="1028" d="M123 281q0 74 4 471h-2l2 16q0 193 4 221q8 147 8 428q-4 19 -2 21h2v2q2 -2 6 -2q37 4 92 7q41 2 108 2h49q102 -1 195 -21.5t182 -56.5t143.5 -110.5t54.5 -180.5q0 -288 -328 -347l152 -354q49 -115 82.5 -182.5t48 -89t36 -49t37.5 -54.5l-90 -6q-35 37 -71 96 q-27 39 -277 629q-63 -6 -118 -6q-104 0 -181 20l-53 6q-2 -82 -4 -188.5t-4 -171t-2 -68.5v-313h-12q-9 0 -24.5 -1t-25.5 1h-10v65q0 50 -1 126.5t-1 89.5zM209 831q152 -20 301 -20t262 62.5t115 179.5v6q0 140 -92 206q-94 66 -277 95q-120 18 -217 18q-47 0 -88 -4 q-4 -185 -4 -281q0 -64 2 -87q0 -84 -2 -175z" />
92<glyph unicode="s" horiz-adv-x="921" d="M43 1149v17q0 84 36 147q40 70 105.5 104.5t126.5 49.5q54 14 101 14h12q53 -2 162.5 -14.5t191.5 -24.5l84 -10q-2 -6 -4 -14.5t-7 -27t-7 -30.5l-4 -10q2 2 -73 17t-180 23q-59 5 -118 5q-46 0 -92 -3q-105 -6 -176 -57q-67 -48 -66 -135v-10q4 -80 64.5 -158 t148.5 -140l187 -134q99 -72 181.5 -140.5t129.5 -160.5q35 -69 35 -142q0 -25 -4 -51q-20 -125 -107.5 -195.5t-197.5 -82.5q-74 -8 -147 -7q-35 0 -71 1q-108 6 -182 24l-72 19q6 84 11 83l16 -4l43 -12q29 -8 65.5 -15t90 -15.5t106.5 -14.5q16 -2 33 -1q70 0 143 27 q90 34 147 121q40 60 41 133q0 32 -8 66q-14 66 -95 143.5t-187 151.5l-209 147q-104 74 -177 158t-77 158z" />
93<glyph unicode="t" horiz-adv-x="571" d="M102 1497h6q4 0 14.5 1t19 1t17.5 1t13 1h6q-2 0 -2 -47.5t2 -142.5l357 14l2 -80l-357 -10q4 -227 6 -246q9 -163 9 -708v-37q-6 -2 3 -58.5t43.5 -114t92.5 -57.5q53 0 94 17.5t55 34.5l17 18l51 -49q-8 -10 -25.5 -24.5t-74 -38t-113.5 -23.5q-156 0 -203 186l-12 80 q-2 78 -2 98q0 6 -4 172t-7.5 334t-3.5 187z" />
94<glyph unicode="u" horiz-adv-x="1067" d="M109 1006q6 78 25.5 187.5t35.5 178.5l16 72h7q4 0 14 1t18 1t17.5 1t15.5 1h4q-2 0 -16.5 -79t-32.5 -192.5t-25 -187.5q-8 -87 -9 -191v-50q0 -70 2 -118q3 -63 8.5 -147t5.5 -92v-2q-2 -8 2 -36.5t22.5 -76t49 -90.5t94 -75.5t149.5 -34.5h18q87 0 154 35 q74 39 110.5 100t52 100t21.5 70q-12 516 -12 608v17l-4 430h6q4 0 14.5 1t18.5 1t17.5 1t13.5 1h6q-1 0 -1 -23q0 -46 3 -185q4 -208 6 -243q2 -33 8 -602v-106q0 -12 -1 -89t-1 -127v-65h-16h-37h-19v188q-116 -184 -337 -184h-21q-88 4 -157.5 30.5t-109.5 68.5t-67.5 85 t-38 89.5t-14.5 69t-4 36.5q-17 205 -17 404q0 110 5 219z" />
95<glyph unicode="v" d="M20 1434h14q9 0 32.5 1t31.5 1h15q-1 -2 37 -182l80 -372q42 -192 51 -216q4 -8 219 -537l418 1305l86 -7l-453 -1425l-96 -4q-221 551 -246 635t-189 801z" />
96<glyph unicode="w" horiz-adv-x="1607" d="M104 330h2v88q0 18 3.5 186t7.5 334t4 172v313h12q8 0 23.5 1t25.5 1l11 -2v-65q0 -49 1 -126t1 -89q0 -545 -9 -709q-2 -37 -2 -86h2v-28q0 -18 12.5 -62.5t35 -78.5t75.5 -62.5t127 -30.5h10q223 0 304 174q-6 70 -7 70h2v88q0 18 3.5 186t7.5 334t4 172v313h12 q8 0 23.5 1t25.5 1l10 -2v-65q0 -49 1.5 -126t1.5 -89q0 -545 -9 -709q-2 -37 -2 -86h2v-28q0 -18 12.5 -62.5t35 -78.5t75.5 -62.5t127 -30.5h14q69 0 124 17q60 20 96.5 53.5t55.5 61.5t32 58v142q0 18 3 186t7 334t4 172v313h13q9 0 23.5 1t25.5 1l10 -2v-65 q0 -49 1 -126t1 -89q0 -545 -8 -709q-3 -36 -7 -236q-3 -139 -3 -181q0 -19 1 -19l-18 2h-37l-20 2q0 57 2 131q-86 -147 -299 -147h-9q-227 2 -311 186q-18 -41 -46 -77t-103.5 -72.5t-177.5 -36.5q-254 2 -324 225q-21 58 -21 110v9z" />
97<glyph unicode="x" horiz-adv-x="1030" d="M20 1313v41v28q14 0 53.5 -11t102 -44t124.5 -79t121.5 -128t92.5 -182q33 100 93.5 182t122 128t125 79t102.5 44t53 11q0 -6 -1 -27.5t-1 -41.5v-21h-4q-217 -43 -340 -211q-104 -145 -107 -362q0 -106 22.5 -196.5t58.5 -152t81 -109.5t89 -75.5t81 -46t61 -24.5 l23 -6q-2 -49 -2 -64q-33 0 -88.5 19.5t-127 60.5t-139 125t-102.5 194q-35 -111 -102.5 -194.5t-138 -124.5t-126 -60.5t-88.5 -19.5l-2 64q16 4 45 13t100.5 53t127 104.5t100.5 176.5q43 112 43 251v12q-2 137 -45 244.5t-99.5 165t-127 96.5t-109.5 51t-65 16h-4z" />
98<glyph unicode="y" horiz-adv-x="868" d="M41 1169.5q0 24.5 3 145.5q3 119 5 119q1 0 4.5 -0.5t7 -0.5h9.5q18 1 38.5 0t20.5 -3v-5q-9 -89 -9 -166q0 -205 64 -321q56 -105 164 -105q8 0 17 1q233 16 313 149l-10 449q92 0 92 4t1 -98.5t2 -247.5l2 -295q1 -150 1 -262.5t-2 -131.5q0 -2 -2 -26.5t-3 -41 t-7.5 -49t-13.5 -56t-20 -56.5t-30.5 -57.5t-43.5 -50t-57.5 -42t-73.5 -27.5t-91 -11h-12q-111 0 -189 36q-82 39 -117.5 99.5t-49.5 108.5q-11 42 -11 78v11h86q0 -25 3 -48t19.5 -62t45 -66.5t88 -51t141.5 -26.5h8q65 0 113 31q51 33 78.5 92.5t44 127t19.5 146.5t3 135 t-4 111.5t-4 59.5q0 45 -2 90q-163 -113 -322 -113q-31 0 -63 5q-80 10 -137.5 72.5t-80 143t-30.5 131t-8 75z" />
99<glyph unicode="z" horiz-adv-x="1032" d="M51 2v66q297 516 369 589q33 33 139 186l194 291q89 138 87 140h-11q-10 -2 -27.5 -4t-40 -4t-52 -4t-61.5 -4.5t-67.5 -4.5t-70.5 -2q-84 0 -181.5 3t-152.5 8l-55 4v90q0 -2 54 -7.5t151.5 -9.5t187.5 -4q215 2 436 25l2 -88q-342 -520 -424 -619q-16 -20 -46 -62 l-66 -95l-74 -110l-74 -113l-63 -98l-45 -69l-19 -26h31h81q48 0 97 -1t91 -1h53h17q88 0 198 18q120 21 192 41l74 21l-2 -90q2 -2 -61.5 -18.5t-183.5 -33t-234 -16.5z" />
100<glyph unicode="|" horiz-adv-x="315" d="M115 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h38l19 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-530h-12q-8 0 -24 -1h-9q-9 0 -16 1h-10v122q0 95 -1 231t-1 145z" />
101<glyph unicode="&#xa1;" horiz-adv-x="333" d="M131 1075q0 -545 8 -708q2 -35 6 -243q3 -139 3 -185q0 -23 -1 -23l19 2h39l18 2l-4 430q0 18 -2 193.5t-5 350.5t-3 179zM133 1354l84 4l-4 -189q-18 2 -38 3t-38 -1z" />
102<glyph unicode="&#xa7;" horiz-adv-x="1705" />
103<glyph unicode="&#xa8;" horiz-adv-x="559" d="M63 1522l3 94l94 -4l4 -90h-101zM371 1522l8 96l92 4v-100h-100z" />
104<glyph unicode="&#xaa;" d="M49 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 31 -16 70q-18 41 -59 67q-33 23 -103.5 35.5t-145.5 15.5q-55 2 -109 2h-36q-71 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 12q26 1 54 1q106 0 231 -13 q158 -18 219 -63q70 -49 85 -151q6 -46 6 -103q0 -72 -10 -165q-19 -165 -19 -208q0 -86 9 -251t17 -288l9 -120q-82 2 -82 6l-13 172q-25 -18 -66.5 -44t-144.5 -68q-93 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-100.5 163.5q-21 67 -21 147q0 50 8 104zM146 352 q40 -104 116 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 114q-7 141 -16.5 274t-11.5 131l-6 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-38 -7q-17 -3 -43.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5t-98.5 -57.5t-58 -93 q-24 -68 -24 -129q0 -55 20 -105z" />
105<glyph unicode="&#xad;" horiz-adv-x="677" d="M31 735q18 0 164.5 -3t291 -7t150.5 -4l2 -74q-440 0 -604 8z" />
106<glyph unicode="&#xb2;" horiz-adv-x="796" d="M2 8l6 84q25 18 65 51t144.5 130.5t184 190.5t148 213t75.5 216q2 31 2 60q0 85 -17 155q-24 94 -66 144.5t-85 76t-84 27.5h-11q-43 0 -111 -14q-77 -15 -130 -31l-55 -17l-6 12l-10 21l-11 23q-4 8 -2 6l31 14q31 14 79 30.5t107 29.5q39 9 81 9q21 0 43 -2 q66 -7 125.5 -36t111 -102.5t79.5 -184.5q17 -74 17 -144q0 -44 -7 -86q-16 -110 -66 -212.5t-116.5 -191.5t-140.5 -160.5t-135.5 -124t-100.5 -80.5l-41 -27l670 2l-6 -90q-4 4 -385 6z" />
107<glyph unicode="&#xb3;" horiz-adv-x="825" d="M43 113l4 18q4 16 6 33l4 18q207 -98 244 -104q16 -2 46 -3h13q28 0 70 3q53 4 101.5 26.5t91.5 59.5t63 108q13 44 13 97q0 34 -5 71q-25 193 -239 219q-28 3 -52.5 3t-46.5 -3v97h28q19 0 65.5 15t82 46t64.5 102.5t29 174.5q0 115 -55.5 176t-134.5 66q-25 2 -49 2 q-54 0 -108 -8q-77 -11 -133 -32l-55 -20q-27 59 -33 63q206 94 349 94q147 0 227 -100q37 -45 57 -110q23 -74 25 -143v-16q0 -58 -13 -102q-14 -49 -37.5 -92t-50 -70.5t-51 -47t-39.5 -29.5l-16 -8q10 0 28.5 -2t63.5 -17.5t81 -41t67.5 -82t35.5 -134.5q1 -19 1 -38 q0 -137 -65 -234q-75 -111 -178 -151q-76 -29 -150 -29q-28 0 -56 4q-39 6 -76 15t-65.5 20.5t-54 23.5t-43 22.5t-31 20.5t-17.5 15z" />
108<glyph unicode="&#xb4;" horiz-adv-x="677" d="M135 1571q4 0 46 16.5t97.5 43t83.5 44.5q23 16 44.5 44t31.5 46l8 21l76 -55l-4 -9q-4 -8 -12 -21t-18.5 -28.5t-26 -32t-29.5 -26.5q-25 -16 -92.5 -44t-123.5 -48q-51 -19 -57 -19h-1l-11 33q-8 31 -12 35z" />
109<glyph unicode="&#xb8;" horiz-adv-x="1323" d="M516 -401l4 18l12 37l9 18l20 -4q18 -2 44 -4t52.5 0t46 14.5t21.5 36.5v7q0 56 -79 56q-18 0 -40 -3l-16 -2l-41 49q27 201 29 201q84 0 84 -3l-25 -167q2 -2 20.5 0t47 -5.5t55 -19.5t42.5 -44q11 -23 11 -53q0 -11 -2 -24q-6 -43 -38 -69.5t-65.5 -36t-83.5 -10.5h-30 q-26 0 -37 1q-16 2 -39 7h-2z" />
110<glyph unicode="&#xb9;" horiz-adv-x="499" d="M20 1319q0 -2 84 50l111 69v2l18 -2h37l21 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-245h174l3 -60l-338 -16q-20 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708q0 10 2 70.5t4 143.5t2 136l-166 -92q-2 4 -5 12.5t-9 23.5t-10 26z" />
111<glyph unicode="&#xba;" horiz-adv-x="1175" d="M51 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93 q186 0 318 188.5t132 454.5q0 141 -58 292t-118 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455z" />
112<glyph unicode="&#xbc;" horiz-adv-x="2260" d="M20 1319q0 -2 84 50l111 69v2l18 -2h37l21 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-245h174l3 -60l-338 -16q-20 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708q0 10 2 70.5t4 143.5t2 136l-166 -92q-2 4 -5 12.5t-9 23.5t-10 26zM499 2 q2 6 201.5 319.5t212.5 344.5q8 23 87 215l150 372l74 183h24q21 0 46 -2h22q-307 -717 -332 -801q-10 -37 -107 -195l-190 -299l-92 -141q-86 0 -96 4zM1345 524l651 910v6l18 -2h39l19 -2v-4h4l-4 -9q-2 -31 -4 -210q-1 -89 -1 -141t1 -66q0 -57 -9 -431q240 -12 250 -18 l-6 -76q-125 12 -246 19q0 -43 -1 -89t-2 -71t-1 -27v-245h174l2 -60l-338 -16q-18 2 -36 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 109 2 223q-45 2 -79 2t-57 -2l-444 -49zM1439 528l99 16q61 9 206 24q127 12 215 12h23q4 389 6 409q0 10 1 63.5t3 131.5t2 129z" />
113<glyph unicode="&#xbd;" horiz-adv-x="2112" d="M20 1319q0 -2 84 50l111 69v2l18 -2h37l21 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-245h174l3 -60l-338 -16q-20 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708q0 10 2 70.5t4 143.5t2 136l-166 -92q-2 4 -5 12.5t-9 23.5t-10 26zM499 2 q2 6 201.5 319.5t212.5 344.5q8 23 87 215l150 372l74 183h24q21 0 46 -2h22q-307 -717 -332 -801q-10 -37 -107 -195l-190 -299l-92 -141q-86 0 -96 4zM1318 8l6 84q25 18 65 51t144.5 130.5t184 190.5t148 213t75.5 216q2 31 2 60q0 85 -17 155q-24 94 -66 144.5t-85 76 t-84 27.5h-11q-43 0 -111 -14q-77 -15 -130 -31l-55 -17l-6 12l-10 21l-11 23q-4 8 -2 6l31 14q31 14 79 30.5t107 29.5q39 9 81 9q21 0 43 -2q66 -7 125.5 -36t111 -102.5t79.5 -184.5q17 -74 17 -144q0 -44 -7 -86q-16 -110 -66 -212.5t-116.5 -191.5t-140.5 -160.5 t-135.5 -124t-100.5 -80.5l-41 -27l670 2l-6 -90q-4 4 -385 6z" />
114<glyph unicode="&#xbe;" horiz-adv-x="2586" d="M43 113l4 18q4 16 6 33l4 18q207 -98 244 -104q16 -2 46 -3h13q28 0 70 3q53 4 101.5 26.5t91.5 59.5t63 108q13 44 13 97q0 34 -5 71q-25 193 -239 219q-28 3 -52.5 3t-46.5 -3v97h28q19 0 65.5 15t82 46t64.5 102.5t29 174.5q0 115 -55.5 176t-134.5 66q-25 2 -49 2 q-54 0 -108 -8q-77 -11 -133 -32l-55 -20q-27 59 -33 63q206 94 349 94q147 0 227 -100q37 -45 57 -110q23 -74 25 -143v-16q0 -58 -13 -102q-14 -49 -37.5 -92t-50 -70.5t-51 -47t-39.5 -29.5l-16 -8q10 0 28.5 -2t63.5 -17.5t81 -41t67.5 -82t35.5 -134.5q1 -19 1 -38 q0 -137 -65 -234q-75 -111 -178 -151q-76 -29 -150 -29q-28 0 -56 4q-39 6 -76 15t-65.5 20.5t-54 23.5t-43 22.5t-31 20.5t-17.5 15zM825 2q2 6 201.5 319.5t212.5 344.5q8 23 87 215l150 372l74 183h24q21 0 46 -2h22q-307 -717 -332 -801q-10 -37 -107 -195l-190 -299 l-92 -141q-86 0 -96 4zM1671 524l651 910v6l18 -2h39l19 -2v-4h4l-4 -9q-2 -31 -4 -210q-1 -89 -1 -141t1 -66q0 -57 -9 -431q240 -12 250 -18l-6 -76q-125 12 -246 19q0 -43 -1 -89t-2 -71t-1 -27v-245h174l2 -60l-338 -16q-18 2 -36 2l6 69q55 2 121 3q0 45 -1 126.5 t-1 88.5q0 109 2 223q-45 2 -79 2t-57 -2l-444 -49zM1765 528l99 16q61 9 206 24q127 12 215 12h23q4 389 6 409q0 10 1 63.5t3 131.5t2 129z" />
115<glyph unicode="&#xbf;" horiz-adv-x="761" d="M6 303q31 266 350 375q111 39 207 45q-25 324 -28 324l83 2l29 -375q-12 -6 -111.5 -29.5t-188.5 -53.5t-172 -104.5t-93 -179.5q-3 -36 -3 -68q0 -65 13 -115q21 -75 69 -112t101 -53t125 -18h28q153 0 294 61q28 -78 30 -78l-10 -2q-8 -4 -27 -9l-42 -11 q-23 -6 -54 -12.5t-62.5 -11.5t-68.5 -9t-69 -6q-16 -1 -32 -1q-39 0 -76 4q-50 5 -113.5 29.5t-104.5 68.5t-65 132q-14 55 -14 122q0 41 5 85zM524 1327l84 -4l-4 -182q-2 2 -19.5 1t-35.5 -3h-21z" />
116<glyph unicode="&#xc0;" horiz-adv-x="989" d="M43 4l27 115l72 300l87 367q-18 4 -24 9q-68 25 -146 118l43 48q25 -31 97 -74q25 -14 49 -25l65 270l52 224l18 69l113 5l493 -1426q-82 -12 -84 -12l-252 758q-45 -2 -83 -2t-70 2q-139 10 -191 18q-147 -629 -153 -651l-47 -117zM264 1751l76 55q33 -76 84 -110 q29 -20 84 -46t97 -42.5t46 -16.5q-4 -4 -12 -35l-10 -32q-2 -2 -58.5 18.5t-124 48t-92.5 43.5q-14 10 -29.5 26.5t-25.5 32.5l-18 29q-9 13 -13 21zM328 844q16 -2 49 -2q57 -6 252 -23q-178 537 -180 537q-4 0 -121 -512z" />
117<glyph unicode="&#xc1;" horiz-adv-x="946" d="M27 4l65 -4q29 63 47 117q6 23 154 651q51 -8 190 -18q31 -2 69.5 -2t84.5 2l252 -758l84 12l-494 1426q-113 0 -112 -5l-19 -69l-52 -223l-65 -271q-25 10 -49 25q-33 18 -56.5 36.5t-31.5 26.5l-8 11l-43 -48q78 -94 145 -118q6 -4 25 -9l-55 -228l-50 -213l-42 -175 l-29 -121zM270 1587q4 0 46 16.5t97.5 43t84.5 45.5q23 16 44 43.5t31 46.5l9 20l75 -55l-4 -8q-4 -8 -12 -21.5t-18.5 -29t-25.5 -32t-30 -26.5q-25 -16 -92 -43.5t-123.5 -48t-58.5 -18.5l-10 32q-8 31 -13 35zM311 844q117 512 121 512q2 0 180 -537q-195 16 -252 23 q-33 0 -49 2z" />
118<glyph unicode="&#xc2;" horiz-adv-x="946" d="M27 4l65 -4q29 63 47 117q6 23 154 651q51 -8 190 -18q31 -2 69.5 -2t84.5 2l252 -758l84 12l-494 1426q-113 0 -112 -5l-19 -69l-52 -223l-65 -271q-25 10 -49 25q-33 18 -56.5 36.5t-31.5 26.5l-8 11l-43 -48q78 -94 145 -118q6 -4 25 -9l-55 -228l-50 -213l-42 -175 l-29 -121zM209 1595q18 6 138 84t120 82q0 2 68 -40l137 -83l69 -43l-61 -59l-217 139l-184 -127q-57 41 -70 47zM311 844q117 512 121 512q2 0 180 -537q-195 16 -252 23q-33 0 -49 2z" />
119<glyph unicode="&#xc3;" horiz-adv-x="946" d="M27 4l65 -4q29 63 47 117q6 23 154 651q51 -8 190 -18q31 -2 69.5 -2t84.5 2l252 -758l84 12l-494 1426q-113 0 -112 -5l-19 -69l-52 -223l-65 -271q-25 10 -49 25q-33 18 -56.5 36.5t-31.5 26.5l-8 11l-43 -48q78 -94 145 -118q6 -4 25 -9l-55 -228l-50 -213l-42 -175 l-29 -121zM215 1594v13v8v5v2l18 12q20 14 60.5 29.5t83.5 15.5q63 -2 117.5 -30.5t70.5 -32.5q20 -4 62.5 10t72.5 33l31 16v-84q-12 -6 -30.5 -17t-63.5 -27q-36 -12 -61 -12q-7 0 -13 1q-25 4 -78 33.5t-106 32.5q-43 0 -84 -15.5t-59 -32.5l-19 -16v2v7v11v11q0 6 -1 12 t-1 13zM311 844q117 512 121 512q2 0 180 -537q-195 16 -252 23q-33 0 -49 2z" />
120<glyph unicode="&#xc4;" horiz-adv-x="946" d="M27 4l65 -4q29 63 47 117q6 23 154 651q51 -8 190 -18q31 -2 69.5 -2t84.5 2l252 -758l84 12l-494 1426q-113 0 -112 -5l-19 -69l-52 -223l-65 -271q-25 10 -49 25q-33 18 -56.5 36.5t-31.5 26.5l-8 11l-43 -48q78 -94 145 -118q6 -4 25 -9l-55 -228l-50 -213l-42 -175 l-29 -121zM227 1645l2 94l95 -4l4 -90h-101zM311 844q117 512 121 512q2 0 180 -537q-195 16 -252 23q-33 0 -49 2zM535 1645l8 96l92 4v-100h-100z" />
121<glyph unicode="&#xc6;" horiz-adv-x="1548" d="M-100 2q-2 -2 118 204l285 484l-27 10q-68 25 -145 119l43 47q25 -31 96 -73q37 -23 74 -33l395 674q4 2 11 2v4l18 -2h39l18 -2h99q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-705 6q-4 -184 -4 -277q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q16 0 26 -1q29 -2 165 -3 t158 -1q25 0 66 -1t63 -3h25l2 -68l-588 4q-8 -328 -8 -336v-247q12 0 55 2t62 0q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-774 6v2h-19v65q0 50 -1 126.5t-1 89.5q0 201 2 374q-44 -2 -85 -2t-79 2q-137 10 -188 19l-324 -539q-31 -47 -71 -137zM428 750q2 0 10 -1 t11 -1q195 -23 288 -25q0 233 4 266q0 8 1 55.5t3.5 117t2.5 120.5z" />
122<glyph unicode="&#xc7;" horiz-adv-x="868" d="M41 705v15q0 209 109 397q112 196 282 259q100 37 210 51q97 13 154 13h15q59 -2 59 -6l-4 -72q-25 1 -49 1q-203 0 -364 -75q-139 -63 -224.5 -214.5t-93.5 -366.5v-22q0 -131 65 -268q70 -149 176.5 -245t203.5 -100q20 -1 39 -1q67 0 125 11q73 14 102 31l28 16 l19 -92q-92 -41 -254 -47l-21 -137q2 -2 20.5 0t47.5 -5.5t55.5 -19.5t42.5 -44q11 -23 11 -53q0 -11 -2 -24q-6 -43 -38 -69.5t-66 -36t-84 -10.5h-30q-25 0 -36 1q-17 2 -39 7h-2l6 18q4 18 12 37l6 18l19 -4q20 -2 45.5 -4t52.5 0t46.5 14.5t21.5 36.5v7q0 56 -79 56 q-18 0 -40 -3q-16 -2 -17 -2l-41 49q14 113 23 168q-119 14 -238.5 134t-195.5 281.5t-78 299.5z" />
123<glyph unicode="&#xc8;" horiz-adv-x="866" d="M53 281q0 545 8 708q2 35 7 243q3 144 3 188q0 20 -1 20l18 -2h39l18 -2h99q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-705 4q-4 -183 -4 -275q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q16 0 26 -1q29 -2 165 -3t158 -1q25 0 66 -1t63 -3h25l2 -68l-588 4 q-8 -328 -8 -336v-247q12 0 55 2t62 0q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-774 6v2h-19v66q0 49 -1 125.5t-1 89.5zM236 1741l75 55q33 -76 84 -110q29 -20 84.5 -46t97 -42.5t46.5 -16.5q-4 -4 -13 -37l-10 -31h-1q-6 0 -58 18q-56 21 -123.5 49t-91.5 44 q-14 10 -29.5 26.5t-26 32t-18.5 28.5t-12 22z" />
124<glyph unicode="&#xc9;" horiz-adv-x="866" d="M53 281q0 545 8 708q2 35 7 243q3 144 3 188q0 20 -1 20l18 -2h39l18 -2h99q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-705 4q-4 -183 -4 -275q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q16 0 26 -1q29 -2 165 -3t158 -1q25 0 66 -1t63 -3h25l2 -68l-588 4 q-8 -328 -8 -336v-247q12 0 55 2t62 0q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-774 6v2h-19v66q0 49 -1 125.5t-1 89.5zM242 1632q4 0 46 16.5t97 43t84 45.5q23 16 44.5 43.5t31.5 46.5l8 20l76 -55l-4 -8q-4 -8 -13 -22l-18 -28q-10 -16 -25.5 -32t-29.5 -27 q-25 -16 -92.5 -43.5t-124.5 -47.5q-51 -19 -57 -19h-1l-10 32q-8 31 -12 35z" />
125<glyph unicode="&#xca;" horiz-adv-x="866" d="M53 281q0 545 8 708q2 35 7 243q3 144 3 188q0 20 -1 20l18 -2h39l18 -2h99q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-705 4q-4 -183 -4 -275q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q16 0 26 -1q29 -2 165 -3t158 -1q25 0 66 -1t63 -3h25l2 -68l-588 4 q-8 -328 -8 -336v-247q12 0 55 2t62 0q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-774 6v2h-19v66q0 49 -1 125.5t-1 89.5zM170 1595q18 6 138 84t120 82q0 2 68 -40l139 -83l67 -43l-61 -59l-217 139l-184 -127q-57 41 -70 47z" />
126<glyph unicode="&#xcb;" horiz-adv-x="866" d="M53 281q0 545 8 708q2 35 7 243q3 144 3 188q0 20 -1 20l18 -2h39l18 -2h99q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-705 4q-4 -183 -4 -275q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q16 0 26 -1q29 -2 165 -3t158 -1q25 0 66 -1t63 -3h25l2 -68l-588 4 q-8 -328 -8 -336v-247q12 0 55 2t62 0q29 -2 221 -2h229q27 0 64 2t61 2l23 2l6 -80l-774 6v2h-19v66q0 49 -1 125.5t-1 89.5zM229 1624l2 94l95 -4l4 -90h-101zM537 1624l8 96l92 4v-100h-100z" />
127<glyph unicode="&#xcc;" horiz-adv-x="434" d="M20 1745l76 55q33 -76 84 -110q29 -20 84 -46t97 -42.5t47 -16.5q-4 -4 -15 -37l-8 -30q-2 -2 -58.5 18t-124 48t-91.5 44q-14 10 -29.5 26.5t-26 32t-18.5 29t-12 21.5zM41 1382l2 60q0 2 37 2t91 -1l109 -2q54 -1 93 -3h37q4 -70 6 -70q-6 0 -37 -2q-4 -1 -19 -1 q-29 0 -102 3q-4 -184 -4 -278q0 -62 2 -84q0 -18 -3 -186.5t-7 -334.5t-4 -172v-245h174l2 -60l-338 -16q-18 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708q2 23 8 383z" />
128<glyph unicode="&#xcd;" horiz-adv-x="434" d="M41 1382l2 60q0 2 37 2t91 -1l109 -2q54 -1 93 -3h37q4 -70 6 -70q-6 0 -37 -2q-4 -1 -19 -1q-29 0 -102 3q-4 -184 -4 -278q0 -62 2 -84q0 -18 -3 -186.5t-7 -334.5t-4 -172v-245h174l2 -60l-338 -16q-18 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708 q2 23 8 383zM59 1618q4 0 46 16.5t97.5 43t84.5 44.5q23 16 44 44t29 49l11 18l75 -55l-4 -9q-4 -8 -12 -21t-18.5 -28.5t-25.5 -32t-30 -26.5q-25 -16 -92 -44t-124 -48q-51 -19 -57 -19h-1l-8 31q-10 33 -15 37z" />
129<glyph unicode="&#xce;" horiz-adv-x="438" d="M-43 1595q16 8 135 85t119 81q0 2 69 -40l138 -83l67 -43l-61 -59l-217 139l-184 -127q-53 41 -66 47zM41 1382l2 60q0 2 37 2t91 -1l109 -2q54 -1 93 -3h37q4 -70 6 -70q-6 0 -37 -2q-4 -1 -19 -1q-29 0 -102 3q-4 -184 -4 -278q0 -62 2 -84q0 -18 -3 -186.5t-7 -334.5 t-4 -172v-245h174l2 -60l-338 -16q-18 2 -37 2l6 69q55 2 121 3q0 45 -1 126.5t-1 88.5q0 545 8 708q2 23 8 383z" />
130<glyph unicode="&#xcf;" horiz-adv-x="434" d="M14 1563l2 94l95 -4l4 -90h-101zM41 1382l2 60q0 2 37 2t91 -1l109 -2q54 -1 93 -3h37q4 -70 6 -70q-6 0 -37 -2q-4 -1 -19 -1q-29 0 -102 3q-4 -184 -4 -278q0 -62 2 -84q0 -18 -3 -186.5t-7 -334.5t-4 -172v-245h174l2 -60l-338 -16q-18 2 -37 2l6 69q55 2 121 3 q0 45 -1 126.5t-1 88.5q0 545 8 708q2 23 8 383zM322 1563l8 96l92 4v-100h-100z" />
131<glyph unicode="&#xd1;" horiz-adv-x="1038" d="M123 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2v-4l16 -2l611 -1258q4 430 4 576q0 33 -5 253t-7 240q-2 8 -3.5 31.5t-1.5 50.5t-1 52.5t-1 41.5v15l21 2l41 4l22 4q-1 -51 -1 -89q0 -75 3 -100v-1253h-18h-35l-18 2l-629 1288q-3 -169 -3 -239 q0 -35 1 -45q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-8 0 -24 -1h-9q-9 0 -16 1h-10v66q0 49 -1 125.5t-1 89.5zM260 1595v12v8v5v2l19 12q20 14 60 29.5t83 15.5q63 -2 117.5 -30.5t70.5 -32.5q20 -4 62.5 10t72.5 33l31 16v-84q-12 -6 -30.5 -17t-63.5 -27 q-36 -12 -61 -12q-7 0 -13 1q-25 4 -78 33.5t-106 32.5q-43 0 -84 -15.5t-59 -32.5l-19 -16v2v7v11v11q0 6 -1 12t-1 14z" />
132<glyph unicode="&#xd2;" horiz-adv-x="1214" d="M55 702q0 139 64 347q37 121 119 213q150 170 354.5 170t359.5 -189q45 39 82 53q104 38 179 38q14 0 26 -1v-88q-13 1 -26 1q-115 0 -187 -50l-27 -20q53 -86 88 -197q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68 t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318.5 188.5t132.5 454.5q0 195 -115 416q-239 -200 -471 -200q-33 0 -66 4q-162 18 -186 141q-64 -154 -64 -361zM238 1262q10 -1 10 -11zM279 1131v-15q0 -28 10 -51 q14 -29 64 -51q46 -19 120 -19h14q88 2 170 36t127 66.5t105 88.5l-19 26q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-10 -53.5zM410 1745l75 55q33 -76 84 -110q29 -20 84.5 -46t97.5 -42.5t46 -16.5q-4 -4 -15 -37l-8 -30h-1q-6 0 -58 18q-56 20 -123.5 48 t-91.5 44q-14 10 -29.5 26.5t-26 32t-18.5 29t-12 21.5z" />
133<glyph unicode="&#xd3;" horiz-adv-x="1214" d="M55 702q0 139 64 347q37 121 119 213q150 170 354.5 170t359.5 -189q45 39 82 53q104 38 179 38q14 0 26 -1v-88q-13 1 -26 1q-115 0 -187 -50l-27 -20q53 -86 88 -197q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68 t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318.5 188.5t132.5 454.5q0 195 -115 416q-239 -200 -471 -200q-33 0 -66 4q-162 18 -186 141q-64 -154 -64 -361zM238 1262l10 -11zM279 1131v-15q0 -28 10 -51q14 -29 64 -51 q46 -19 120 -19h14q88 2 170 36t127 66.5t105 88.5l-19 26q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-10 -53.5zM416 1608q4 0 46 16t97 43t84 45q23 16 44.5 44t29.5 46l10 21l76 -56l-4 -8q-4 -8 -13 -22l-18 -28q-10 -15 -25.5 -31.5t-29.5 -26.5 q-25 -16 -92.5 -44t-124.5 -49q-51 -18 -57 -18h-1l-8 33q-10 31 -14 35z" />
134<glyph unicode="&#xd4;" horiz-adv-x="1183" d="M51 702q0 139 64 347q36 121 118 213q150 170 355 170t360 -189q45 39 82 53q104 38 179 38q14 0 26 -1v-88q-13 1 -26 1q-115 0 -187 -50l-27 -20q53 -86 88 -197q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186 q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318 188.5t132 454.5q0 195 -114 416q-239 -200 -471 -200q-33 0 -66 4q-162 18 -186 141q-64 -154 -64 -361zM233 1262l11 -11zM275 1131v-15q0 -28 10 -51q14 -29 64 -51q46 -19 120 -19h14 q88 2 170 36t127 66.5t105 88.5l-19 26q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-10 -53.5zM326 1595q18 6 138 84t120 82q0 2 68 -40l139 -83l67 -43l-61 -59l-217 139l-185 -127q-57 41 -69 47z" />
135<glyph unicode="&#xd5;" horiz-adv-x="1183" d="M51 702q0 139 64 347q36 121 118 213q150 170 355 170t360 -189q45 39 82 53q104 38 179 38q14 0 26 -1v-88q-13 1 -26 1q-115 0 -187 -50l-27 -20q53 -86 88 -197q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186 q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318 188.5t132 454.5q0 195 -114 416q-239 -200 -471 -200q-33 0 -66 4q-162 18 -186 141q-64 -154 -64 -361zM233 1262l11 -11zM275 1131v-15q0 -28 10 -51q14 -29 64 -51q46 -19 120 -19h14 q88 2 170 36t127 66.5t105 88.5l-19 26q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-10 -53.5zM334 1594v13v8v5v2l18 12q20 14 60.5 29.5t83.5 15.5q63 -2 117.5 -30.5t70.5 -32.5q20 -4 62 10t73 33l31 16v-84q-12 -6 -30.5 -17t-63.5 -27q-36 -12 -61 -12 q-7 0 -13 1q-25 4 -78 33.5t-106 32.5q-43 0 -84 -15.5t-60 -32.5l-18 -16v2v7v10v12q0 6 -1 12t-1 13z" />
136<glyph unicode="&#xd6;" horiz-adv-x="1214" d="M55 702q0 139 64 347q37 121 119 213q150 170 354.5 170t359.5 -189q45 39 82 53q104 38 179 38q14 0 26 -1v-88q-13 1 -26 1q-115 0 -187 -50l-27 -20q53 -86 88 -197q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68 t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318.5 188.5t132.5 454.5q0 195 -115 416q-239 -200 -471 -200q-33 0 -66 4q-162 18 -186 141q-64 -154 -64 -361zM238 1262l10 -11zM279 1131v-15q0 -28 10 -51q14 -29 64 -51 q46 -19 120 -19h14q88 2 170 36t127 66.5t105 88.5l-19 26q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-10 -53.5zM403 1513l3 95l94 -4l4 -91h-101zM711 1513l8 97l92 4v-101h-100z" />
137<glyph unicode="&#xd7;" horiz-adv-x="548" d="M23 506l186 178q-150 154 -178 186l53 60q23 -18 182 -191l197 187l53 -52l-197 -190l83 -88l72 -76q24 -26 28 -28l-49 -56l-189 193l-182 -176z" />
138<glyph unicode="&#xd8;" horiz-adv-x="1183" d="M51 702q0 139 64 347q36 121 118 213q150 170 355 170t360 -189q45 39 82 53q104 38 179 38q14 0 26 -1v-88q-13 1 -26 1q-115 0 -187 -50l-27 -20q53 -86 88 -197q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-143 0 -264 93l-45 -70 q-86 0 -97 4l76 125q-49 53 -78 102q-129 205 -129 473zM141 700q0 -133 50.5 -273t111.5 -230q270 416 293 469q23 57 156 325q-140 -76 -285 -76q-38 0 -76 5q-162 18 -186 141q-64 -154 -64 -361zM233 1262l11 -11zM275 1131v-15q0 -28 10 -51q14 -29 64 -51 q46 -19 120 -19h14q88 2 170 36t127 66.5t105 88.5l-19 26q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-10 -53.5zM365 129q92 -72 227 -72q186 0 318 188.5t132 454.5q0 195 -114 416l-41 -33q-199 -378 -219 -450q-23 -70 -303 -504z" />
139<glyph unicode="&#xd9;" horiz-adv-x="1075" d="M139 1436h7q4 0 14 1t18 1t17.5 1t13.5 1h6q-1 0 -1 -23q0 -46 3 -185q4 -208 6 -243q10 -169 10 -363q0 -121 -4 -253q2 -25 8.5 -54.5t28 -73.5t54 -79t92 -61.5t135.5 -28.5h18q87 0 154 35q74 39 110.5 100t52 100t21.5 70q-12 516 -12 608v17l-4 430h6q4 0 14.5 1 t18.5 1t17 1t15 1h5q-1 0 -1 -23q0 -46 3 -185q4 -208 6 -243q2 -33 8 -602v-106q0 -12 -1 -89t-1 -126v-66h-19h-34h-19v188q-116 -184 -337 -184h-21q-109 4 -188.5 46t-116.5 92.5t-58.5 112.5t-24.5 90t-3 42l-13 619zM340 1745l76 55q33 -76 84 -110q29 -20 84 -46 t97 -42.5t46 -16.5q-4 -4 -14 -37l-8 -30h-1q-6 0 -57 18q-57 20 -124.5 48t-92.5 44q-14 10 -29.5 26.5t-25.5 32.5l-18 29q-9 13 -13 21z" />
140<glyph unicode="&#xda;" horiz-adv-x="1075" d="M139 1436l4 -430l13 -619q0 -14 3 -42t24.5 -90t58.5 -112.5t116.5 -92.5t188.5 -46h19q224 0 339 184v-188h13q8 0 23 -1h10q9 0 16 1h10v66q0 49 1 125.5t1 89.5q0 545 -8 708q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-19 -2h-39l-18 -2l4 -430v-17q0 -92 12 -608 q-6 -31 -21.5 -70t-52 -100t-110.5 -100q-67 -35 -154 -35h-18q-76 2 -135.5 28.5t-92 61.5t-54 79t-28 73.5t-8.5 54.5q4 132 4 253q0 194 -10 363q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-18 -2h-37zM346 1608q4 0 46 16t97.5 43t83.5 45q23 16 44.5 44t29.5 46l10 21 l76 -56l-4 -8q-4 -8 -12 -21.5t-18.5 -28.5t-26 -31.5t-29.5 -26.5q-25 -16 -92.5 -44t-123.5 -48q-51 -19 -57 -19h-1l-9 33q-10 31 -14 35z" />
141<glyph unicode="&#xdb;" horiz-adv-x="1064" d="M102 1436l4 -430l13 -619q0 -14 3 -42t24.5 -90t58.5 -112.5t116.5 -92.5t188.5 -46h19q224 0 339 184v-188h13q8 0 24 -1h9q9 0 16 1h10v66q0 49 1 125.5t1 89.5v106q-6 569 -8 602q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-19 -2h-39l-18 -2l4 -430v-17q0 -92 12 -608 q-6 -31 -21.5 -70t-52 -100t-110.5 -100q-67 -35 -154 -35h-18q-76 2 -135.5 28.5t-92 61.5t-54 79t-27.5 73.5t-8 54.5q4 127 4 244q0 199 -11 372q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-18 -2h-37zM266 1595q18 6 138 84t120 82q0 2 69 -40l136 -83l70 -43l-62 -59 l-217 139l-184 -127q-57 41 -70 47z" />
142<glyph unicode="&#xdc;" horiz-adv-x="1075" d="M139 1436l4 -430l13 -619q0 -14 3 -42t24.5 -90t58.5 -112.5t116.5 -92.5t188.5 -46h19q224 0 339 184v-188h13q8 0 23 -1h10q9 0 16 1h10v66q0 49 1 125.5t1 89.5v106q-6 569 -8 602q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-19 -2h-39l-18 -2l4 -430v-17q0 -92 12 -608 q-6 -31 -21.5 -70t-52 -100t-110.5 -100q-67 -35 -154 -35h-18q-76 2 -135.5 28.5t-92 61.5t-54 79t-28 73.5t-8.5 54.5q4 132 4 253q0 194 -10 363q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-18 -2h-37zM334 1602l2 94l94 -4l4 -90h-100zM641 1602l8 96l92 4v-100h-100z" />
143<glyph unicode="&#xdd;" horiz-adv-x="946" d="M49 1430l41 -80l87 -166q44 -86 50 -101q12 -35 244 -436q-6 -119 -6 -360q0 -12 1 -89t1 -126v-66h16h37h19v313q0 23 3 87.5t6 150.5t5 127l61 141q8 20 140.5 313.5t134.5 293.5l-23 2q-23 0 -47 2l-24 2q0 2 -37 -89.5t-45 -113.5l-209 -463l-211 379l-152 281 q-2 2 -47 1t-45 -3zM283 1608q4 0 46 16t97 43t84 45q23 16 44 44t32 46l8 21l76 -56l-4 -8q-4 -8 -12 -21l-19 -29q-10 -15 -25.5 -31.5t-29.5 -26.5q-25 -16 -92.5 -44t-123.5 -48q-52 -19 -58 -19h-1l-10 33q-8 31 -12 35z" />
144<glyph unicode="&#xe0;" d="M49 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 31 -17 70q-17 41 -58 67q-33 23 -103.5 35.5t-145.5 15.5q-55 2 -109 2h-36q-71 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 13h54q106 0 231 -13 q158 -18 219 -63q70 -49 85 -151q6 -46 6 -103q0 -72 -10 -165q-19 -165 -19 -208q0 -86 9 -251t17 -288l9 -120q-82 2 -82 6l-13 172q-25 -18 -66.5 -44t-144.5 -68q-93 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-100.5 164.5q-21 66 -21 146q0 50 8 104zM145 352 q41 -104 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 115q-7 140 -16.5 273t-11.5 131l-6 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-39 -7q-16 -3 -42.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5t-98.5 -57.5t-58 -93 q-24 -68 -24 -129q0 -55 19 -105zM319 1731l76 55q33 -76 84 -111q29 -20 84 -45.5t97 -42t47 -16.5q-4 -4 -15 -35l-8 -33h-1q-6 0 -58 18l-123.5 48.5t-91.5 44.5q-14 10 -29.5 26.5t-26 32t-18.5 28.5t-12 21z" />
145<glyph unicode="&#xe1;" d="M49 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 31 -17 70q-17 41 -58 67q-33 23 -103.5 35.5t-145.5 15.5q-55 2 -109 2h-36q-71 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 13h54q106 0 231 -13 q158 -18 219 -63q70 -49 85 -151q6 -46 6 -103q0 -72 -10 -165q-19 -165 -19 -208q0 -86 9 -251t17 -288l9 -120q-82 2 -82 6l-13 172q-25 -18 -66.5 -44t-144.5 -68q-93 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-100.5 164.5q-21 66 -21 146q0 50 8 104zM145 352 q41 -104 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 115q-7 140 -16.5 273t-11.5 131l-6 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-39 -7q-16 -3 -42.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5t-98.5 -57.5t-58 -93 q-24 -68 -24 -129q0 -55 19 -105zM324 1571q4 0 46 16.5t97 43t84 44.5q23 16 44 44t32 46l8 21l76 -55l-4 -9q-4 -8 -13 -21l-18 -29q-10 -15 -25.5 -31.5t-29.5 -26.5q-25 -16 -92.5 -44t-124.5 -49q-51 -18 -57 -18h-1l-10 33q-8 31 -12 35z" />
146<glyph unicode="&#xe2;" d="M49 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 31 -17 70q-17 41 -58 67q-33 23 -103.5 35.5t-145.5 15.5q-55 2 -109 2h-36q-71 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 13h54q106 0 231 -13 q158 -18 219 -63q70 -49 85 -151q6 -46 6 -103q0 -72 -10 -165q-19 -165 -19 -208q0 -86 9 -251t17 -288l9 -120q-82 2 -82 6l-13 172q-25 -18 -66.5 -44t-144.5 -68q-93 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-100.5 164.5q-21 66 -21 146q0 50 8 104zM145 352 q41 -104 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 115q-7 140 -16.5 273t-11.5 131l-6 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-39 -7q-16 -3 -42.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5t-98.5 -57.5t-58 -93 q-24 -68 -24 -129q0 -55 19 -105zM248 1583q18 6 138 84t120 82q0 2 68 -40l139 -83l67 -43l-61 -59l-217 139l-185 -127q-57 41 -69 47z" />
147<glyph unicode="&#xe3;" d="M49 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 31 -17 70q-17 41 -58 67q-33 23 -103.5 35.5t-145.5 15.5q-55 2 -109 2h-36q-71 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 13h54q106 0 231 -13 q158 -18 219 -63q70 -49 85 -151q6 -46 6 -103q0 -72 -10 -165q-19 -165 -19 -208q0 -86 9 -251t17 -288l9 -120q-82 2 -82 6l-13 172q-25 -18 -66.5 -44t-144.5 -68q-93 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-100.5 164.5q-21 66 -21 146q0 50 8 104zM145 352 q41 -104 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 115q-7 140 -16.5 273t-11.5 131l-6 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-39 -7q-16 -3 -42.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5t-98.5 -57.5t-58 -93 q-24 -68 -24 -129q0 -55 19 -105zM297 1596v13v8v5v2l18 14q20 12 60.5 27.5t83.5 15.5q63 -2 117.5 -30.5t70.5 -32.5q20 -4 62.5 10t72.5 31l31 18v-84q-12 -6 -30.5 -17t-63.5 -27q-36 -12 -61 -12q-7 0 -13 1q-25 4 -78 34t-106 32q-43 0 -84 -15.5t-60 -32.5l-18 -16v2 v7v10v12q0 6 -1 12t-1 13z" />
148<glyph unicode="&#xe4;" d="M49 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 31 -17 70q-17 41 -58 67q-33 23 -103.5 35.5t-145.5 15.5q-55 2 -109 2h-36q-71 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 13h54q106 0 231 -13 q158 -18 219 -63q70 -49 85 -151q6 -46 6 -103q0 -72 -10 -165q-19 -165 -19 -208q0 -86 9 -251t17 -288l9 -120q-82 2 -82 6l-13 172q-25 -18 -66.5 -44t-144.5 -68q-93 -38 -163 -38h-13q-68 0 -138.5 25.5t-139 82t-100.5 164.5q-21 66 -21 146q0 50 8 104zM145 352 q41 -104 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 115q-7 140 -16.5 273t-11.5 131l-6 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-39 -7q-16 -3 -42.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5t-98.5 -57.5t-58 -93 q-24 -68 -24 -129q0 -55 19 -105zM338 1522l2 94l94 -4l4 -90h-100zM645 1522l8 96l92 4v-100h-100z" />
149<glyph unicode="&#xe6;" horiz-adv-x="1779" d="M8 573q14 96 76.5 161t144.5 89.5t175.5 39t170 16.5t129 13t52.5 36q2 31 10 93q9 70 9 99q0 31 -17 70q-17 41 -58 67q-33 23 -103.5 35.5t-145.5 15.5q-55 2 -109 2h-36q-70 -1 -118 -3h-45q-2 0 0 11t6.5 28.5t4.5 25.5q-2 8 126 12q26 1 54 1q106 0 231 -14 q158 -17 219 -62q66 -45 82 -160q66 131 175.5 207t238.5 76q164 0 289 -123t186 -330q23 -74 23 -277q-35 -2 -89.5 -4t-202.5 -4q-49 -1 -89 -1q-81 0 -127 3q-20 1 -41 1q-162 0 -373 -42q8 -147 64.5 -280t109.5 -185q137 -133 227 -133h3q70 2 129 34t94 68t89 67.5 t116 33.5v-28v-46l2 -24q-47 -2 -88 -27.5t-73 -58.5t-103.5 -62.5t-170.5 -38.5q-13 -1 -25 -1q-99 0 -171 58q-82 64 -166 197l-31 52l19 -258q-82 2 -82 6l-13 172q-25 -18 -66.5 -44t-143.5 -68q-94 -38 -164 -38h-13q-68 0 -138.5 25.5t-139 82t-101.5 164.5 q-20 66 -20 146q0 50 8 104zM104 352q41 -104 117 -170q72 -53 163 -53q25 0 52 4q123 19 227.5 65t112.5 68q3 6 3 40q0 39 -4 114q-7 141 -16 274t-11 131l-7 -2q-6 -2 -19 -5t-27.5 -6t-37.5 -7l-39 -7q-16 -3 -42.5 -8.5t-38.5 -7.5q-6 0 -71 -5t-103.5 -13t-97 -27.5 t-98.5 -57.5t-58 -93q-24 -68 -24 -129q0 -55 19 -105zM854 733l53 17q20 6 149 16q108 8 162 8h19q21 -1 82 -1h71q121 1 205 3q42 1 68.5 1t36.5 -1q-14 135 -65.5 258t-96.5 178q-111 133 -254 134q-190 -1 -317 -191q-106 -156 -113 -422z" />
150<glyph unicode="&#xe7;" horiz-adv-x="790" d="M55 702q0 166 64 347q47 137 154.5 227t219 124t224.5 34l4 -86q-6 0 -19 -2q-324 -35 -444 -191q-113 -145 -113 -455q0 -158 71 -325.5t130 -224.5q43 -43 183.5 -69t228.5 -26v-78q-90 0 -142 5l-18 -129q2 -2 20.5 0t47 -5.5t55.5 -19.5t42 -44q11 -23 11 -52 q0 -12 -2 -25q-6 -43 -38 -69.5t-65.5 -36t-83.5 -10.5h-30q-25 0 -36 1q-17 2 -40 7h-2l6 18q4 18 13 37l6 18l18 -4q20 -2 46 -4t52.5 0t46 14.5t21.5 36.5v7q0 56 -79 56q-18 0 -40 -3l-16 -2l-41 49q14 117 22 172q-231 41 -348 235q-129 213 -129 473z" />
151<glyph unicode="&#xe8;" horiz-adv-x="1163" d="M92 702q0 139 64 347q53 172 176 277.5t276 105.5q164 0 289 -123t186 -330q23 -74 23 -277q-35 -2 -89 -4t-201 -4q-50 -1 -90 -1q-81 0 -128 3q-18 1 -37 1q-152 0 -377 -42q8 -147 64.5 -280t109.5 -185q137 -133 227 -133h3q70 2 129 34t94 68t89 67.5t116 33.5v-28 v-46l2 -24q-47 -2 -88 -27.5t-73 -58.5t-103.5 -62.5t-169.5 -38.5q-13 -1 -25 -1q-99 0 -172 57q-82 65 -166 198q-129 205 -129 473zM182 733l54 17q20 6 149 16q108 8 161 8h19q21 -1 82 -1h71q122 1 206 3q42 1 68 1t36 -1q-14 135 -65.5 258t-96.5 178 q-111 133 -254 134q-190 0 -317 -191q-107 -156 -113 -422zM385 1731l76 55q33 -76 84 -111q29 -20 84 -45.5t97 -42t46 -16.5q-4 -4 -14 -35l-8 -33h-1q-6 0 -57 18q-57 21 -124.5 48.5t-92.5 44.5q-14 10 -29.5 26.5t-25.5 31.5l-18 29q-9 13 -13 21z" />
152<glyph unicode="&#xe9;" horiz-adv-x="1163" d="M92 702q0 -268 129 -473q84 -133 166 -197q73 -58 172 -58q12 0 25 1q98 8 169.5 38t103.5 63t73 58.5t88 27.5l-2 24v47v27q-61 -2 -115.5 -33.5t-89.5 -67.5t-94.5 -68t-128.5 -34h-3q-89 0 -227 133q-53 51 -109 184.5t-65 280.5q225 42 377 42q19 0 37 -1 q69 -3 143 -3q36 0 74 1q113 2 201 6l90 2q0 203 -23 277q-61 207 -186 330t-289 123q-154 0 -276.5 -105.5t-175.5 -277.5q-63 -207 -64 -347zM182 733q6 266 113 422q127 190 317 191q143 0 254 -134q45 -55 96.5 -178t65.5 -258q0 1 -46 1h-58q-105 -1 -208 -3 q-51 -1 -88.5 -1t-62.5 1h-19q-53 0 -161 -8q-129 -10 -149 -16zM391 1571q4 0 46 16.5t97.5 43t83.5 44.5q23 16 44.5 44t29.5 46l10 21l76 -55l-4 -9q-4 -8 -12 -21t-18.5 -28.5t-26 -32t-29.5 -26.5q-25 -16 -92.5 -44t-123.5 -48q-51 -19 -57 -19h-1l-8 33 q-10 31 -15 35z" />
153<glyph unicode="&#xea;" horiz-adv-x="1163" d="M92 702q0 -268 129 -473q84 -133 166 -197q73 -58 172 -58q12 0 25 1q98 8 169.5 38t103.5 63t73 58.5t88 27.5l-2 24v47v27q-61 -2 -115.5 -33.5t-89.5 -67.5t-94.5 -68t-128.5 -34h-3q-89 0 -227 133q-53 51 -109 184.5t-65 280.5q225 42 377 42q19 0 37 -1 q69 -3 143 -3q36 0 74 1q113 2 201 6l90 2q0 203 -23 277q-61 207 -186 330t-289 123q-154 0 -276.5 -105.5t-175.5 -277.5q-63 -207 -64 -347zM182 733q6 266 113 422q127 190 317 191q143 0 254 -134q45 -55 96.5 -178t65.5 -258q0 1 -46 1h-58q-105 -1 -208 -3 q-51 -1 -88.5 -1t-62.5 1h-19q-53 0 -161 -8q-129 -10 -149 -16zM317 1587q18 6 138 84t120 82q0 2 69 -40l138 -83l68 -43l-62 -59l-217 139l-184 -127q-57 41 -70 47z" />
154<glyph unicode="&#xeb;" horiz-adv-x="1163" d="M92 702q0 -268 129 -473q84 -133 166 -197q73 -58 172 -58q12 0 25 1q98 8 169.5 38t103.5 63t73 58.5t88 27.5l-2 24v47v27q-61 -2 -115.5 -33.5t-89.5 -67.5t-94.5 -68t-128.5 -34h-3q-89 0 -227 133q-53 51 -109 184.5t-65 280.5q225 42 377 42q19 0 37 -1 q69 -3 143 -3q36 0 74 1q113 2 201 6l90 2q0 203 -23 277q-61 207 -186 330t-289 123q-154 0 -276.5 -105.5t-175.5 -277.5q-63 -207 -64 -347zM182 733q6 266 113 422q127 190 317 191q143 0 254 -134q45 -55 96.5 -178t65.5 -258q0 1 -46 1h-58q-105 -1 -208 -3 q-51 -1 -88.5 -1t-62.5 1h-19q-53 0 -161 -8q-129 -10 -149 -16zM377 1522l2 94l94 -4l4 -90h-100zM684 1522l8 96l92 4v-100h-100z" />
155<glyph unicode="&#xec;" horiz-adv-x="309" d="M-41 1731l76 55q33 -76 84 -111q29 -20 84 -45.5t97 -42t46 -16.5q-4 -4 -14 -35l-8 -33q-2 -2 -58.5 18.5t-124 48t-92.5 44.5q-14 10 -29.5 26.5t-25.5 32.5l-18 28q-9 13 -13 21zM115 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h38l19 -2l-4 -430 q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-313h-12q-8 0 -24 -1h-9q-9 0 -16 1h-10v66q0 49 -1 125.5t-1 89.5z" />
156<glyph unicode="&#xed;" horiz-adv-x="309" d="M-35 1571q4 0 46 16.5t97.5 42t84.5 45.5q23 16 44 44t29 46l10 21l76 -55l-4 -9q-4 -8 -12 -21t-18.5 -28.5t-26 -32t-29.5 -26.5q-25 -16 -92.5 -44t-123.5 -48.5t-58 -18.5l-8 33q-10 31 -15 35zM115 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h38 l19 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-313h-12q-8 0 -24 -1h-9q-9 0 -16 1h-10v66q0 49 -1 125.5t-1 89.5z" />
157<glyph unicode="&#xee;" horiz-adv-x="309" d="M-104 1593q18 8 136 85t118 81q0 2 68 -40l138 -85l68 -41l-62 -59l-217 139l-184 -127q-51 41 -65 47zM115 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h38l19 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-313h-12q-8 0 -24 -1h-9q-9 0 -16 1h-10 v66q0 49 -1 125.5t-1 89.5z" />
158<glyph unicode="&#xef;" horiz-adv-x="309" d="M-49 1522l2 94l94 -4l4 -90h-100zM115 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h38l19 -2l-4 -430q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-313h-12q-8 0 -24 -1h-9q-9 0 -16 1h-10v66q0 49 -1 125.5t-1 89.5zM258 1522l8 96l92 4v-100h-100z" />
159<glyph unicode="&#xf1;" d="M106 281q0 545 9 708q2 35 6 243q3 139 3 185q0 23 -1 23l18 -2h39l19 -2q-2 -72 -4 -156q103 158 323 158h6q98 -2 172 -38t109 -86t56.5 -100.5t23.5 -85.5l4 -34h-2v-88q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-313h-12q-8 0 -24 -1h-9q-9 0 -16 1h-10v66 q0 49 -1 125.5t-1 89.5q0 545 8 708q2 33 2 54.5t-2 31.5q0 10 -2 27.5t-17.5 62.5t-41 79t-81 62.5t-128.5 30.5q-80 0 -143.5 -20.5t-103.5 -55t-61.5 -63.5t-33.5 -57q-2 -55 -2 -89t2 -46q0 -18 -3.5 -186.5t-7.5 -334.5t-4 -172v-313h-12q-8 0 -24 -1h-9q-9 0 -16 1 h-10v66q0 49 -1.5 125.5t-1.5 89.5zM254 1596v13v8v5v2l20 14q18 12 58.5 27.5t83.5 15.5q63 -2 117.5 -30.5t70.5 -32.5q20 -4 62.5 10t72.5 31l31 18v-84q-12 -6 -30.5 -17t-63.5 -27q-36 -12 -61 -12q-7 0 -13 1q-25 4 -78 34t-106 32q-43 0 -84 -15.5t-60 -32.5l-18 -16 v2v7v11v11q0 6 -1 12t-1 13z" />
160<glyph unicode="&#xf2;" horiz-adv-x="1159" d="M55 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93 q186 0 318.5 188.5t132.5 454.5q0 141 -58.5 292t-118.5 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM383 1731l76 55q33 -76 84 -111q29 -20 84 -45.5t97 -42t46 -16.5q-4 -4 -12 -35l-10 -33h-1q-6 0 -57 18q-57 21 -124.5 48.5 t-92.5 44.5q-14 10 -29.5 26.5t-25.5 31.5l-18 29q-9 13 -13 21z" />
161<glyph unicode="&#xf3;" horiz-adv-x="1159" d="M55 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93 q186 0 318.5 188.5t132.5 454.5q0 141 -58.5 292t-118.5 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM389 1571q4 0 46 16.5t97.5 43t83.5 44.5q23 16 44.5 44t31.5 46l8 21l76 -55l-4 -9q-4 -8 -12 -21t-18.5 -28.5t-26 -32t-29.5 -26.5 q-25 -16 -92.5 -44t-123.5 -49q-51 -18 -57 -18h-1l-11 33q-8 31 -12 35z" />
162<glyph unicode="&#xf4;" horiz-adv-x="1159" d="M55 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93 q186 0 318.5 188.5t132.5 454.5q0 141 -58.5 292t-118.5 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM315 1573q18 6 138 84t120 82q0 2 69 -40l136 -85l70 -41l-62 -60l-217 140l-184 -127q-57 41 -70 47z" />
163<glyph unicode="&#xf5;" horiz-adv-x="1159" d="M55 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93 q186 0 318.5 188.5t132.5 454.5q0 141 -58.5 292t-118.5 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM322 1588v12v9v5v2l18 14q20 12 60 27.5t83 15.5q63 -2 117.5 -30.5t71.5 -32.5q20 -4 62 10t73 31l31 18v-84q-12 -6 -31 -17.5 t-64 -26.5q-36 -12 -60 -12q-7 0 -13 1q-25 4 -78 33.5t-107 31.5q-43 0 -84 -15t-59 -32l-18 -16v2v7v10v11q0 7 -1 13t-1 13z" />
164<glyph unicode="&#xf6;" horiz-adv-x="1159" d="M55 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM145 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93 q186 0 318.5 188.5t132.5 454.5q0 141 -58.5 292t-118.5 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM375 1522l2 94l94 -4l4 -90h-100zM682 1522l8 96l92 4v-100h-100z" />
165<glyph unicode="&#xf7;" horiz-adv-x="659" d="M31 735q18 0 164.5 -3t291 -7t150.5 -4l2 -74q-440 0 -604 8zM260 430l12 145l148 -6v-151zM260 823l12 146l148 -6v-152z" />
166<glyph unicode="&#xf8;" horiz-adv-x="1175" d="M51 702q0 139 64 347q51 170 184 276.5t289 106.5q147 0 272 -103l43 107h24q21 0 44 -2h24l-71 -164q109 -121 159 -291q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-147 0 -266 95l-48 -72q-86 0 -96 4l78 127q-43 45 -76 100 q-129 205 -129 473zM141 700q0 -131 49.5 -270t110.5 -231q283 444 291 467l237 585q-104 94 -237 95q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM362 131q92 -74 230 -74q186 0 318 188.5t132 454.5q0 127 -48 261.5t-105 222.5q-209 -492 -225 -551 q-18 -63 -302 -502z" />
167<glyph unicode="&#xf9;" horiz-adv-x="1069" d="M143 1006q6 78 25.5 187.5t36.5 178.5l16 72h6q4 0 14.5 1t18.5 1t17.5 1t13.5 1h6q-2 0 -16.5 -79t-33 -192.5t-24.5 -187.5q-8 -88 -9 -191v-50q0 -70 2 -118q3 -63 8 -147t5 -92v-2q-2 -8 2.5 -36.5t22.5 -76t49 -90.5t94.5 -75.5t149.5 -34.5h18q87 0 154 35 q74 39 110.5 100t52 100t21.5 70q-12 516 -12 608v17l-4 430h6q4 0 14.5 1t18.5 1t17 1t15 1h5q-1 0 -1 -23q0 -46 3 -185q4 -208 6 -243q2 -33 8 -602v-106q0 -12 -1 -89t-1 -127v-65h-19h-34h-19v188q-116 -184 -337 -184h-21q-88 4 -158 30.5t-109.5 68.5t-67.5 85 t-38 89.5t-14 69t-4 36.5q-18 210 -18 414q0 105 5 209zM338 1731l76 55q33 -76 84 -111q29 -20 84 -45.5t97 -42t46 -16.5q-4 -4 -12 -35l-11 -33h-1q-6 0 -57 19q-56 20 -123.5 47.5t-92.5 44.5q-14 10 -29.5 26.5t-26 32t-18.5 28.5t-12 21z" />
168<glyph unicode="&#xfa;" horiz-adv-x="1069" d="M143 1006q-5 -103 -5 -209q0 -203 18 -414q0 -14 4 -36.5t14 -69t38 -89.5t67.5 -85t109.5 -68.5t158 -30.5h19q224 0 339 184v-188h12q9 0 24 -1h10q9 0 16 1h10v65q0 50 1 126.5t1 89.5q0 545 -8 708q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-19 -2h-39l-18 -2l4 -430 v-17q0 -92 12 -608q-6 -31 -21.5 -70t-52 -100t-110.5 -100q-67 -35 -154 -35h-18q-86 2 -149.5 34.5t-94.5 75.5t-49 90.5t-22.5 76t-2.5 36.5v2q0 8 -5 92t-8 147q-2 48 -2 118v49q1 104 9 192q6 74 24.5 187.5t33 192.5t16.5 79l-18 -2h-37l-21 -2q-63 -262 -78 -438z M344 1571q4 0 46 16.5t97.5 43t83.5 44.5q23 16 44.5 44t31.5 46l8 21l76 -55l-4 -9q-4 -8 -12 -21t-18.5 -28.5t-26 -32t-29.5 -26.5q-25 -16 -92.5 -44t-123.5 -49q-51 -18 -57 -18h-1l-11 33q-8 31 -12 35z" />
169<glyph unicode="&#xfb;" horiz-adv-x="1069" d="M143 1006q-5 -103 -5 -209q0 -203 18 -414q0 -14 4 -36.5t14 -69t38 -89.5t67.5 -85t109.5 -68.5t158 -30.5h19q224 0 339 184v-188h12q9 0 24 -1h10q9 0 16 1h10v65q0 50 1 126.5t1 89.5q0 545 -8 708q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-19 -2h-39l-18 -2l4 -430 v-17q0 -92 12 -608q-6 -31 -21.5 -70t-52 -100t-110.5 -100q-67 -35 -154 -35h-18q-86 2 -149.5 34.5t-94.5 75.5t-49 90.5t-22.5 76t-2.5 36.5q0 6 -5 92t-8 148q-2 47 -2 118v49q1 105 9 193q6 74 24.5 187.5t33 192.5t16.5 79l-18 -2h-37l-21 -2q-63 -262 -78 -438z M324 1581q18 6 138 84t120 82q0 2 68 -40l136 -85l70 -41l-61 -59l-217 139l-185 -127q-57 41 -69 47z" />
170<glyph unicode="&#xfc;" horiz-adv-x="1069" d="M143 1006q-5 -103 -5 -209q0 -203 18 -414q0 -14 4 -36.5t14 -69t38 -89.5t67.5 -85t109.5 -68.5t158 -30.5h19q224 0 339 184v-188h12q9 0 24 -1h10q9 0 16 1h10v65q0 50 1 126.5t1 89.5v106q-6 569 -8 602q-2 35 -6 243q-3 139 -3 185q0 23 1 23l-19 -2h-39l-18 -2 l4 -430v-17q0 -92 12 -608q-6 -31 -21.5 -70t-52 -100t-110.5 -100q-67 -35 -154 -35h-18q-86 2 -149.5 34.5t-94.5 75.5t-49 90.5t-22.5 76t-2.5 36.5q0 6 -5 92t-8 148q-2 47 -2 118v49q1 105 9 193q6 74 24.5 187.5t33 192.5t16.5 79l-18 -2h-37l-21 -2 q-63 -262 -78 -438zM330 1522l2 94l94 -4l4 -90h-100zM637 1522l8 96l92 4v-100h-100z" />
171<glyph unicode="&#xfd;" horiz-adv-x="843" d="M41 1169.5q0 24.5 3 145.5q3 119 5 119q1 0 4.5 -0.5t7 -0.5h9.5q18 1 38.5 0t20.5 -3v-5q-9 -89 -9 -166q0 -205 64 -321q56 -105 164 -105q8 0 17 1q233 16 313 149l-10 449q92 0 92 4t1 -98.5t2 -247.5l2 -295q1 -150 1 -262.5t-2 -131.5q0 -2 -2 -26.5t-3 -41 t-7.5 -49t-13.5 -56t-20 -56.5t-30.5 -57.5t-43.5 -50t-57.5 -42t-73.5 -27.5t-91 -11h-12q-111 0 -189 36q-82 39 -117.5 99.5t-49.5 108.5q-11 42 -11 78v11h86q0 -25 3 -48t19.5 -62t45 -66.5t88 -51t141.5 -26.5h8q65 0 113 31q51 33 78.5 92.5t44 127t19.5 146.5t3 135 t-4 111.5t-4 59.5q0 45 -2 90q-163 -113 -322 -113q-31 0 -63 5q-80 10 -137.5 72.5t-80 143t-30.5 131t-8 75zM231 1571q4 0 46 16.5t97.5 43t84.5 44.5q23 16 44 44t29 46l11 21l75 -55l-4 -9q-4 -8 -12 -21t-18.5 -28.5t-25.5 -32t-30 -26.5q-25 -16 -92 -44t-124 -49 q-51 -18 -57 -18h-1l-8 33q-10 31 -15 35z" />
172<glyph unicode="&#xff;" horiz-adv-x="868" d="M41 1169.5q0 24.5 3 145.5q3 119 5 119q1 0 4.5 -0.5t7 -0.5h9.5q18 1 38.5 0t20.5 -3v-5q-9 -89 -9 -166q0 -205 64 -321q56 -105 164 -105q8 0 17 1q233 16 313 149l-10 449q92 0 92 4t1 -98.5t2 -247.5l2 -295q1 -150 1 -262.5t-2 -131.5q0 -2 -2 -26.5t-3 -41 t-7.5 -49t-13.5 -56t-20 -56.5t-30.5 -57.5t-43.5 -50t-57.5 -42t-73.5 -27.5t-91 -11h-12q-111 0 -189 36q-82 39 -117.5 99.5t-49.5 108.5q-11 42 -11 78v11h86q0 -25 3 -48t19.5 -62t45 -66.5t88 -51t141.5 -26.5h8q65 0 113 31q51 33 78.5 92.5t44 127t19.5 146.5t3 135 t-4 111.5t-4 59.5q0 45 -2 90q-163 -113 -322 -113q-31 0 -63 5q-80 10 -137.5 72.5t-80 143t-30.5 131t-8 75zM229 1522l2 94l95 -4l4 -90h-101zM537 1522l8 96l92 4v-100h-100z" />
173<glyph unicode="&#x152;" horiz-adv-x="2078" d="M51 702q0 139 64 347q36 121 118 213q150 170 355 170q186 0 334 -160q113 129 161 141q102 28 170 28q15 0 29 -1l74 -4h98q29 -2 222 -2h229q27 0 63.5 2t59.5 2l24 2l6 -80l-704 4q-4 -183 -4 -275q0 -62 2 -83q0 -76 -6 -287q52 3 83 3q15 0 25 -1q29 -2 165 -3 t159 -1q25 0 65.5 -1t65.5 -3h22l2 -68l-587 4q-8 -328 -9 -336v-247q12 0 55.5 2t61.5 0q29 -2 222 -2h229q27 0 63.5 2t59.5 2l24 2l6 -80l-774 6v2h-18v65q0 50 -1 126.5t-1 89.5q0 545 8 708q0 12 2 79t4 156t2 138q-133 0 -205 -49q-10 -6 -104 -101q74 -106 112 -233 q41 -133 41 -277q0 -117 -34.5 -248.5t-71.5 -185.5q-209 -293 -430 -293q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318 188.5t132 454.5q0 221 -135 451q-251 -234 -466 -234q-25 0 -50 3 q-162 18 -186 141q-64 -154 -64 -361zM233 1262l11 -11zM276 1131q-1 -7 -1 -15q0 -28 11 -51q13 -29 63 -51q46 -19 120 -19h14q178 4 383 217q-110 134 -274 134q-172 0 -297 -138q-4 -8 -10 -23.5t-9 -53.5z" />
174<glyph unicode="&#x153;" horiz-adv-x="2080" d="M51 702q0 139 64 347q51 170 184 276.5t289 106.5q166 0 300 -125t195 -328q0 -4 2 -6q8 33 23 76q53 172 176 277.5t277 105.5q164 0 288.5 -123t186.5 -330q22 -71 22 -260v-17q-35 -2 -89 -4t-202 -4q-49 -1 -89 -1q-81 0 -128 3q-20 1 -41 1q-162 0 -372 -42 q8 -147 64 -280t110 -185q137 -133 226 -133h3q70 2 129.5 34t94 68t89 67.5t115.5 33.5v-28q0 -21 2 -46v-24q-47 -2 -88 -27.5t-72.5 -58.5t-103.5 -62.5t-170 -38.5q-13 -1 -25 -1q-99 0 -172 57q-82 65 -165 198q-57 94 -91 199q-33 -113 -65 -160q-209 -293 -430 -293 q-121 0 -226.5 68t-181.5 186q-129 205 -129 473zM141 700q0 -158 71 -325.5t130 -224.5q94 -92 250 -93q186 0 318 188.5t132 454.5q0 141 -58 292t-118 220q-111 133 -274 134q-96 0 -186.5 -50.5t-151.5 -140.5q-113 -168 -113 -455zM1135 733l53 17q20 6 149 16 q108 8 162 8h19q21 -1 82 -1h71q121 1 205 3q42 1 68 1t36 -1q-14 135 -65 258t-96 178q-111 133 -254 134q-191 -1 -318 -191q-106 -156 -112 -422z" />
175<glyph unicode="&#x178;" horiz-adv-x="946" d="M49 1430l41 -80l87 -166q44 -86 50 -101q12 -35 244 -436q-6 -119 -6 -360q0 -12 1 -89t1 -126v-66h16h37h19v313q0 23 3 87.5t6 150.5t5 127l61 141q8 20 140.5 313.5t134.5 293.5l-23 2q-23 0 -47 2l-24 2q0 2 -37 -89.5t-45 -113.5l-209 -463l-211 379l-152 281 q-2 2 -47 1t-45 -3zM268 1585l2 94l95 -4l4 -90h-101zM575 1585l9 96l92 5v-101h-101z" />
176<glyph unicode="&#x2c6;" horiz-adv-x="1705" d="M340 1186q18 6 138 84t120 82q0 2 68 -40l137 -83l69 -43l-61 -60l-217 140l-184 -127q-57 41 -70 47z" />
177<glyph unicode="&#x2dc;" horiz-adv-x="610" d="M43 1185v12v8v5v2l18 13q20 14 60.5 29.5t83.5 15.5q63 -2 117.5 -31t70.5 -33q20 -4 62.5 10.5t72.5 32.5l31 17v-84q-12 -6 -30.5 -17.5t-63.5 -27.5q-36 -12 -61 -12q-7 0 -13 1q-25 4 -78 34t-106 32q-43 0 -84 -15.5t-60 -31.5l-18 -17v2v8v10v11q0 6 -1 12.5 t-1 13.5z" />
178<glyph unicode="&#x2000;" horiz-adv-x="923" />
179<glyph unicode="&#x2001;" horiz-adv-x="1847" />
180<glyph unicode="&#x2002;" horiz-adv-x="923" />
181<glyph unicode="&#x2003;" horiz-adv-x="1847" />
182<glyph unicode="&#x2004;" horiz-adv-x="615" />
183<glyph unicode="&#x2005;" horiz-adv-x="461" />
184<glyph unicode="&#x2006;" horiz-adv-x="307" />
185<glyph unicode="&#x2007;" horiz-adv-x="307" />
186<glyph unicode="&#x2008;" horiz-adv-x="230" />
187<glyph unicode="&#x2009;" horiz-adv-x="369" />
188<glyph unicode="&#x200a;" horiz-adv-x="102" />
189<glyph unicode="&#x2010;" horiz-adv-x="677" d="M31 735q18 0 164.5 -3t291 -7t150.5 -4l2 -74q-440 0 -604 8z" />
190<glyph unicode="&#x2011;" horiz-adv-x="677" d="M31 735q18 0 164.5 -3t291 -7t150.5 -4l2 -74q-440 0 -604 8z" />
191<glyph unicode="&#x2012;" horiz-adv-x="677" d="M31 735q18 0 164.5 -3t291 -7t150.5 -4l2 -74q-440 0 -604 8z" />
192<glyph unicode="&#x2013;" d="M31 647v88h955v-88h-955z" />
193<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M31 647v88h1979v-88h-1979z" />
194<glyph unicode="&#x2018;" horiz-adv-x="264" d="M23 1067q-2 48 -2 90q0 133 24 195q14 37 61.5 70.5t86.5 47.5l38 17l13 -80q-4 4 -11 4q-22 0 -75 -37q-68 -50 -68 -141v-10h78q0 -4 1 -11.5t4 -26t5 -35.5t5 -33.5t5 -26.5l2 -11q2 0 -39.5 -3t-84.5 -7z" />
195<glyph unicode="&#x2019;" horiz-adv-x="303" d="M20 1149q3 -5 12 -5q22 0 79 30q78 43 86 141l-78 10v25v47q0 33 -1 53t-3 20l40 -2l85 -4l43 -2q-14 -203 -58 -280q-18 -35 -68.5 -62.5t-90.5 -38.5l-41 -10z" />
196<glyph unicode="&#x201a;" horiz-adv-x="458" d="M109 -162q2 -5 11 -5q21 0 79 28q78 43 86 141l-78 10v24v48q0 33 -1 53.5t-3 20.5l40 -2l85 -4l43 -2q-14 -203 -58 -281q-18 -35 -68 -62.5t-91 -37.5l-41 -11z" />
197<glyph unicode="&#x201c;" horiz-adv-x="493" d="M23 1067q-2 48 -2 90q0 133 24 195q14 37 61.5 70.5t86.5 47.5l38 17l13 -80q-4 4 -11 4q-22 0 -75 -37q-68 -50 -68 -141v-10h78q0 -4 1 -11.5t4 -26t5 -35.5t5 -33.5t5 -26.5l2 -11q2 0 -39.5 -3t-84.5 -7zM252 1067q-2 48 -2 90q0 133 24 195q14 37 61.5 70.5 t86.5 47.5l39 17l12 -80q-4 4 -11 4q-22 0 -75 -37q-68 -50 -68 -141v-10h78q0 -4 1 -11.5t4.5 -26t5.5 -35.5t5 -33.5t5 -26.5l2 -11q2 0 -40 -3t-85 -7z" />
198<glyph unicode="&#x201d;" horiz-adv-x="526" d="M20 1149q3 -5 12 -5q22 0 79 30q78 43 86 141l-78 10v24v48q0 33 -1 53t-3 20l40 -2l85 -4l43 -2q-14 -203 -58 -280q-18 -35 -68.5 -62.5t-90.5 -38.5l-41 -10zM244 1149q3 -5 12 -5q22 0 78 30q78 43 86 141l-78 10v25v47q0 33 -1 53t-3 20l40 -2l85 -4l43 -2 q-14 -203 -57 -280q-18 -35 -68.5 -62.5t-91.5 -38.5l-41 -10z" />
199<glyph unicode="&#x201e;" horiz-adv-x="552" d="M27 -172q2 -6 11 -6q21 0 79 28q78 43 86 142l-78 10v24v47q0 33 -1 53.5t-3 20.5l40 -2l85 -4l43 -2q-14 -203 -58 -280q-18 -35 -68 -62.5t-91 -38.5l-41 -10zM250 -172q2 -6 11 -6q21 0 79 28q78 43 86 142l-78 10v24v47q0 33 -1 53.5t-3 20.5l40 -2l85 -4l43 -2 q-14 -203 -57 -280q-18 -35 -68.5 -62.5t-91.5 -38.5l-41 -10z" />
200<glyph unicode="&#x2022;" horiz-adv-x="235" d="M23 649q0 41 26.5 72t65.5 31t66.5 -31t27.5 -72t-27.5 -71.5t-66.5 -30.5t-65.5 30.5t-26.5 71.5z" />
201<glyph unicode="&#x2026;" horiz-adv-x="1124" d="M94 14l12 146l148 -6v-152zM469 14l12 146l148 -6v-152zM844 14l12 146l148 -6v-152z" />
202<glyph unicode="&#x202f;" horiz-adv-x="369" />
203<glyph unicode="&#x2044;" horiz-adv-x="817" d="M0 2q2 6 201.5 319.5t212.5 344.5q8 23 87 215l150 372l74 183h25q20 0 45 -2h22q-307 -717 -332 -801q-10 -37 -107 -195l-190 -299l-92 -141q-86 0 -96 4z" />
204<glyph unicode="&#x205f;" horiz-adv-x="461" />
205<glyph unicode="&#x20ac;" horiz-adv-x="927" d="M0 557q80 33 147 53q-4 29 -4 92v52l-25 -8l-22 -9t-19 -7t-16.5 -6t-13.5 -5t-8 -4l-2 -2q-37 68 -37 67q86 35 154 56q14 106 53 213q47 137 154.5 227t219 124t224.5 34l4 -86q-6 0 -18 -2q-324 -35 -445 -191q-84 -106 -104 -305q15 1 30 1q22 0 43 -2q37 -3 62.5 -8 t69.5 -15l71 -17q44 -8 75 -8q10 0 18 1q36 3 53 13l16 8q6 -86 6 -88q0 -15 -59 -15q-18 0 -41 1q-47 4 -163 28.5t-151 26.5q-25 0 -39 -2v-74q0 -49 5 -73q22 2 42 2q25 0 47 -3q40 -5 103.5 -20.5t87.5 -19.5q44 -8 75 -8q10 0 18 1q36 3 53 11l16 10q6 -86 6 -88 q0 -15 -59 -15q-18 0 -41 1q-47 4 -163 28.5t-151 26.5h-22q27 -129 84 -246t100 -157q43 -43 183.5 -69t228.5 -26v-78q-70 0 -111 2.5t-116.5 14.5t-128 36.5t-114 76t-104.5 122.5q-86 141 -114 306q-31 -8 -59.5 -18.5t-45 -18t-16.5 -9.5z" />
206<glyph unicode="&#x2122;" horiz-adv-x="2011" d="M0 1382l6 84q14 -2 45 -11t56.5 -13t62.5 -4q119 0 265.5 14t232.5 27l88 12l2 -21l8 -36l2 -19l-37 -6q-37 -4 -105.5 -14.5t-127.5 -16.5q-61 -8 -92 -10q0 -256 8 -379q8 -164 8 -708q0 -12 -1 -89t-1 -126v-66h-19h-34h-19v313q0 6 -4 172t-7 334t-3 187 q0 127 -4 356q-40 -3 -80 -3q-121 0 -250 23zM893 281q0 545 8 708q8 156 8 438l-2 7h2v6l19 -2h39l18 -2v-2h4l408 -1104l409 1104h6v6l19 -2h37l20 -2l-4 -430q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-12q-9 0 -24 -1h-10q-9 0 -16 1h-10v66q0 49 -1 125.5t-1 89.5 q0 545 8 708q0 8 1 44t3 90.5t2 99.5l-370 -1000h-84l-375 1010v-227q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-8 0 -24 -1h-9q-9 0 -16 1h-10v66q0 49 -1 125.5t-1 89.5z" />
207<glyph unicode="&#xe000;" horiz-adv-x="1380" d="M0 1380h1380v-1380h-1380v1380z" />
208<glyph unicode="&#xfb01;" horiz-adv-x="1050" d="M86 965q49 33 117 36v136l2 98q2 12 9 30.5t33.5 66.5t60.5 84t96 66q57 27 126 27h9q248 -4 299 -194q9 -37 9 -69q0 -11 -1 -21q-1 -88 -1 -142.5t1 -76.5q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-313h-12q-8 0 -23.5 -1t-25.5 1h-10v66q0 49 -1 125.5t-1 89.5 q0 545 8 708q2 33 3 134v56q0 45 -1 46v20q0 12 -10 46t-30.5 59.5t-69 49t-117.5 25.5h-11q-73 0 -134 -51q-66 -55 -96 -110.5t-24 -57.5v-37q0 -84 3 -178q6 0 14 -4q49 -18 96 -18t92 18q20 8 35.5 18.5t20.5 18.5l6 6l51 -59q-10 -10 -30.5 -24.5t-80.5 -34.5 q-44 -15 -87 -15q-17 0 -34 2q-49 6 -81 12q8 -385 8 -450q-2 -33 -6 -273q-3 -159 -3 -212q0 -27 1 -27l-19 2h-37l-20 2l4 491q-2 16 -6 486h-17q-29 -2 -86 -47z" />
209<glyph unicode="&#xfb02;" horiz-adv-x="1144" d="M86 965q49 33 117 36v136l2 98q2 12 9 30.5t33.5 66.5t60.5 84t96 66q57 27 126 27h9q248 -4 299 -194q9 -37 9 -69q0 -11 -1 -21q-1 -88 -1 -142.5t1 -76.5q0 -18 -3 -186.5t-7.5 -334.5t-4.5 -172v-344q23 -4 105 -41t127 -39q53 0 102 17.5t72 36.5l25 16q2 -4 6 -10 l13 -19q9 -14 13 -22l6 -8l-4 -4l-11 -11q-7 -8 -19.5 -16t-30.5 -16.5t-39.5 -15.5t-52.5 -12t-66 -5h-7q-78 0 -155 43q-81 45 -155 47v194q-2 72 -2 177q0 545 8 708q2 33 3 134v56q0 45 -1 46v20q0 12 -10 46t-30.5 59.5t-69 49t-117.5 25.5h-11q-73 0 -134 -51 q-66 -55 -96 -110.5t-24 -57.5v-37q0 -84 3 -178q6 0 14 -4q49 -18 96 -18t92 18q20 8 35.5 18.5t20.5 18.5l6 6l51 -59q-10 -10 -30.5 -24.5t-80.5 -34.5q-44 -15 -87 -15q-17 0 -34 2q-49 6 -81 12q8 -385 8 -450q-2 -33 -6 -273q-3 -159 -3 -212q0 -27 1 -27l-19 2h-37 l-20 2l4 491q-2 16 -6 486h-17q-29 -2 -86 -47z" />
210<glyph unicode="&#xfb03;" horiz-adv-x="1655" d="M61 965q49 33 117 36v136l2 98q2 10 5 28.5t18.5 64.5t39 81t69.5 63.5t103.5 28.5t111 -21.5t77.5 -41.5l25 -23l-47 -63q-4 8 -18.5 22.5t-56.5 33.5t-93 19q-57 0 -98.5 -55t-55.5 -109.5t-8 -56.5v-37q0 -84 2 -178q6 0 14 -4q49 -19 96 -19t93 19q20 8 35.5 18.5 t19.5 18.5l6 6l51 -59q-10 -10 -30.5 -24.5t-80.5 -34.5q-44 -15 -87 -15q-16 0 -33 2q-49 6 -82 12q8 -385 8 -450q-2 -33 -6 -273q-3 -159 -3 -212q0 -27 1 -27l-18 2h-37l-21 2l4 491q-2 16 -6 486h-16q-29 -2 -86 -47zM720 965q49 33 117 36v136l2 98q2 10 5 28.5 t18.5 64.5t39 81t69.5 63.5t103.5 28.5t111 -21.5t77.5 -41.5l25 -23l-47 -63q-4 8 -18.5 22.5t-56.5 33.5t-93 19q-57 0 -98.5 -55t-55.5 -109.5t-8 -56.5v-37q0 -84 2 -178q6 0 14 -4q49 -19 96 -19t93 19q20 8 35.5 18.5t19.5 18.5l6 6l51 -59q-10 -10 -30.5 -24.5 t-81.5 -34.5q-43 -15 -86 -15q-16 0 -33 2q-49 6 -82 12q8 -385 8 -450q-2 -33 -6 -273q-3 -159 -3 -212q0 -27 1 -27l-18 2h-37l-21 2l4 491q-2 16 -6 486h-16q-29 -2 -86 -47zM1441 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430 q0 -18 -3 -186.5t-7 -334.5t-4 -172v-313h-13q-8 0 -24 -1h-9q-9 0 -16 1h-10v66q0 49 -1 125.5t-1 89.5z" />
211<glyph unicode="&#xfb04;" horiz-adv-x="1875" d="M61 965q49 33 117 36v136l2 98q2 10 5 28.5t18.5 64.5t39 81t69.5 63.5t103.5 28.5t111 -21.5t77.5 -41.5l25 -23l-47 -63q-4 8 -18.5 22.5t-56.5 33.5t-93 19q-57 0 -98.5 -55t-55.5 -109.5t-8 -56.5v-37q0 -84 2 -178q6 0 14 -4q49 -19 96 -19t93 19q20 8 35.5 18.5 t19.5 18.5l6 6l51 -59q-10 -10 -30.5 -24.5t-80.5 -34.5q-44 -15 -87 -15q-16 0 -33 2q-49 6 -82 12q8 -385 8 -450q-2 -33 -6 -273q-3 -159 -3 -212q0 -27 1 -27l-18 2h-37l-21 2l4 491q-2 16 -6 486h-16q-29 -2 -86 -47zM720 965q49 33 117 36v136l2 98q2 10 5 28.5 t18.5 64.5t39 81t69.5 63.5t103.5 28.5t111 -21.5t77.5 -41.5l25 -23l-47 -63q-4 8 -18.5 22.5t-56.5 33.5t-93 19q-57 0 -98.5 -55t-55.5 -109.5t-8 -56.5v-37q0 -84 2 -178q6 0 14 -4q49 -19 96 -19t93 19q20 8 35.5 18.5t19.5 18.5l6 6l51 -59q-10 -10 -30.5 -24.5 t-81.5 -34.5q-43 -15 -86 -15q-16 0 -33 2q-49 6 -82 12q8 -385 8 -450q-2 -33 -6 -273q-3 -159 -3 -212q0 -27 1 -27l-18 2h-37l-21 2l4 491q-2 16 -6 486h-16q-29 -2 -86 -47zM1441 281q0 545 8 708q2 35 6 243q3 139 3 185q0 23 -1 23l19 -2h39l18 -2l-4 -430 q0 -18 -3 -186.5t-7 -334.5t-4 -172v-227q101 -3 148 -3q23 0 32 1h77h107h55l2 -23q4 -20 7 -41l2 -22l-430 2h-7h-20h-31h-14v66q0 49 -1 125.5t-1 89.5z" />
212</font>
213</defs></svg> \ No newline at end of file
diff --git a/Blocks/demo/deibi-webfont.ttf b/Blocks/demo/deibi-webfont.ttf
new file mode 100644
index 0000000..068664e
--- /dev/null
+++ b/Blocks/demo/deibi-webfont.ttf
Binary files differ
diff --git a/Blocks/demo/deibi-webfont.woff b/Blocks/demo/deibi-webfont.woff
new file mode 100644
index 0000000..284be42
--- /dev/null
+++ b/Blocks/demo/deibi-webfont.woff
Binary files differ
diff --git a/Blocks/demo/images/Paris_eiffel.png b/Blocks/demo/images/Paris_eiffel.png
new file mode 100644
index 0000000..c695952
--- /dev/null
+++ b/Blocks/demo/images/Paris_eiffel.png
Binary files differ
diff --git a/Blocks/demo/images/Paris_roofs.png b/Blocks/demo/images/Paris_roofs.png
new file mode 100644
index 0000000..abe9ef3
--- /dev/null
+++ b/Blocks/demo/images/Paris_roofs.png
Binary files differ
diff --git a/Blocks/demo/images/Paris_sky.jpg b/Blocks/demo/images/Paris_sky.jpg
new file mode 100644
index 0000000..82da08a
--- /dev/null
+++ b/Blocks/demo/images/Paris_sky.jpg
Binary files differ
diff --git a/Blocks/demo/images/clouds1000.png b/Blocks/demo/images/clouds1000.png
new file mode 100644
index 0000000..155bca5
--- /dev/null
+++ b/Blocks/demo/images/clouds1000.png
Binary files differ
diff --git a/Blocks/demo/images/clouds1200_1.png b/Blocks/demo/images/clouds1200_1.png
new file mode 100644
index 0000000..54f8d0b
--- /dev/null
+++ b/Blocks/demo/images/clouds1200_1.png
Binary files differ
diff --git a/Blocks/demo/images/clouds1200_2.png b/Blocks/demo/images/clouds1200_2.png
new file mode 100644
index 0000000..0b60050
--- /dev/null
+++ b/Blocks/demo/images/clouds1200_2.png
Binary files differ
diff --git a/Blocks/demo/images/eiffel.png b/Blocks/demo/images/eiffel.png
new file mode 100644
index 0000000..a2e96af
--- /dev/null
+++ b/Blocks/demo/images/eiffel.png
Binary files differ
diff --git a/Blocks/demo/images/eiffel1.png b/Blocks/demo/images/eiffel1.png
new file mode 100644
index 0000000..12c18fd
--- /dev/null
+++ b/Blocks/demo/images/eiffel1.png
Binary files differ
diff --git a/Blocks/demo/images/eiffel2.png b/Blocks/demo/images/eiffel2.png
new file mode 100644
index 0000000..115fc0a
--- /dev/null
+++ b/Blocks/demo/images/eiffel2.png
Binary files differ
diff --git a/Blocks/demo/images/phare.png b/Blocks/demo/images/phare.png
new file mode 100644
index 0000000..67a1675
--- /dev/null
+++ b/Blocks/demo/images/phare.png
Binary files differ
diff --git a/Blocks/demo/images/sparkling1.png b/Blocks/demo/images/sparkling1.png
new file mode 100644
index 0000000..dbc850a
--- /dev/null
+++ b/Blocks/demo/images/sparkling1.png
Binary files differ
diff --git a/Blocks/demo/images/sparkling2.png b/Blocks/demo/images/sparkling2.png
new file mode 100644
index 0000000..a59fe19
--- /dev/null
+++ b/Blocks/demo/images/sparkling2.png
Binary files differ
diff --git a/Blocks/jquery-1.10.2.min.js b/Blocks/jquery-1.10.2.min.js
new file mode 100644
index 0000000..2f53572
--- /dev/null
+++ b/Blocks/jquery-1.10.2.min.js
@@ -0,0 +1,6 @@
1/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
2//@ sourceMappingURL=jquery-1.10.2.min.map
3*/
4(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}: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},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?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},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.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+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===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]||at.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]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.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"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
5}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
6u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},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)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window); \ No newline at end of file
diff --git a/Blocks/life.html b/Blocks/life.html
new file mode 100644
index 0000000..23a1324
--- /dev/null
+++ b/Blocks/life.html
@@ -0,0 +1,54 @@
1<!doctype html>
2<html>
3<head>
4<meta charset="utf-8">
5<title>无标题文档</title>
6<style type="text/css">
7body {
8 background-color: #E7E7E7;
9}
10.pp {
11 text-align:left;
12}
13.pp {
14 font-family: "微软雅黑";
15}
16</style>
17</head>
18
19<body>
20<div align="center"><img src="life/6597074164702513006.png" width="800" height="34"></div>
21<p align="center"><img src="life/shming.png" width="282" height="167"></p>
22<p align="center"><img src="life/148337312826694352.jpg" width="1024" height="683"></p>
23<p>&nbsp;</p>
24<p align="center"><img src="life/1713901133291362836.jpg" width="1024" height="683"></p>
25<p>&nbsp;</p>
26<p align="center"><img src="life/1903615267594677472.jpg" width="1024" height="683"></p>
27<p>&nbsp;</p>
28<p align="center"><img src="life/3374040545930946866.jpg" width="1024" height="683"></p>
29<p>&nbsp;</p>
30<p align="center"><img src="life/gqj.png" width="1031" height="726"></p>
31<p>&nbsp;</p>
32<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在是2013年11月29日23:29</span></p>
33<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还记得所谓的玛雅世界末日吗?</p>
34<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已过去342天。</p>
35<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们依然幸福地生活在这个世界上,趁我们还能去爱,还能去闯,放开自己的心,大胆去爱,大胆去闯荡这个世界。去爱</p>
36<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你值得爱的人,为了自己的 梦想去努力,去</p>
37<p class="pp"></p>
38<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了做这一系列的网页,前前后后拉开了很长的时间线。到现在算是一个阶段了吧。学到了很多知识,得到了很多不一样的</p>
39<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 收获。我的语言始终是苍白无力的,在所有美好的事物和感动面前,文字也无法承载更多。只有心中的体会吧。</p>
40
41<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们都是幸福的孩子。</p>
42<p class="pp"> </p>
43<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 珍惜。</p>
44<p class="pp"> </p>
45<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ——Jinwei</p>
46
47<!-- jinwei.me Baidu tongji analytics -->
48<script type="text/javascript">
49var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
50document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
51</script>
52
53</body>
54</html>
diff --git a/Blocks/life/148337312826694352.jpg b/Blocks/life/148337312826694352.jpg
new file mode 100644
index 0000000..3dfbeec
--- /dev/null
+++ b/Blocks/life/148337312826694352.jpg
Binary files differ
diff --git a/Blocks/life/1713901133291362836.jpg b/Blocks/life/1713901133291362836.jpg
new file mode 100644
index 0000000..889cb42
--- /dev/null
+++ b/Blocks/life/1713901133291362836.jpg
Binary files differ
diff --git a/Blocks/life/1903615267594677472.jpg b/Blocks/life/1903615267594677472.jpg
new file mode 100644
index 0000000..d88394c
--- /dev/null
+++ b/Blocks/life/1903615267594677472.jpg
Binary files differ
diff --git a/Blocks/life/2041819481159275260.jpg b/Blocks/life/2041819481159275260.jpg
new file mode 100644
index 0000000..639ed66
--- /dev/null
+++ b/Blocks/life/2041819481159275260.jpg
Binary files differ
diff --git a/Blocks/life/3014878475648013989.jpg b/Blocks/life/3014878475648013989.jpg
new file mode 100644
index 0000000..d94796a
--- /dev/null
+++ b/Blocks/life/3014878475648013989.jpg
Binary files differ
diff --git a/Blocks/life/3374040545930946866.jpg b/Blocks/life/3374040545930946866.jpg
new file mode 100644
index 0000000..afc5569
--- /dev/null
+++ b/Blocks/life/3374040545930946866.jpg
Binary files differ
diff --git a/Blocks/life/3911939226425011954.jpg b/Blocks/life/3911939226425011954.jpg
new file mode 100644
index 0000000..8842ec2
--- /dev/null
+++ b/Blocks/life/3911939226425011954.jpg
Binary files differ
diff --git a/Blocks/life/6597074164702513006.png b/Blocks/life/6597074164702513006.png
new file mode 100644
index 0000000..4e9e1e2
--- /dev/null
+++ b/Blocks/life/6597074164702513006.png
Binary files differ
diff --git a/Blocks/life/6597305062146155801.jpg b/Blocks/life/6597305062146155801.jpg
new file mode 100644
index 0000000..b60c6f3
--- /dev/null
+++ b/Blocks/life/6597305062146155801.jpg
Binary files differ
diff --git a/Blocks/life/6598086814913787340.jpg b/Blocks/life/6598086814913787340.jpg
new file mode 100644
index 0000000..66168a1
--- /dev/null
+++ b/Blocks/life/6598086814913787340.jpg
Binary files differ
diff --git a/Blocks/life/6598256139704465765.jpg b/Blocks/life/6598256139704465765.jpg
new file mode 100644
index 0000000..69c1d56
--- /dev/null
+++ b/Blocks/life/6598256139704465765.jpg
Binary files differ
diff --git a/Blocks/life/gqj.png b/Blocks/life/gqj.png
new file mode 100644
index 0000000..fabb4ea
--- /dev/null
+++ b/Blocks/life/gqj.png
Binary files differ
diff --git a/Blocks/life/icon.jpg b/Blocks/life/icon.jpg
new file mode 100644
index 0000000..4ca5e23
--- /dev/null
+++ b/Blocks/life/icon.jpg
Binary files differ
diff --git a/Blocks/life/shming.png b/Blocks/life/shming.png
new file mode 100644
index 0000000..7618553
--- /dev/null
+++ b/Blocks/life/shming.png
Binary files differ
diff --git a/Blocks/main.css b/Blocks/main.css
new file mode 100644
index 0000000..367da59
--- /dev/null
+++ b/Blocks/main.css
@@ -0,0 +1,163 @@
1@font-face {
2 font-family: Penumbra;
3 src: url(./PenumbraSansStd-Semibold.otf);
4}
5@-webkit-keyframes fade {
6 0% {
7 opacity: 0;
8 margin-top: 10px;
9 }
10 100% {
11 opacity: 1;
12 margin-top: 0px;
13 }
14}
15
16* {
17 margin: 0px;
18 padding: 0px;
19}
20
21body {
22 font-family: Penumbra, HiraginoSansGB-W3, sans-serif;
23 background: url(./bg.jpg) top center;
24 background-size: cover;
25}
26h1 {
27 font-size: 22px;
28 line-height: 40px;
29
30 -webkit-transition: padding 100ms ease;
31}
32p {
33 font-size: 20px;
34 line-height: 40px;
35}
36img {
37 width: 80px;
38 height: 80px;
39 padding: 10px;
40
41 -webkit-transition: margin 1000ms ease;
42}
43span#loveu {
44 font-size: 17px;
45 line-height: 40px;
46 font:"Microsoft Ya Hei";
47}
48div#card {
49 position: absolute;
50 width: 600px;
51 height: 400px;
52 top: 50%;
53 left: 50%;
54 margin-top: -200px;
55 margin-left: -300px;
56 box-shadow: 0px 5px 20px -5px black;
57 background: black;
58 font:"Microsoft Yi Baiti", Roboto, "华文行楷";
59}
60
61div.block {
62 position: relative;
63 width: 200px;
64 height: 200px;
65 float: left;
66 background: url(./texture.png);
67 box-shadow: inset 0px -2px 2px rgba(0,0,0,0.2);
68 text-align: center;
69 color: white;
70 overflow: hidden;
71
72 -webkit-transition: opacity 145s ease;
73}
74 div.block:hover > .divin img {
75 margin-top: -20px;
76 }
77 div.block:hover > .divin h1 {
78 padding-top: 20px;
79 }
80 div.block:hover > .divin {
81 margin-top: -100px;
82 }
83 div.block:hover > .time5 {
84 margin-top: -110px;
85 }
86 div.block:hover > .inbox {
87 -webkit-animation: fade 500ms ease 200ms both;
88 }
89div.divin {
90 width: 100px;
91 height: 140px;
92 padding: 30px 50px;
93 -webkit-transition: margin 300ms ease;
94}
95div.inbox {
96 width: 150px;
97 padding: 0px 25px;
98}
99div.time {
100 width: 175px;
101 margin: 0px auto;
102 padding: 0px;
103 height: 100px;
104 padding: 10px 12.5px 0px;
105 background: rgba(0,0,0,0.1);
106 box-shadow: inset 0px 0px 20px rgba(0,0,0,0.1);
107}
108 div.time li.list {
109 list-style: none;
110 position: relative;
111 float: left;
112 width: 25px;
113 height: 50px;
114 margin: 0px 0px 10px 0px;
115 font-size: 12px;
116 -webkit-transition: 200ms ease;
117 }
118 div.time li.list:hover {
119 color: yellow;
120 -webkit-transform: scale(1.1);
121 }
122
123div#b1 {
124 background-color: #2CC0E2;
125}
126div#b2 {
127 background-color: #59D999;
128}
129div#b3 {
130 background-color: #7658F9;
131}
132div#b4 {
133 background-color: #E9C24E;
134}
135div#b5 {
136 background-color: #E55679;
137}
138div#b6 {
139 background-color: grey;
140}
141span.last {
142 position: absolute;
143 font-size: 72px;
144 line-height: 200px;
145 width: 200px;
146 height: 200px;
147 left: 0px;
148 top: 0px;
149
150 -webkit-transition: opacity 200ms ease;
151}
152span#u {
153}
154span#real {
155 position: absolute;
156 opacity: 0;
157}
158div#b6:hover #u {
159 opacity: 0;
160}
161div#b6:hover #real {
162 opacity: 1;
163} \ No newline at end of file
diff --git a/Blocks/main.js b/Blocks/main.js
new file mode 100644
index 0000000..af75cf7
--- /dev/null
+++ b/Blocks/main.js
@@ -0,0 +1,21 @@
1var myName = "@spearmint";
2
3var red = [0, 100, 63];
4var orange = [40, 100, 60];
5var green = [75, 100, 40];
6var blue = [196, 77, 55];
7var purple = [280, 50, 60];
8var letterColors = [red, orange, green, blue, purple];
9
10drawName(myName, letterColors);
11
12if(10 < 3)
13{
14 bubbleShape = 'square';
15}
16else
17{
18 bubbleShape = 'circle';
19}
20
21bounceBubbles(); \ No newline at end of file
diff --git a/Blocks/pics/2012_03.jpg b/Blocks/pics/2012_03.jpg
new file mode 100644
index 0000000..3bfc81a
--- /dev/null
+++ b/Blocks/pics/2012_03.jpg
Binary files differ
diff --git a/Blocks/pics/20130228192941_rm3ky.jpg b/Blocks/pics/20130228192941_rm3ky.jpg
new file mode 100644
index 0000000..fd39ce9
--- /dev/null
+++ b/Blocks/pics/20130228192941_rm3ky.jpg
Binary files differ
diff --git a/Blocks/pics/QQ截图20131123002119.png b/Blocks/pics/QQ截图20131123002119.png
new file mode 100644
index 0000000..2615b2a
--- /dev/null
+++ b/Blocks/pics/QQ截图20131123002119.png
Binary files differ
diff --git a/Blocks/pics/QQ截图20131123002203.png b/Blocks/pics/QQ截图20131123002203.png
new file mode 100644
index 0000000..d02c4c7
--- /dev/null
+++ b/Blocks/pics/QQ截图20131123002203.png
Binary files differ
diff --git a/Blocks/pics/QQ截图20131123002213.png b/Blocks/pics/QQ截图20131123002213.png
new file mode 100644
index 0000000..93c7cd2
--- /dev/null
+++ b/Blocks/pics/QQ截图20131123002213.png
Binary files differ
diff --git a/Blocks/pics/siteinfo.png b/Blocks/pics/siteinfo.png
new file mode 100644
index 0000000..5240289
--- /dev/null
+++ b/Blocks/pics/siteinfo.png
Binary files differ
diff --git a/Blocks/post/index.html b/Blocks/post/index.html
new file mode 100644
index 0000000..8a8b491
--- /dev/null
+++ b/Blocks/post/index.html
@@ -0,0 +1,33 @@
1<!DOCTYPE html>
2<html>
3 <head>
4 <title>Happy Holidays!</title>
5 <link rel="stylesheet" href="style.css" type="text/css">
6 <script src="jquery.min.js"></script>
7 <script src="snowfall.min.js"></script>
8 <script src="script.js"></script>
9 </head>
10 <body>
11
12 <!-- Add your heading below this line -->
13
14 <section>
15 <h1>Happy New Year</h1>
16 <h2>To You,Tiga<br>--Jinwei</h2>
17 <div class="imageblock"> </div>
18 </section>
19
20 <!-- I'm a comment! You won't see me on the page! -->
21 <!--
22 /* Image CC Some rights reserved by Alan Klim - http://www.flickr.com/photos/igraph/8329238413/sizes/l/ */
23 -->
24
25<!-- jinwei.me Baidu tongji analytics -->
26<script type="text/javascript">
27var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
28document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
29</script>
30
31</body>
32
33</html>
diff --git a/Blocks/post/jquery.min.js b/Blocks/post/jquery.min.js
new file mode 100644
index 0000000..3883779
--- /dev/null
+++ b/Blocks/post/jquery.min.js
@@ -0,0 +1,2 @@
1/*! jQuery v1.8.3 jquery.com | jquery.org/license */
2(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.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):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); \ No newline at end of file
diff --git a/Blocks/post/snowfall.min.js b/Blocks/post/snowfall.min.js
new file mode 100644
index 0000000..82957e9
--- /dev/null
+++ b/Blocks/post/snowfall.min.js
@@ -0,0 +1,5 @@
1var snowFall=function(){function g(){var a={flakeCount:35,flakeColor:"#ffffff",flakeIndex:999999,minSize:1,maxSize:2,minSpeed:1,maxSpeed:5,round:!1,shadow:!1,collection:!1,image:!1,collectionHeight:40},b={},c=[],g=0,m=0,j=0,k=0,l=0,h=0,f=0,e=function(a,b){return Math.round(a+Math.random()*(b-a))},n=function(a,b){for(var c in b)a.style[c]=b[c]+("width"==c||"height"==c||0<=c.indexOf("radius")?"px":"")},r=function(d,b,c,g,f){this.id=f;this.x=d+l;this.y=b+k;this.size=c;this.speed=g;this.step=0;this.stepSize=
2e(1,10)/100;a.collection&&(this.target=canvasCollection[e(0,canvasCollection.length-1)]);d=null;a.image?(d=new Image,d.src=a.image):(d=document.createElement("div"),n(d,{background:a.flakeColor}));d.className="snowfall-flakes";d.setAttribute("id","flake-"+this.id);n(d,{width:this.size,height:this.size,position:"absolute",top:this.y,left:this.x,fontSize:0,zIndex:a.flakeIndex});a.round&&(d.style,n(d,{"-moz-border-radius":a.maxSize,"-webkit-border-radius":a.maxSize,borderRadius:a.maxSize}));a.shadow&&
3n(d,{"-moz-box-shadow":"1px 1px 1px #555","-webkit-box-shadow":"1px 1px 1px #555",boxShadow:"1px 1px 1px #555"});document.body.appendChild(d);this.element=d;this.update=function(){this.y+=this.speed;this.y>k+m-(this.size+6)&&this.reset();this.element.style.top=this.y+"px";this.element.style.left=~~this.x+"px";this.step+=this.stepSize;this.x+=Math.cos(this.step);(this.x>l+j-h||this.x<h)&&this.reset()};this.reset=function(){this.y=k;this.x=l+e(h,j-h);this.stepSize=e(1,10)/100;this.size=e(100*a.minSize,
4100*a.maxSize)/100;this.speed=e(a.minSpeed,a.maxSpeed)}},q=function(){for(var a=0;a<c.length;a+=1)c[a].update();f=setTimeout(function(){q()},30)};return{snow:function(d,p){for(var f in p)a.hasOwnProperty(f)&&(a[f]=p[f]);b=d;m=b.clientHeight;j=b.offsetWidth;k=b.offsetTop;l=b.offsetLeft;b.snow=this;"body"===b.tagName.toLowerCase()&&(h=25);window.onresize=function(){m=b.clientHeight;j=b.offsetWidth;k=b.offsetTop;l=b.offsetLeft};for(i=0;i<a.flakeCount;i+=1)g=c.length,c.push(new r(e(h,j-h),e(0,m),e(100*
5a.minSize,100*a.maxSize)/100,e(a.minSpeed,a.maxSpeed),g));q()},clear:function(){for(var a=null,a=b.getElementsByClassName?b.getElementsByClassName("snowfall-flakes"):b.querySelectorAll(".snowfall-flakes"),e=a.length;e--;)b.removeChild(a[e]);c=[];clearTimeout(f)}}}return{snow:function(a,b){if("string"==typeof b)if(0<a.length)for(var c=0;c<a.length;c++)a[c].snow&&a[c].snow.clear();else a.snow.clear();else if(0<a.length)for(c=0;c<a.length;c++)(new g).snow(a[c],b);else(new g).snow(a,b)}}}(); \ No newline at end of file
diff --git a/Blocks/post/style.css b/Blocks/post/style.css
new file mode 100644
index 0000000..3507ef8
--- /dev/null
+++ b/Blocks/post/style.css
@@ -0,0 +1,62 @@
1@import url(http://fonts.googleapis.com/css?family=Codystar);
2
3body {
4 background: white;
5 margin: 0;
6}
7
8section {
9 margin: auto;
10 margin-top: 10px;
11 background: #333;
12 background-size:550px;
13 width: 700px;
14 height: 419px;
15 color: white;
16 font-family: Codystar, san-serif;
17 position: relative;
18 border: 20px solid white;
19 outline: 1px solid #Ccc;
20}
21
22.imageblock {
23 margin-top:0px;
24 height:419px;
25 width:350px;
26 background: url('http://codecademy-content.s3.amazonaws.com/projects/wHS5Dt/champagne.png');
27 background-position: 0px 0px;
28
29}
30/* Image CC Some rights reserved by Alan Kim - http://www.flickr.com/photos/igraph/8329238413/sizes/l/ */
31
32h1 {
33 /* Any styles here just affect your "<h1>" tags. */
34 font-size: 65px;
35 position: absolute;
36 margin: 0;
37 top: 50px;
38 left: 400px;
39}
40
41h2 {
42 font-size: 14px;
43 position: absolute;
44 margin: 0;
45 top: 320px;
46 left: 400px;
47 font-family: arial;
48 font-weight:normal;
49}
50
51p {
52
53 margin: 0;
54 padding-top: 60px;
55 padding-left: 100px;
56}
57
58img {
59 position: absolute;
60 top: 200px;
61 left: 120px;
62}
diff --git a/Blocks/syntax/LGPL-LICENSE b/Blocks/syntax/LGPL-LICENSE
new file mode 100644
index 0000000..3f9959f
--- /dev/null
+++ b/Blocks/syntax/LGPL-LICENSE
@@ -0,0 +1,165 @@
1 GNU LESSER GENERAL PUBLIC LICENSE
2 Version 3, 29 June 2007
3
4 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5 Everyone is permitted to copy and distribute verbatim copies
6 of this license document, but changing it is not allowed.
7
8
9 This version of the GNU Lesser General Public License incorporates
10the terms and conditions of version 3 of the GNU General Public
11License, supplemented by the additional permissions listed below.
12
13 0. Additional Definitions.
14
15 As used herein, "this License" refers to version 3 of the GNU Lesser
16General Public License, and the "GNU GPL" refers to version 3 of the GNU
17General Public License.
18
19 "The Library" refers to a covered work governed by this License,
20other than an Application or a Combined Work as defined below.
21
22 An "Application" is any work that makes use of an interface provided
23by the Library, but which is not otherwise based on the Library.
24Defining a subclass of a class defined by the Library is deemed a mode
25of using an interface provided by the Library.
26
27 A "Combined Work" is a work produced by combining or linking an
28Application with the Library. The particular version of the Library
29with which the Combined Work was made is also called the "Linked
30Version".
31
32 The "Minimal Corresponding Source" for a Combined Work means the
33Corresponding Source for the Combined Work, excluding any source code
34for portions of the Combined Work that, considered in isolation, are
35based on the Application, and not on the Linked Version.
36
37 The "Corresponding Application Code" for a Combined Work means the
38object code and/or source code for the Application, including any data
39and utility programs needed for reproducing the Combined Work from the
40Application, but excluding the System Libraries of the Combined Work.
41
42 1. Exception to Section 3 of the GNU GPL.
43
44 You may convey a covered work under sections 3 and 4 of this License
45without being bound by section 3 of the GNU GPL.
46
47 2. Conveying Modified Versions.
48
49 If you modify a copy of the Library, and, in your modifications, a
50facility refers to a function or data to be supplied by an Application
51that uses the facility (other than as an argument passed when the
52facility is invoked), then you may convey a copy of the modified
53version:
54
55 a) under this License, provided that you make a good faith effort to
56 ensure that, in the event an Application does not supply the
57 function or data, the facility still operates, and performs
58 whatever part of its purpose remains meaningful, or
59
60 b) under the GNU GPL, with none of the additional permissions of
61 this License applicable to that copy.
62
63 3. Object Code Incorporating Material from Library Header Files.
64
65 The object code form of an Application may incorporate material from
66a header file that is part of the Library. You may convey such object
67code under terms of your choice, provided that, if the incorporated
68material is not limited to numerical parameters, data structure
69layouts and accessors, or small macros, inline functions and templates
70(ten or fewer lines in length), you do both of the following:
71
72 a) Give prominent notice with each copy of the object code that the
73 Library is used in it and that the Library and its use are
74 covered by this License.
75
76 b) Accompany the object code with a copy of the GNU GPL and this license
77 document.
78
79 4. Combined Works.
80
81 You may convey a Combined Work under terms of your choice that,
82taken together, effectively do not restrict modification of the
83portions of the Library contained in the Combined Work and reverse
84engineering for debugging such modifications, if you also do each of
85the following:
86
87 a) Give prominent notice with each copy of the Combined Work that
88 the Library is used in it and that the Library and its use are
89 covered by this License.
90
91 b) Accompany the Combined Work with a copy of the GNU GPL and this license
92 document.
93
94 c) For a Combined Work that displays copyright notices during
95 execution, include the copyright notice for the Library among
96 these notices, as well as a reference directing the user to the
97 copies of the GNU GPL and this license document.
98
99 d) Do one of the following:
100
101 0) Convey the Minimal Corresponding Source under the terms of this
102 License, and the Corresponding Application Code in a form
103 suitable for, and under terms that permit, the user to
104 recombine or relink the Application with a modified version of
105 the Linked Version to produce a modified Combined Work, in the
106 manner specified by section 6 of the GNU GPL for conveying
107 Corresponding Source.
108
109 1) Use a suitable shared library mechanism for linking with the
110 Library. A suitable mechanism is one that (a) uses at run time
111 a copy of the Library already present on the user's computer
112 system, and (b) will operate properly with a modified version
113 of the Library that is interface-compatible with the Linked
114 Version.
115
116 e) Provide Installation Information, but only if you would otherwise
117 be required to provide such information under section 6 of the
118 GNU GPL, and only to the extent that such information is
119 necessary to install and execute a modified version of the
120 Combined Work produced by recombining or relinking the
121 Application with a modified version of the Linked Version. (If
122 you use option 4d0, the Installation Information must accompany
123 the Minimal Corresponding Source and Corresponding Application
124 Code. If you use option 4d1, you must provide the Installation
125 Information in the manner specified by section 6 of the GNU GPL
126 for conveying Corresponding Source.)
127
128 5. Combined Libraries.
129
130 You may place library facilities that are a work based on the
131Library side by side in a single library together with other library
132facilities that are not Applications and are not covered by this
133License, and convey such a combined library under terms of your
134choice, if you do both of the following:
135
136 a) Accompany the combined library with a copy of the same work based
137 on the Library, uncombined with any other library facilities,
138 conveyed under the terms of this License.
139
140 b) Give prominent notice with the combined library that part of it
141 is a work based on the Library, and explaining where to find the
142 accompanying uncombined form of the same work.
143
144 6. Revised Versions of the GNU Lesser General Public License.
145
146 The Free Software Foundation may publish revised and/or new versions
147of the GNU Lesser General Public License from time to time. Such new
148versions will be similar in spirit to the present version, but may
149differ in detail to address new problems or concerns.
150
151 Each version is given a distinguishing version number. If the
152Library as you received it specifies that a certain numbered version
153of the GNU Lesser General Public License "or any later version"
154applies to it, you have the option of following the terms and
155conditions either of that published version or of any later version
156published by the Free Software Foundation. If the Library as you
157received it does not specify a version number of the GNU Lesser
158General Public License, you may choose any version of the GNU Lesser
159General Public License ever published by the Free Software Foundation.
160
161 If the Library as you received it specifies that a proxy can decide
162whether future versions of the GNU Lesser General Public License shall
163apply, that proxy's public statement of acceptance of any version is
164permanent authorization for you to choose that version for the
165Library. \ No newline at end of file
diff --git a/Blocks/syntax/MIT-LICENSE b/Blocks/syntax/MIT-LICENSE
new file mode 100644
index 0000000..e7c70ba
--- /dev/null
+++ b/Blocks/syntax/MIT-LICENSE
@@ -0,0 +1,20 @@
1Copyright (c) 2003, 2004 Jim Weirich
2
3Permission is hereby granted, free of charge, to any person obtaining
4a copy of this software and associated documentation files (the
5"Software"), to deal in the Software without restriction, including
6without limitation the rights to use, copy, modify, merge, publish,
7distribute, sublicense, and/or sell copies of the Software, and to
8permit persons to whom the Software is furnished to do so, subject to
9the following conditions:
10
11The above copyright notice and this permission notice shall be
12included in all copies or substantial portions of the Software.
13
14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Blocks/syntax/compass/_theme_template.scss b/Blocks/syntax/compass/_theme_template.scss
new file mode 100644
index 0000000..53f4df5
--- /dev/null
+++ b/Blocks/syntax/compass/_theme_template.scss
@@ -0,0 +1,120 @@
1$background: white !default;
2
3$line_alt1_background: $background !default;
4$line_alt2_background: $background !default;
5
6$line_highlighted_background: #e0e0e0 !default;
7$line_highlighted_number: black !default;
8
9$gutter_text: #afafaf !default;
10$gutter_border_color: #6ce26c !default;
11$gutter_border: 3px solid $gutter_border_color !default;
12
13$toolbar_collapsed_a: #00f !default;
14$toolbar_collapsed_a_hover: #f00 !default;
15$toolbar_collapsed_background: #fff !default;
16$toolbar_collapsed_border: 1px solid $gutter_border_color !default;
17
18$toolbar_a: #fff !default;
19$toolbar_a_hover: #000 !default;
20$toolbar_background: $gutter_border_color !default;
21$toolbar_border: none !default;
22
23$code_plain: black !default;
24$code_comments: #008200 !default;
25$code_string: blue !default;
26$code_keyword: #006699 !default;
27$code_preprocessor: gray !default;
28$code_variable: #aa7700 !default;
29$code_value: #009900 !default;
30$code_functions: #ff1493 !default;
31$code_constants: #0066cc !default;
32$code_script: $code_keyword !default;
33$code_script_background: none !default;
34$code_color1: gray !default;
35$code_color2: #ff1493 !default;
36$code_color3: red !default;
37
38$caption_color: $code_plain !default;
39
40// Interface elements.
41.syntaxhighlighter {
42 background-color: $background !important;
43
44 // Highlighed line number
45 .line {
46 &.alt1 { background-color: $line_alt1_background !important; }
47 &.alt2 { background-color: $line_alt2_background !important; }
48
49 // Highlighed line
50 &.highlighted {
51 &.alt1, &.alt2 { background-color: $line_highlighted_background !important; }
52 &.number { color: $line_highlighted_number !important; }
53 }
54 }
55
56 table {
57 caption {
58 color: $caption_color !important;
59 }
60 }
61
62 // Add border to the lines
63 .gutter {
64 color: $gutter_text !important;
65 .line {
66 border-right: $gutter_border !important;
67
68 &.highlighted {
69 background-color: $gutter_border_color !important;
70 color: $background !important;
71 }
72 }
73 }
74
75 &.printing .line .content { border: none !important; }
76
77 &.collapsed {
78 overflow: visible !important;
79
80 .toolbar {
81 color: $toolbar_collapsed_a !important;
82 background: $toolbar_collapsed_background !important;
83 border: $toolbar_collapsed_border !important;
84
85 a {
86 color: $toolbar_collapsed_a !important;
87 &:hover { color: $toolbar_collapsed_a_hover !important; }
88 }
89 }
90 }
91
92 .toolbar {
93 color: $toolbar_a !important;
94 background: $toolbar_background !important;
95 border: $toolbar_border !important;
96 a {
97 color: $toolbar_a !important;
98 &:hover { color: $toolbar_a_hover !important; }
99 }
100 }
101
102 // Actual syntax highlighter colors.
103 .plain, .plain a { color: $code_plain !important; }
104 .comments, .comments a { color: $code_comments !important; }
105 .string, .string a { color: $code_string !important; }
106 .keyword { color: $code_keyword !important; }
107 .preprocessor { color: $code_preprocessor !important; }
108 .variable { color: $code_variable !important; }
109 .value { color: $code_value !important; }
110 .functions { color: $code_functions !important; }
111 .constants { color: $code_constants !important; }
112 .script {
113 font-weight: bold !important;
114 color: $code_script !important;
115 background-color: $code_script_background !important;
116 }
117 .color1, .color1 a { color: $code_color1 !important; }
118 .color2, .color2 a { color: $code_color2 !important; }
119 .color3, .color3 a { color: $code_color3 !important; }
120}
diff --git a/Blocks/syntax/compass/config.rb b/Blocks/syntax/compass/config.rb
new file mode 100644
index 0000000..6f82de1
--- /dev/null
+++ b/Blocks/syntax/compass/config.rb
@@ -0,0 +1,14 @@
1environment = :production
2project_type = :stand_alone
3http_path = "/"
4css_dir = "../styles"
5sass_dir = "."
6images_dir = "images"
7sass_options = {
8 :line_numbers => false,
9 :debug_info => false
10}
11
12# output_style = :compressed
13# output_style = :compact
14output_style = :expanded
diff --git a/Blocks/syntax/compass/shCore.scss b/Blocks/syntax/compass/shCore.scss
new file mode 100644
index 0000000..a67e4f9
--- /dev/null
+++ b/Blocks/syntax/compass/shCore.scss
@@ -0,0 +1,216 @@
1@mixin round_corners_custom($top, $right, $bottom, $left) {
2 -moz-border-radius: $top $right $bottom $left !important;
3 -webkit-border-radius: $top $right $bottom $left !important;
4}
5
6@mixin round_corners($radius) {
7 @include round_corners_custom($radius, $radius, $radius, $radius);
8}
9
10.syntaxhighlighter {
11 a,
12 div,
13 code,
14 table,
15 table td,
16 table tr,
17 table tbody,
18 table thead,
19 table caption,
20 textarea {
21 @include round_corners(0);
22
23 background: none !important;
24 border: 0 !important;
25 bottom: auto !important;
26 float: none !important;
27 height: auto !important;
28 left: auto !important;
29 line-height: 1.1em !important;
30 margin: 0 !important;
31 outline: 0 !important;
32 overflow: visible !important;
33 padding: 0 !important;
34 position: static !important;
35 right: auto !important;
36 text-align: left !important;
37 top: auto !important;
38 vertical-align: baseline !important;
39 width: auto !important;
40 box-sizing: content-box !important;
41 font: {
42 family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
43 weight: normal !important;
44 style: normal !important;
45 size: 1em !important;
46 }
47 min: {
48 // For IE8, FF & WebKit
49 height: inherit !important;
50 // For IE7
51 height: auto !important;
52 }
53 }
54}
55
56.syntaxhighlighter {
57 width: 100% !important;
58 margin: 1em 0 1em 0 !important;
59
60 position: relative !important;
61 overflow: auto !important;
62 font-size: 1em !important;
63
64 &.source { overflow: hidden !important; }
65
66 // set up bold and italic
67 .bold { font-weight: bold !important; }
68 .italic { font-style: italic !important; }
69
70 .line { white-space: pre !important; }
71
72 // main table and columns
73 table {
74 width: 100% !important;
75 caption {
76 text-align: left !important;
77 padding: .5em 0 0.5em 1em !important;
78 }
79
80 td.code {
81 width: 100% !important;
82
83 .container {
84 position: relative !important;
85
86 textarea {
87 box-sizing: border-box !important;
88 position: absolute !important;
89 left: 0 !important;
90 top: 0 !important;
91 width: 100% !important;
92 height: 100% !important;
93 border: none !important;
94 background: white !important;
95 padding-left: 1em !important;
96 overflow: hidden !important;
97 white-space: pre !important;
98 }
99 }
100 }
101
102 // middle spacing between line numbers and lines
103 td.gutter .line {
104 text-align: right !important;
105 padding: 0 0.5em 0 1em !important;
106 }
107
108 td.code .line {
109 padding: 0 1em !important;
110 }
111 }
112
113 &.nogutter {
114 td.code {
115 .container textarea, .line { padding-left: 0em !important; }
116 }
117 }
118
119 &.show { display: block !important; }
120
121 // Adjust some properties when collapsed
122 &.collapsed {
123 table { display: none !important; }
124
125 .toolbar {
126 padding: 0.1em 0.8em 0em 0.8em !important;
127 font-size: 1em !important;
128 position: static !important;
129 width: auto !important;
130 height: auto !important;
131
132 span {
133 display: inline !important;
134 margin-right: 1em !important;
135
136 a {
137 padding: 0 !important;
138 display: none !important;
139 &.expandSource { display: inline !important; }
140 }
141 }
142 }
143 }
144
145 // Styles for the toolbar
146 .toolbar {
147 position: absolute !important;
148 right: 1px !important;
149 top: 1px !important;
150 width: 11px !important;
151 height: 11px !important;
152 font-size: 10px !important;
153 z-index: 10 !important;
154
155 span.title { display: inline !important; }
156
157 a {
158 display: block !important;
159 text-align: center !important;
160 text-decoration: none !important;
161 padding-top: 1px !important;
162
163 &.expandSource { display: none !important; }
164 }
165 }
166
167 &.ie {
168 font-size: .9em !important;
169 padding: 1px 0 1px 0 !important;
170
171 .toolbar {
172 line-height: 8px !important;
173 a {
174 padding-top: 0px !important;
175 }
176 }
177 }
178
179 // Print view.
180 // Colors are based on the default theme without background.
181 &.printing {
182 .line.alt1 .content,
183 .line.alt2 .content,
184 .line.highlighted .number,
185 .line.highlighted.alt1 .content,
186 .line.highlighted.alt2 .content { background: none !important; }
187
188 // Gutter line numbers
189 .line {
190 .number { color: #bbbbbb !important; }
191 // Add border to the lines
192 .content { color: black !important; }
193 }
194
195 // Toolbar when visible
196 .toolbar { display: none !important; }
197 a { text-decoration: none !important; }
198 .plain, .plain a { color: black !important; }
199 .comments, .comments a { color: #008200 !important; }
200 .string, .string a { color: blue !important; }
201 .keyword {
202 color: #006699 !important;
203 font-weight: bold !important;
204 }
205 .preprocessor { color: gray !important; }
206 .variable { color: #aa7700 !important; }
207 .value { color: #009900 !important; }
208 .functions { color: #ff1493 !important; }
209 .constants { color: #0066cc !important; }
210 .script { font-weight: bold !important; }
211 .color1, .color1 a { color: gray !important; }
212 .color2, .color2 a { color: #ff1493 !important; }
213 .color3, .color3 a { color: red !important; }
214 .break, .break a { color: black !important; }
215 }
216} \ No newline at end of file
diff --git a/Blocks/syntax/compass/shCoreDefault.scss b/Blocks/syntax/compass/shCoreDefault.scss
new file mode 100644
index 0000000..ff80c7f
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreDefault.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeDefault.scss";
diff --git a/Blocks/syntax/compass/shCoreDjango.scss b/Blocks/syntax/compass/shCoreDjango.scss
new file mode 100644
index 0000000..ef572e9
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreDjango.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeDjango.scss";
diff --git a/Blocks/syntax/compass/shCoreEclipse.scss b/Blocks/syntax/compass/shCoreEclipse.scss
new file mode 100644
index 0000000..9767f53
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreEclipse.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeEclipse.scss";
diff --git a/Blocks/syntax/compass/shCoreEmacs.scss b/Blocks/syntax/compass/shCoreEmacs.scss
new file mode 100644
index 0000000..5e466f3
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreEmacs.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeEmacs.scss";
diff --git a/Blocks/syntax/compass/shCoreFadeToGrey.scss b/Blocks/syntax/compass/shCoreFadeToGrey.scss
new file mode 100644
index 0000000..4628595
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreFadeToGrey.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeFadeToGrey.scss";
diff --git a/Blocks/syntax/compass/shCoreMDUltra.scss b/Blocks/syntax/compass/shCoreMDUltra.scss
new file mode 100644
index 0000000..10ad4c5
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreMDUltra.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeMDUltra.scss";
diff --git a/Blocks/syntax/compass/shCoreMidnight.scss b/Blocks/syntax/compass/shCoreMidnight.scss
new file mode 100644
index 0000000..e357eb2
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreMidnight.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeMidnight.scss";
diff --git a/Blocks/syntax/compass/shCoreRDark.scss b/Blocks/syntax/compass/shCoreRDark.scss
new file mode 100644
index 0000000..5c26da3
--- /dev/null
+++ b/Blocks/syntax/compass/shCoreRDark.scss
@@ -0,0 +1,2 @@
1@import "shCore.scss";
2@import "shThemeRDark.scss";
diff --git a/Blocks/syntax/compass/shThemeDefault.scss b/Blocks/syntax/compass/shThemeDefault.scss
new file mode 100644
index 0000000..1574dae
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeDefault.scss
@@ -0,0 +1,7 @@
1// Default Syntax Highlighter theme.
2
3@import "_theme_template.scss";
4
5.syntaxhighlighter {
6 .keyword { font-weight: bold !important; }
7}
diff --git a/Blocks/syntax/compass/shThemeDjango.scss b/Blocks/syntax/compass/shThemeDjango.scss
new file mode 100644
index 0000000..8e95c56
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeDjango.scss
@@ -0,0 +1,36 @@
1// Django SyntaxHighlighter theme
2
3$background: #0a2b1d !default;
4
5$line_highlighted_background: #233729 !default;
6$line_highlighted_number: white !default;
7
8$gutter_text: #497958 !default;
9$gutter_border_color: #41a83e !default;
10
11$toolbar_collapsed_a: #96dd3b !default;
12$toolbar_collapsed_a_hover: #fff !default;
13$toolbar_collapsed_background: #000 !default;
14
15$toolbar_a: #fff !default;
16$toolbar_a_hover: #ffe862 !default;
17
18$code_plain: #f8f8f8 !default;
19$code_comments: #336442 !default;
20$code_string: #9df39f !default;
21$code_keyword: #96dd3b !default;
22$code_preprocessor: #91bb9e !default;
23$code_variable: #ffaa3e !default;
24$code_value: #f7e741 !default;
25$code_functions: #ffaa3e !default;
26$code_constants: #e0e8ff !default;
27$code_color1: #eb939a !default;
28$code_color2: #91bb9e !default;
29$code_color3: #edef7d !default;
30
31@import "_theme_template.scss";
32
33.syntaxhighlighter {
34 .comments { font-style: italic !important; }
35 .keyword { font-weight: bold !important; }
36}
diff --git a/Blocks/syntax/compass/shThemeEclipse.scss b/Blocks/syntax/compass/shThemeEclipse.scss
new file mode 100644
index 0000000..193fb1d
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeEclipse.scss
@@ -0,0 +1,48 @@
1// Eclipse IDE SyntaxHighlighter color theme
2// (C) Code-House
3// :http//blog.code-house.org/2009/10/xml-i-adnotacje-kod-ogolnego-przeznaczenia-i-jpa/
4
5$background: #fff !default;
6
7$line_highlighted_background: #c3defe !default;
8$line_highlighted_number: #fff !default;
9
10$gutter_text: #787878 !default;
11$gutter_border_color: #d4d0c8 !default;
12
13$toolbar_collapsed_a: #3f5fbf !default;
14$toolbar_collapsed_a_hover: #aa7700 !default;
15$toolbar_collapsed_background: #fff !default;
16
17$toolbar_a: #a0a0a0 !default;
18$toolbar_a_hover: red !default;
19
20$code_plain: black !default;
21$code_comments: #3f5fbf !default;
22$code_string: #2a00ff !default;
23$code_keyword: #7f0055 !default;
24$code_preprocessor: #646464 !default;
25$code_variable: #aa7700 !default;
26$code_value: #009900 !default;
27$code_functions: #ff1493 !default;
28$code_constants: #0066cc !default;
29$code_color1: gray !default;
30$code_color2: #ff1493 !default;
31$code_color3: red !default;
32
33@import "_theme_template.scss";
34
35.syntaxhighlighter {
36 .keyword { font-weight: bold !important; }
37
38 .xml {
39 .keyword {
40 color: #3f7f7f !important;
41 font-weight: normal !important; }
42 .color1, .color1 a { color: #7f007f !important; }
43 .string {
44 font-style: italic !important;
45 color: #2a00ff !important;
46 }
47 }
48}
diff --git a/Blocks/syntax/compass/shThemeEmacs.scss b/Blocks/syntax/compass/shThemeEmacs.scss
new file mode 100644
index 0000000..11c9deb
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeEmacs.scss
@@ -0,0 +1,32 @@
1// Emacs SyntaxHighlighter theme based on theme by Joshua Emmons
2// http://www.skia.net/
3
4$background: black !default;
5
6$line_highlighted_background: #2A3133 !default;
7$line_highlighted_number: white !default;
8
9$gutter_text: #d3d3d3 !default;
10$gutter_border_color: #990000 !default;
11
12$toolbar_collapsed_a: #ebdb8d !default;
13$toolbar_collapsed_a_hover: #ff7d27 !default;
14$toolbar_collapsed_background: black !default;
15
16$toolbar_a: #fff !default;
17$toolbar_a_hover: #9ccff4 !default;
18
19$code_plain: #d3d3d3 !default;
20$code_comments: #ff7d27 !default;
21$code_string: #ff9e7b !default;
22$code_keyword: aqua !default;
23$code_preprocessor: #aec4de !default;
24$code_variable: #ffaa3e !default;
25$code_value: #009900 !default;
26$code_functions: #81cef9 !default;
27$code_constants: #ff9e7b !default;
28$code_color1: #ebdb8d !default;
29$code_color2: #ff7d27 !default;
30$code_color3: #aec4de !default;
31
32@import "_theme_template.scss";
diff --git a/Blocks/syntax/compass/shThemeFadeToGrey.scss b/Blocks/syntax/compass/shThemeFadeToGrey.scss
new file mode 100644
index 0000000..7963814
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeFadeToGrey.scss
@@ -0,0 +1,36 @@
1// Fade to Grey SyntaxHighlighter theme based on theme by Brasten Sager
2// :http//www.ibrasten.com/
3
4$background: #121212 !default;
5
6$line_highlighted_background: #2C2C29 !default;
7$line_highlighted_number: white !default;
8
9$gutter_text: #afafaf !default;
10$gutter_border_color: #3185b9 !default;
11
12$toolbar_collapsed_a: #3185b9 !default;
13$toolbar_collapsed_a_hover: #d01d33 !default;
14$toolbar_collapsed_background: black !default;
15
16$toolbar_a: #fff !default;
17$toolbar_a_hover: #96daff !default;
18
19$code_plain: white !default;
20$code_comments: #696854 !default;
21$code_string: #e3e658 !default;
22$code_keyword: #d01d33 !default;
23$code_preprocessor: #435a5f !default;
24$code_variable: #898989 !default;
25$code_value: #009900 !default;
26$code_functions: #aaaaaa !default;
27$code_constants: #96daff !default;
28$code_color1: #ffc074 !default;
29$code_color2: #4a8cdb !default;
30$code_color3: #96daff !default;
31
32@import "_theme_template.scss";
33
34.syntaxhighlighter {
35 .functions { font-weight: bold !important; }
36}
diff --git a/Blocks/syntax/compass/shThemeMDUltra.scss b/Blocks/syntax/compass/shThemeMDUltra.scss
new file mode 100644
index 0000000..0356fa6
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeMDUltra.scss
@@ -0,0 +1,32 @@
1// MDUltra SyntaxHighlighter theme based on Midnight Theme
2// http://www.mddev.co.uk/
3
4$background: #222222 !default;
5
6$line_highlighted_background: #253e5a !default;
7$line_highlighted_number: white !default;
8
9$gutter_text: #38566f !default;
10$gutter_border_color: #435a5f !default;
11
12$toolbar_collapsed_a: #428bdd !default;
13$toolbar_collapsed_a_hover: lime !default;
14$toolbar_collapsed_background: black !default;
15
16$toolbar_a: #aaaaff !default;
17$toolbar_a_hover: #9ccff4 !default;
18
19$code_plain: lime !default;
20$code_comments: #428bdd !default;
21$code_string: lime !default;
22$code_keyword: #aaaaff !default;
23$code_preprocessor: #8aa6c1 !default;
24$code_variable: aqua !default;
25$code_value: #f7e741 !default;
26$code_functions: #ff8000 !default;
27$code_constants: yellow !default;
28$code_color1: red !default;
29$code_color2: yellow !default;
30$code_color3: #ffaa3e !default;
31
32@import "_theme_template.scss";
diff --git a/Blocks/syntax/compass/shThemeMidnight.scss b/Blocks/syntax/compass/shThemeMidnight.scss
new file mode 100644
index 0000000..a4dae02
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeMidnight.scss
@@ -0,0 +1,32 @@
1// Midnight SyntaxHighlighter theme based on theme by J.D. Myers
2// http://webdesign.lsnjd.com/
3
4$background: #0f192a !default;
5
6$line_highlighted_background: #253e5a !default;
7$line_highlighted_number: #38566f !default;
8
9$gutter_text: #afafaf !default;
10$gutter_border_color: #435a5f !default;
11
12$toolbar_collapsed_a: #428bdd !default;
13$toolbar_collapsed_a_hover: #1dc116 !default;
14$toolbar_collapsed_background: #000 !default;
15
16$toolbar_a: #D1EDFF !default;
17$toolbar_a_hover: #8aa6c1 !default;
18
19$code_plain: #d1edff !default;
20$code_comments: #428bdd !default;
21$code_string: #1dc116 !default;
22$code_keyword: #b43d3d !default;
23$code_preprocessor: #8aa6c1 !default;
24$code_variable: #ffaa3e !default;
25$code_value: #f7e741 !default;
26$code_functions: #ffaa3e !default;
27$code_constants: #e0e8ff !default;
28$code_color1: #f8bb00 !default;
29$code_color2: white !default;
30$code_color3: #ffaa3e !default;
31
32@import "_theme_template.scss";
diff --git a/Blocks/syntax/compass/shThemeRDark.scss b/Blocks/syntax/compass/shThemeRDark.scss
new file mode 100644
index 0000000..3b67b15
--- /dev/null
+++ b/Blocks/syntax/compass/shThemeRDark.scss
@@ -0,0 +1,32 @@
1// RDark SyntaxHighlighter theme based on theme by Radu Dineiu
2// http://www.vim.org/scripts/script.php?script_id=1732
3
4$background: #1b2426 !default;
5
6$line_highlighted_background: #323E41 !default;
7$line_highlighted_number: #b9bdb6 !default;
8
9$gutter_text: #afafaf !default;
10$gutter_border_color: #435a5f !default;
11
12$toolbar_collapsed_a: #5ba1cf !default;
13$toolbar_collapsed_a_hover: #5ce638 !default;
14$toolbar_collapsed_background: #000 !default;
15
16$toolbar_a: #fff !default;
17$toolbar_a_hover: #e0e8ff !default;
18
19$code_plain: #b9bdb6 !default;
20$code_comments: #878a85 !default;
21$code_string: #5ce638 !default;
22$code_keyword: #5ba1cf !default;
23$code_preprocessor: #435a5f !default;
24$code_variable: #ffaa3e !default;
25$code_value: #009900 !default;
26$code_functions: #ffaa3e !default;
27$code_constants: #e0e8ff !default;
28$code_color1: #e0e8ff !default;
29$code_color2: white !default;
30$code_color3: #ffaa3e !default;
31
32@import "_theme_template.scss";
diff --git a/Blocks/syntax/index.html b/Blocks/syntax/index.html
new file mode 100644
index 0000000..5d8d56d
--- /dev/null
+++ b/Blocks/syntax/index.html
@@ -0,0 +1,24 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3<head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5 <title>Hello SyntaxHighlighter</title>
6 <script type="text/javascript" src="scripts/shCore.js"></script>
7 <script type="text/javascript" src="scripts/shBrushCpp.js"></script>
8 <link type="text/css" rel="stylesheet" href="styles/shCoreDefault.css"/>
9 <script type="text/javascript">SyntaxHighlighter.all();</script>
10</head>
11
12<body style="background: white; font-family: Helvetica">
13
14<h1>Hello SyntaxHighlighter</h1>
15<pre class="brush: cpp;">
16#include "stdio.h"
17int main()
18{
19 printf("Hello\n");
20 return 0;
21}
22</pre>
23
24</html>
diff --git a/Blocks/syntax/scripts/shAutoloader.js b/Blocks/syntax/scripts/shAutoloader.js
new file mode 100644
index 0000000..4e29bdd
--- /dev/null
+++ b/Blocks/syntax/scripts/shAutoloader.js
@@ -0,0 +1,17 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2(){1 h=5;h.I=2(){2 n(c,a){4(1 d=0;d<c.9;d++)i[c[d]]=a}2 o(c){1 a=r.H("J"),d=3;a.K=c;a.M="L/t";a.G="t";a.u=a.v=2(){6(!d&&(!8.7||8.7=="F"||8.7=="z")){d=q;e[c]=q;a:{4(1 p y e)6(e[p]==3)B a;j&&5.C(k)}a.u=a.v=x;a.D.O(a)}};r.N.R(a)}1 f=Q,l=h.P(),i={},e={},j=3,k=x,b;5.T=2(c){k=c;j=q};4(b=0;b<f.9;b++){1 m=f[b].w?f[b]:f[b].S(/\\s+/),g=m.w();n(m,g)}4(b=0;b<l.9;b++)6(g=i[l[b].E.A]){e[g]=3;o(g)}}})();',56,56,'|var|function|false|for|SyntaxHighlighter|if|readyState|this|length|||||||||||||||||true|document||javascript|onload|onreadystatechange|pop|null|in|complete|brush|break|highlight|parentNode|params|loaded|language|createElement|autoloader|script|src|text|type|body|removeChild|findElements|arguments|appendChild|split|all'.split('|'),0,{}))
diff --git a/Blocks/syntax/scripts/shBrushAS3.js b/Blocks/syntax/scripts/shBrushAS3.js
new file mode 100644
index 0000000..8aa3ed2
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushAS3.js
@@ -0,0 +1,59 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Created by Peter Atoria @ http://iAtoria.com
25
26 var inits = 'class interface function package';
27
28 var keywords = '-Infinity ...rest Array as AS3 Boolean break case catch const continue Date decodeURI ' +
29 'decodeURIComponent default delete do dynamic each else encodeURI encodeURIComponent escape ' +
30 'extends false final finally flash_proxy for get if implements import in include Infinity ' +
31 'instanceof int internal is isFinite isNaN isXMLName label namespace NaN native new null ' +
32 'Null Number Object object_proxy override parseFloat parseInt private protected public ' +
33 'return set static String super switch this throw true try typeof uint undefined unescape ' +
34 'use void while with'
35 ;
36
37 this.regexList = [
38 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
39 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
40 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
41 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
42 { regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers
43 { regex: new RegExp(this.getKeywords(inits), 'gm'), css: 'color3' }, // initializations
44 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
45 { regex: new RegExp('var', 'gm'), css: 'variable' }, // variable
46 { regex: new RegExp('trace', 'gm'), css: 'color1' } // trace
47 ];
48
49 this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);
50 };
51
52 Brush.prototype = new SyntaxHighlighter.Highlighter();
53 Brush.aliases = ['actionscript3', 'as3'];
54
55 SyntaxHighlighter.brushes.AS3 = Brush;
56
57 // CommonJS
58 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
59})();
diff --git a/Blocks/syntax/scripts/shBrushAppleScript.js b/Blocks/syntax/scripts/shBrushAppleScript.js
new file mode 100644
index 0000000..d40bbd7
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushAppleScript.js
@@ -0,0 +1,75 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // AppleScript brush by David Chambers
25 // http://davidchambersdesign.com/
26 var keywords = 'after before beginning continue copy each end every from return get global in local named of set some that the then times to where whose with without';
27 var ordinals = 'first second third fourth fifth sixth seventh eighth ninth tenth last front back middle';
28 var specials = 'activate add alias AppleScript ask attachment boolean class constant delete duplicate empty exists false id integer list make message modal modified new no paragraph pi properties quit real record remove rest result reveal reverse run running save string true word yes';
29
30 this.regexList = [
31
32 { regex: /(--|#).*$/gm,
33 css: 'comments' },
34
35 { regex: /\(\*(?:[\s\S]*?\(\*[\s\S]*?\*\))*[\s\S]*?\*\)/gm, // support nested comments
36 css: 'comments' },
37
38 { regex: /"[\s\S]*?"/gm,
39 css: 'string' },
40
41 { regex: /(?:,|:|¬|'s\b|\(|\)|\{|\}|«|\b\w*»)/g,
42 css: 'color1' },
43
44 { regex: /(-)?(\d)+(\.(\d)?)?(E\+(\d)+)?/g, // numbers
45 css: 'color1' },
46
47 { regex: /(?:&(amp;|gt;|lt;)?|=|� |>|<|≥|>=|≤|<=|\*|\+|-|\/|÷|\^)/g,
48 css: 'color2' },
49
50 { regex: /\b(?:and|as|div|mod|not|or|return(?!\s&)(ing)?|equals|(is(n't| not)? )?equal( to)?|does(n't| not) equal|(is(n't| not)? )?(greater|less) than( or equal( to)?)?|(comes|does(n't| not) come) (after|before)|is(n't| not)?( in)? (back|front) of|is(n't| not)? behind|is(n't| not)?( (in|contained by))?|does(n't| not) contain|contain(s)?|(start|begin|end)(s)? with|((but|end) )?(consider|ignor)ing|prop(erty)?|(a )?ref(erence)?( to)?|repeat (until|while|with)|((end|exit) )?repeat|((else|end) )?if|else|(end )?(script|tell|try)|(on )?error|(put )?into|(of )?(it|me)|its|my|with (timeout( of)?|transaction)|end (timeout|transaction))\b/g,
51 css: 'keyword' },
52
53 { regex: /\b\d+(st|nd|rd|th)\b/g, // ordinals
54 css: 'keyword' },
55
56 { regex: /\b(?:about|above|against|around|at|below|beneath|beside|between|by|(apart|aside) from|(instead|out) of|into|on(to)?|over|since|thr(ough|u)|under)\b/g,
57 css: 'color3' },
58
59 { regex: /\b(?:adding folder items to|after receiving|choose( ((remote )?application|color|folder|from list|URL))?|clipboard info|set the clipboard to|(the )?clipboard|entire contents|display(ing| (alert|dialog|mode))?|document( (edited|file|nib name))?|file( (name|type))?|(info )?for|giving up after|(name )?extension|quoted form|return(ed)?|second(?! item)(s)?|list (disks|folder)|text item(s| delimiters)?|(Unicode )?text|(disk )?item(s)?|((current|list) )?view|((container|key) )?window|with (data|icon( (caution|note|stop))?|parameter(s)?|prompt|properties|seed|title)|case|diacriticals|hyphens|numeric strings|punctuation|white space|folder creation|application(s( folder)?| (processes|scripts position|support))?|((desktop )?(pictures )?|(documents|downloads|favorites|home|keychain|library|movies|music|public|scripts|sites|system|users|utilities|workflows) )folder|desktop|Folder Action scripts|font(s| panel)?|help|internet plugins|modem scripts|(system )?preferences|printer descriptions|scripting (additions|components)|shared (documents|libraries)|startup (disk|items)|temporary items|trash|on server|in AppleTalk zone|((as|long|short) )?user name|user (ID|locale)|(with )?password|in (bundle( with identifier)?|directory)|(close|open for) access|read|write( permission)?|(g|s)et eof|using( delimiters)?|starting at|default (answer|button|color|country code|entr(y|ies)|identifiers|items|name|location|script editor)|hidden( answer)?|open(ed| (location|untitled))?|error (handling|reporting)|(do( shell)?|load|run|store) script|administrator privileges|altering line endings|get volume settings|(alert|boot|input|mount|output|set) volume|output muted|(fax|random )?number|round(ing)?|up|down|toward zero|to nearest|as taught in school|system (attribute|info)|((AppleScript( Studio)?|system) )?version|(home )?directory|(IPv4|primary Ethernet) address|CPU (type|speed)|physical memory|time (stamp|to GMT)|replacing|ASCII (character|number)|localized string|from table|offset|summarize|beep|delay|say|(empty|multiple) selections allowed|(of|preferred) type|invisibles|showing( package contents)?|editable URL|(File|FTP|News|Media|Web) [Ss]ervers|Telnet hosts|Directory services|Remote applications|waiting until completion|saving( (in|to))?|path (for|to( (((current|frontmost) )?application|resource))?)|POSIX (file|path)|(background|RGB) color|(OK|cancel) button name|cancel button|button(s)?|cubic ((centi)?met(re|er)s|yards|feet|inches)|square ((kilo)?met(re|er)s|miles|yards|feet)|(centi|kilo)?met(re|er)s|miles|yards|feet|inches|lit(re|er)s|gallons|quarts|(kilo)?grams|ounces|pounds|degrees (Celsius|Fahrenheit|Kelvin)|print( (dialog|settings))?|clos(e(able)?|ing)|(de)?miniaturized|miniaturizable|zoom(ed|able)|attribute run|action (method|property|title)|phone|email|((start|end)ing|home) page|((birth|creation|current|custom|modification) )?date|((((phonetic )?(first|last|middle))|computer|host|maiden|related) |nick)?name|aim|icq|jabber|msn|yahoo|address(es)?|save addressbook|should enable action|city|country( code)?|formatte(r|d address)|(palette )?label|state|street|zip|AIM [Hh]andle(s)?|my card|select(ion| all)?|unsaved|(alpha )?value|entr(y|ies)|group|(ICQ|Jabber|MSN) handle|person|people|company|department|icon image|job title|note|organization|suffix|vcard|url|copies|collating|pages (across|down)|request print time|target( printer)?|((GUI Scripting|Script menu) )?enabled|show Computer scripts|(de)?activated|awake from nib|became (key|main)|call method|of (class|object)|center|clicked toolbar item|closed|for document|exposed|(can )?hide|idle|keyboard (down|up)|event( (number|type))?|launch(ed)?|load (image|movie|nib|sound)|owner|log|mouse (down|dragged|entered|exited|moved|up)|move|column|localization|resource|script|register|drag (info|types)|resigned (active|key|main)|resiz(e(d)?|able)|right mouse (down|dragged|up)|scroll wheel|(at )?index|should (close|open( untitled)?|quit( after last window closed)?|zoom)|((proposed|screen) )?bounds|show(n)?|behind|in front of|size (mode|to fit)|update(d| toolbar item)?|was (hidden|miniaturized)|will (become active|close|finish launching|hide|miniaturize|move|open|quit|(resign )?active|((maximum|minimum|proposed) )?size|show|zoom)|bundle|data source|movie|pasteboard|sound|tool(bar| tip)|(color|open|save) panel|coordinate system|frontmost|main( (bundle|menu|window))?|((services|(excluded from )?windows) )?menu|((executable|frameworks|resource|scripts|shared (frameworks|support)) )?path|(selected item )?identifier|data|content(s| view)?|character(s)?|click count|(command|control|option|shift) key down|context|delta (x|y|z)|key( code)?|location|pressure|unmodified characters|types|(first )?responder|playing|(allowed|selectable) identifiers|allows customization|(auto saves )?configuration|visible|image( name)?|menu form representation|tag|user(-| )defaults|associated file name|(auto|needs) display|current field editor|floating|has (resize indicator|shadow)|hides when deactivated|level|minimized (image|title)|opaque|position|release when closed|sheet|title(d)?)\b/g,
60 css: 'color3' },
61
62 { regex: new RegExp(this.getKeywords(specials), 'gm'), css: 'color3' },
63 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' },
64 { regex: new RegExp(this.getKeywords(ordinals), 'gm'), css: 'keyword' }
65 ];
66 };
67
68 Brush.prototype = new SyntaxHighlighter.Highlighter();
69 Brush.aliases = ['applescript'];
70
71 SyntaxHighlighter.brushes.AppleScript = Brush;
72
73 // CommonJS
74 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
75})();
diff --git a/Blocks/syntax/scripts/shBrushBash.js b/Blocks/syntax/scripts/shBrushBash.js
new file mode 100644
index 0000000..8c29696
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushBash.js
@@ -0,0 +1,59 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var keywords = 'if fi then elif else for do done until while break continue case function return in eq ne ge le';
25 var commands = 'alias apropos awk basename bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot' +
26 'cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df ' +
27 'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' +
28 'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' +
29 'free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig ' +
30 'import install join kill less let ln local locate logname logout look lpc lpr lprint ' +
31 'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' +
32 'mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap ' +
33 'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' +
34 'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' +
35 'sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time ' +
36 'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' +
37 'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' +
38 'vi watch wc whereis which who whoami Wget xargs yes'
39 ;
40
41 this.regexList = [
42 { regex: /^#!.*$/gm, css: 'preprocessor bold' },
43 { regex: /\/[\w-\/]+/gm, css: 'plain' },
44 { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments
45 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
46 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
47 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
48 { regex: new RegExp(this.getKeywords(commands), 'gm'), css: 'functions' } // commands
49 ];
50 }
51
52 Brush.prototype = new SyntaxHighlighter.Highlighter();
53 Brush.aliases = ['bash', 'shell'];
54
55 SyntaxHighlighter.brushes.Bash = Brush;
56
57 // CommonJS
58 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
59})();
diff --git a/Blocks/syntax/scripts/shBrushCSharp.js b/Blocks/syntax/scripts/shBrushCSharp.js
new file mode 100644
index 0000000..079214e
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushCSharp.js
@@ -0,0 +1,65 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var keywords = 'abstract as base bool break byte case catch char checked class const ' +
25 'continue decimal default delegate do double else enum event explicit ' +
26 'extern false finally fixed float for foreach get goto if implicit in int ' +
27 'interface internal is lock long namespace new null object operator out ' +
28 'override params private protected public readonly ref return sbyte sealed set ' +
29 'short sizeof stackalloc static string struct switch this throw true try ' +
30 'typeof uint ulong unchecked unsafe ushort using virtual void while';
31
32 function fixComments(match, regexInfo)
33 {
34 var css = (match[0].indexOf("///") == 0)
35 ? 'color1'
36 : 'comments'
37 ;
38
39 return [new SyntaxHighlighter.Match(match[0], match.index, css)];
40 }
41
42 this.regexList = [
43 { regex: SyntaxHighlighter.regexLib.singleLineCComments, func : fixComments }, // one line comments
44 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
45 { regex: /@"(?:[^"]|"")*"/g, css: 'string' }, // @-quoted strings
46 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
47 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
48 { regex: /^\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
49 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // c# keyword
50 { regex: /\bpartial(?=\s+(?:class|interface|struct)\b)/g, css: 'keyword' }, // contextual keyword: 'partial'
51 { regex: /\byield(?=\s+(?:return|break)\b)/g, css: 'keyword' } // contextual keyword: 'yield'
52 ];
53
54 this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
55 };
56
57 Brush.prototype = new SyntaxHighlighter.Highlighter();
58 Brush.aliases = ['c#', 'c-sharp', 'csharp'];
59
60 SyntaxHighlighter.brushes.CSharp = Brush;
61
62 // CommonJS
63 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
64})();
65
diff --git a/Blocks/syntax/scripts/shBrushColdFusion.js b/Blocks/syntax/scripts/shBrushColdFusion.js
new file mode 100644
index 0000000..627dbb9
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushColdFusion.js
@@ -0,0 +1,100 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by Jen
25 // http://www.jensbits.com/2009/05/14/coldfusion-brush-for-syntaxhighlighter-plus
26
27 var funcs = 'Abs ACos AddSOAPRequestHeader AddSOAPResponseHeader AjaxLink AjaxOnLoad ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ' +
28 'ArrayInsertAt ArrayIsDefined ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArraySet ArraySort ArraySum ArraySwap ArrayToList ' +
29 'Asc ASin Atn BinaryDecode BinaryEncode BitAnd BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN BitSHRN BitXor ' +
30 'Ceiling CharsetDecode CharsetEncode Chr CJustify Compare CompareNoCase Cos CreateDate CreateDateTime CreateObject ' +
31 'CreateODBCDate CreateODBCDateTime CreateODBCTime CreateTime CreateTimeSpan CreateUUID DateAdd DateCompare DateConvert ' +
32 'DateDiff DateFormat DatePart Day DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear DE DecimalFormat DecrementValue ' +
33 'Decrypt DecryptBinary DeleteClientVariable DeserializeJSON DirectoryExists DollarFormat DotNetToCFType Duplicate Encrypt ' +
34 'EncryptBinary Evaluate Exp ExpandPath FileClose FileCopy FileDelete FileExists FileIsEOF FileMove FileOpen FileRead ' +
35 'FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute FileSetLastModified FileWrite Find FindNoCase FindOneOf ' +
36 'FirstDayOfMonth Fix FormatBaseN GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList GetBaseTemplatePath ' +
37 'GetClientVariablesList GetComponentMetaData GetContextRoot GetCurrentTemplatePath GetDirectoryFromPath GetEncoding ' +
38 'GetException GetFileFromPath GetFileInfo GetFunctionList GetGatewayHelper GetHttpRequestData GetHttpTimeString ' +
39 'GetK2ServerDocCount GetK2ServerDocCountLimit GetLocale GetLocaleDisplayName GetLocalHostIP GetMetaData GetMetricData ' +
40 'GetPageContext GetPrinterInfo GetProfileSections GetProfileString GetReadableImageFormats GetSOAPRequest GetSOAPRequestHeader ' +
41 'GetSOAPResponse GetSOAPResponseHeader GetTempDirectory GetTempFile GetTemplatePath GetTickCount GetTimeZoneInfo GetToken ' +
42 'GetUserRoles GetWriteableImageFormats Hash Hour HTMLCodeFormat HTMLEditFormat IIf ImageAddBorder ImageBlur ImageClearRect ' +
43 'ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect ImageDrawCubicCurve ImageDrawLine ImageDrawLines ImageDrawOval ' +
44 'ImageDrawPoint ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob ImageGetBufferedImage ' +
45 'ImageGetEXIFTag ImageGetHeight ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay ImagePaste ' +
46 'ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit ImageSetAntialiasing ImageSetBackgroundColor ' +
47 'ImageSetDrawingColor ImageSetDrawingStroke ImageSetDrawingTransparency ImageSharpen ImageShear ImageShearDrawingAxis ImageTranslate ' +
48 'ImageTranslateDrawingAxis ImageWrite ImageWriteBase64 ImageXORDrawingMode IncrementValue InputBaseN Insert Int IsArray IsBinary ' +
49 'IsBoolean IsCustomFunction IsDate IsDDX IsDebugMode IsDefined IsImage IsImageFile IsInstanceOf IsJSON IsLeapYear IsLocalHost ' +
50 'IsNumeric IsNumericDate IsObject IsPDFFile IsPDFObject IsQuery IsSimpleValue IsSOAPRequest IsStruct IsUserInAnyRole IsUserInRole ' +
51 'IsUserLoggedIn IsValid IsWDDX IsXML IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot JavaCast JSStringFormat LCase Left Len ' +
52 'ListAppend ListChangeDelims ListContains ListContainsNoCase ListDeleteAt ListFind ListFindNoCase ListFirst ListGetAt ListInsertAt ' +
53 'ListLast ListLen ListPrepend ListQualify ListRest ListSetAt ListSort ListToArray ListValueCount ListValueCountNoCase LJustify Log ' +
54 'Log10 LSCurrencyFormat LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime ' +
55 'LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Max Mid Min Minute Month MonthAsString Now NumberFormat ParagraphFormat ParseDateTime ' +
56 'Pi PrecisionEvaluate PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow QueryConvertForGrid QueryNew QuerySetCell QuotedValueList Rand ' +
57 'Randomize RandRange REFind REFindNoCase ReleaseComObject REMatch REMatchNoCase RemoveChars RepeatString Replace ReplaceList ReplaceNoCase ' +
58 'REReplace REReplaceNoCase Reverse Right RJustify Round RTrim Second SendGatewayMessage SerializeJSON SetEncoding SetLocale SetProfileString ' +
59 'SetVariable Sgn Sin Sleep SpanExcluding SpanIncluding Sqr StripCR StructAppend StructClear StructCopy StructCount StructDelete StructFind ' +
60 'StructFindKey StructFindValue StructGet StructInsert StructIsEmpty StructKeyArray StructKeyExists StructKeyList StructKeyList StructNew ' +
61 'StructSort StructUpdate Tan TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase URLDecode URLEncodedFormat URLSessionFormat Val ' +
62 'ValueList VerifyClient Week Wrap Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform ' +
63 'XmlValidate Year YesNoFormat';
64
65 var keywords = 'cfabort cfajaximport cfajaxproxy cfapplet cfapplication cfargument cfassociate cfbreak cfcache cfcalendar ' +
66 'cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection cfcomponent cfcontent cfcookie cfdbinfo ' +
67 'cfdefaultcase cfdirectory cfdiv cfdocument cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror ' +
68 'cfexchangecalendar cfexchangeconnection cfexchangecontact cfexchangefilter cfexchangemail cfexchangetask ' +
69 'cfexecute cfexit cffeed cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid cfgridcolumn ' +
70 'cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif cfimage cfimport cfinclude cfindex ' +
71 'cfinput cfinsert cfinterface cfinvoke cfinvokeargument cflayout cflayoutarea cfldap cflocation cflock cflog ' +
72 'cflogin cfloginuser cflogout cfloop cfmail cfmailparam cfmailpart cfmenu cfmenuitem cfmodule cfNTauthenticate ' +
73 'cfobject cfobjectcache cfoutput cfparam cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod cfpop ' +
74 'cfpresentation cfpresentationslide cfpresenter cfprint cfprocessingdirective cfprocparam cfprocresult ' +
75 'cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow cfreturn cfsavecontent cfschedule ' +
76 'cfscript cfsearch cfselect cfset cfsetting cfsilent cfslider cfsprydataset cfstoredproc cfswitch cftable ' +
77 'cftextarea cfthread cfthrow cftimer cftooltip cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx ' +
78 'cfwindow cfxml cfzip cfzipparam';
79
80 var operators = 'all and any between cross in join like not null or outer some';
81
82 this.regexList = [
83 { regex: new RegExp('--(.*)$', 'gm'), css: 'comments' }, // one line and multiline comments
84 { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // single quoted strings
85 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
86 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
87 { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // functions
88 { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such
89 { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
90 ];
91 }
92
93 Brush.prototype = new SyntaxHighlighter.Highlighter();
94 Brush.aliases = ['coldfusion','cf'];
95
96 SyntaxHighlighter.brushes.ColdFusion = Brush;
97
98 // CommonJS
99 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
100})();
diff --git a/Blocks/syntax/scripts/shBrushCpp.js b/Blocks/syntax/scripts/shBrushCpp.js
new file mode 100644
index 0000000..9f70d3a
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushCpp.js
@@ -0,0 +1,97 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Copyright 2006 Shin, YoungJin
25
26 var datatypes = 'ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' +
27 'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' +
28 'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' +
29 'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' +
30 'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' +
31 'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' +
32 'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' +
33 'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' +
34 'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' +
35 'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' +
36 'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' +
37 'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' +
38 'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' +
39 'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' +
40 'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' +
41 'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM ' +
42 'char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' +
43 'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' +
44 'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' +
45 '__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' +
46 'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' +
47 'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' +
48 'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' +
49 'va_list wchar_t wctrans_t wctype_t wint_t signed';
50
51 var keywords = 'break case catch class const __finally __exception __try ' +
52 'const_cast continue private public protected __declspec ' +
53 'default delete deprecated dllexport dllimport do dynamic_cast ' +
54 'else enum explicit extern if for friend goto inline ' +
55 'mutable naked namespace new noinline noreturn nothrow ' +
56 'register reinterpret_cast return selectany ' +
57 'sizeof static static_cast struct switch template this ' +
58 'thread throw true false try typedef typeid typename union ' +
59 'using uuid virtual void volatile whcar_t while';
60
61 var functions = 'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' +
62 'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' +
63 'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' +
64 'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' +
65 'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' +
66 'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' +
67 'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' +
68 'fwrite getc getchar gets perror printf putc putchar puts remove ' +
69 'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' +
70 'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' +
71 'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' +
72 'mbtowc qsort rand realloc srand strtod strtol strtoul system ' +
73 'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' +
74 'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' +
75 'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' +
76 'clock ctime difftime gmtime localtime mktime strftime time';
77
78 this.regexList = [
79 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
80 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
81 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
82 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
83 { regex: /^ *#.*/gm, css: 'preprocessor' },
84 { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'color1 bold' },
85 { regex: new RegExp(this.getKeywords(functions), 'gm'), css: 'functions bold' },
86 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword bold' }
87 ];
88 };
89
90 Brush.prototype = new SyntaxHighlighter.Highlighter();
91 Brush.aliases = ['cpp', 'c'];
92
93 SyntaxHighlighter.brushes.Cpp = Brush;
94
95 // CommonJS
96 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
97})();
diff --git a/Blocks/syntax/scripts/shBrushCss.js b/Blocks/syntax/scripts/shBrushCss.js
new file mode 100644
index 0000000..4297a9a
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushCss.js
@@ -0,0 +1,91 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 function getKeywordsCSS(str)
25 {
26 return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
27 };
28
29 function getValuesCSS(str)
30 {
31 return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
32 };
33
34 var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' +
35 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
36 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
37 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
38 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
39 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
40 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
41 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
42 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
43 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
44 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
45 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
46 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
47 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
48
49 var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
50 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
51 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+
52 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
53 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
54 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
55 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
56 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
57 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
58 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
59 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
60 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
61 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
62 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
63
64 var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
65
66 this.regexList = [
67 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
68 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
69 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
70 { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors
71 { regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g, css: 'value' }, // sizes
72 { regex: /!important/g, css: 'color3' }, // !important
73 { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords
74 { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values
75 { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts
76 ];
77
78 this.forHtmlScript({
79 left: /(&lt;|<)\s*style.*?(&gt;|>)/gi,
80 right: /(&lt;|<)\/\s*style\s*(&gt;|>)/gi
81 });
82 };
83
84 Brush.prototype = new SyntaxHighlighter.Highlighter();
85 Brush.aliases = ['css'];
86
87 SyntaxHighlighter.brushes.CSS = Brush;
88
89 // CommonJS
90 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
91})();
diff --git a/Blocks/syntax/scripts/shBrushDelphi.js b/Blocks/syntax/scripts/shBrushDelphi.js
new file mode 100644
index 0000000..e1060d4
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushDelphi.js
@@ -0,0 +1,55 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var keywords = 'abs addr and ansichar ansistring array as asm begin boolean byte cardinal ' +
25 'case char class comp const constructor currency destructor div do double ' +
26 'downto else end except exports extended false file finalization finally ' +
27 'for function goto if implementation in inherited int64 initialization ' +
28 'integer interface is label library longint longword mod nil not object ' +
29 'of on or packed pansichar pansistring pchar pcurrency pdatetime pextended ' +
30 'pint64 pointer private procedure program property pshortstring pstring ' +
31 'pvariant pwidechar pwidestring protected public published raise real real48 ' +
32 'record repeat set shl shortint shortstring shr single smallint string then ' +
33 'threadvar to true try type unit until uses val var varirnt while widechar ' +
34 'widestring with word write writeln xor';
35
36 this.regexList = [
37 { regex: /\(\*[\s\S]*?\*\)/gm, css: 'comments' }, // multiline comments (* *)
38 { regex: /{(?!\$)[\s\S]*?}/gm, css: 'comments' }, // multiline comments { }
39 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line
40 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
41 { regex: /\{\$[a-zA-Z]+ .+\}/g, css: 'color1' }, // compiler Directives and Region tags
42 { regex: /\b[\d\.]+\b/g, css: 'value' }, // numbers 12345
43 { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // numbers $F5D3
44 { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
45 ];
46 };
47
48 Brush.prototype = new SyntaxHighlighter.Highlighter();
49 Brush.aliases = ['delphi', 'pascal', 'pas'];
50
51 SyntaxHighlighter.brushes.Delphi = Brush;
52
53 // CommonJS
54 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
55})();
diff --git a/Blocks/syntax/scripts/shBrushDiff.js b/Blocks/syntax/scripts/shBrushDiff.js
new file mode 100644
index 0000000..e9b14fc
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushDiff.js
@@ -0,0 +1,41 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 this.regexList = [
25 { regex: /^\+\+\+.*$/gm, css: 'color2' },
26 { regex: /^\-\-\-.*$/gm, css: 'color2' },
27 { regex: /^\s.*$/gm, css: 'color1' },
28 { regex: /^@@.*@@$/gm, css: 'variable' },
29 { regex: /^\+[^\+]{1}.*$/gm, css: 'string' },
30 { regex: /^\-[^\-]{1}.*$/gm, css: 'comments' }
31 ];
32 };
33
34 Brush.prototype = new SyntaxHighlighter.Highlighter();
35 Brush.aliases = ['diff', 'patch'];
36
37 SyntaxHighlighter.brushes.Diff = Brush;
38
39 // CommonJS
40 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
41})();
diff --git a/Blocks/syntax/scripts/shBrushErlang.js b/Blocks/syntax/scripts/shBrushErlang.js
new file mode 100644
index 0000000..6ba7d9d
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushErlang.js
@@ -0,0 +1,52 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by Jean-Lou Dupont
25 // http://jldupont.blogspot.com/2009/06/erlang-syntax-highlighter.html
26
27 // According to: http://erlang.org/doc/reference_manual/introduction.html#1.5
28 var keywords = 'after and andalso band begin bnot bor bsl bsr bxor '+
29 'case catch cond div end fun if let not of or orelse '+
30 'query receive rem try when xor'+
31 // additional
32 ' module export import define';
33
34 this.regexList = [
35 { regex: new RegExp("[A-Z][A-Za-z0-9_]+", 'g'), css: 'constants' },
36 { regex: new RegExp("\\%.+", 'gm'), css: 'comments' },
37 { regex: new RegExp("\\?[A-Za-z0-9_]+", 'g'), css: 'preprocessor' },
38 { regex: new RegExp("[a-z0-9_]+:[a-z0-9_]+", 'g'), css: 'functions' },
39 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
40 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
41 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
42 ];
43 };
44
45 Brush.prototype = new SyntaxHighlighter.Highlighter();
46 Brush.aliases = ['erl', 'erlang'];
47
48 SyntaxHighlighter.brushes.Erland = Brush;
49
50 // CommonJS
51 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
52})();
diff --git a/Blocks/syntax/scripts/shBrushGroovy.js b/Blocks/syntax/scripts/shBrushGroovy.js
new file mode 100644
index 0000000..6ec5c18
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushGroovy.js
@@ -0,0 +1,67 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by Andres Almiray
25 // http://jroller.com/aalmiray/entry/nice_source_code_syntax_highlighter
26
27 var keywords = 'as assert break case catch class continue def default do else extends finally ' +
28 'if in implements import instanceof interface new package property return switch ' +
29 'throw throws try while public protected private static';
30 var types = 'void boolean byte char short int long float double';
31 var constants = 'null';
32 var methods = 'allProperties count get size '+
33 'collect each eachProperty eachPropertyName eachWithIndex find findAll ' +
34 'findIndexOf grep inject max min reverseEach sort ' +
35 'asImmutable asSynchronized flatten intersect join pop reverse subMap toList ' +
36 'padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize ' +
37 'eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText ' +
38 'splitEachLine withReader append encodeBase64 decodeBase64 filterLine ' +
39 'transformChar transformLine withOutputStream withPrintWriter withStream ' +
40 'withStreams withWriter withWriterAppend write writeLine '+
41 'dump inspect invokeMethod print println step times upto use waitForOrKill '+
42 'getText';
43
44 this.regexList = [
45 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
46 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
47 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
48 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
49 { regex: /""".*"""/g, css: 'string' }, // GStrings
50 { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'value' }, // numbers
51 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // goovy keyword
52 { regex: new RegExp(this.getKeywords(types), 'gm'), css: 'color1' }, // goovy/java type
53 { regex: new RegExp(this.getKeywords(constants), 'gm'), css: 'constants' }, // constants
54 { regex: new RegExp(this.getKeywords(methods), 'gm'), css: 'functions' } // methods
55 ];
56
57 this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
58 }
59
60 Brush.prototype = new SyntaxHighlighter.Highlighter();
61 Brush.aliases = ['groovy'];
62
63 SyntaxHighlighter.brushes.Groovy = Brush;
64
65 // CommonJS
66 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
67})();
diff --git a/Blocks/syntax/scripts/shBrushJScript.js b/Blocks/syntax/scripts/shBrushJScript.js
new file mode 100644
index 0000000..ff98dab
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushJScript.js
@@ -0,0 +1,52 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var keywords = 'break case catch continue ' +
25 'default delete do else false ' +
26 'for function if in instanceof ' +
27 'new null return super switch ' +
28 'this throw true try typeof var while with'
29 ;
30
31 var r = SyntaxHighlighter.regexLib;
32
33 this.regexList = [
34 { regex: r.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings
35 { regex: r.multiLineSingleQuotedString, css: 'string' }, // single quoted strings
36 { regex: r.singleLineCComments, css: 'comments' }, // one line comments
37 { regex: r.multiLineCComments, css: 'comments' }, // multiline comments
38 { regex: /\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
39 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keywords
40 ];
41
42 this.forHtmlScript(r.scriptScriptTags);
43 };
44
45 Brush.prototype = new SyntaxHighlighter.Highlighter();
46 Brush.aliases = ['js', 'jscript', 'javascript'];
47
48 SyntaxHighlighter.brushes.JScript = Brush;
49
50 // CommonJS
51 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
52})();
diff --git a/Blocks/syntax/scripts/shBrushJava.js b/Blocks/syntax/scripts/shBrushJava.js
new file mode 100644
index 0000000..d692fd6
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushJava.js
@@ -0,0 +1,57 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var keywords = 'abstract assert boolean break byte case catch char class const ' +
25 'continue default do double else enum extends ' +
26 'false final finally float for goto if implements import ' +
27 'instanceof int interface long native new null ' +
28 'package private protected public return ' +
29 'short static strictfp super switch synchronized this throw throws true ' +
30 'transient try void volatile while';
31
32 this.regexList = [
33 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
34 { regex: /\/\*([^\*][\s\S]*)?\*\//gm, css: 'comments' }, // multiline comments
35 { regex: /\/\*(?!\*\/)\*[\s\S]*?\*\//gm, css: 'preprocessor' }, // documentation comments
36 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
37 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
38 { regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers
39 { regex: /(?!\@interface\b)\@[\$\w]+\b/g, css: 'color1' }, // annotation @anno
40 { regex: /\@interface\b/g, css: 'color2' }, // @interface keyword
41 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // java keyword
42 ];
43
44 this.forHtmlScript({
45 left : /(&lt;|<)%[@!=]?/g,
46 right : /%(&gt;|>)/g
47 });
48 };
49
50 Brush.prototype = new SyntaxHighlighter.Highlighter();
51 Brush.aliases = ['java'];
52
53 SyntaxHighlighter.brushes.Java = Brush;
54
55 // CommonJS
56 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
57})();
diff --git a/Blocks/syntax/scripts/shBrushJavaFX.js b/Blocks/syntax/scripts/shBrushJavaFX.js
new file mode 100644
index 0000000..1a150a6
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushJavaFX.js
@@ -0,0 +1,58 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by Patrick Webster
25 // http://patrickwebster.blogspot.com/2009/04/javafx-brush-for-syntaxhighlighter.html
26 var datatypes = 'Boolean Byte Character Double Duration '
27 + 'Float Integer Long Number Short String Void'
28 ;
29
30 var keywords = 'abstract after and as assert at before bind bound break catch class '
31 + 'continue def delete else exclusive extends false finally first for from '
32 + 'function if import in indexof init insert instanceof into inverse last '
33 + 'lazy mixin mod nativearray new not null on or override package postinit '
34 + 'protected public public-init public-read replace return reverse sizeof '
35 + 'step super then this throw true try tween typeof var where while with '
36 + 'attribute let private readonly static trigger'
37 ;
38
39 this.regexList = [
40 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' },
41 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' },
42 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
43 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
44 { regex: /(-?\.?)(\b(\d*\.?\d+|\d+\.?\d*)(e[+-]?\d+)?|0x[a-f\d]+)\b\.?/gi, css: 'color2' }, // numbers
45 { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'variable' }, // datatypes
46 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
47 ];
48 this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
49 };
50
51 Brush.prototype = new SyntaxHighlighter.Highlighter();
52 Brush.aliases = ['jfx', 'javafx'];
53
54 SyntaxHighlighter.brushes.JavaFX = Brush;
55
56 // CommonJS
57 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
58})();
diff --git a/Blocks/syntax/scripts/shBrushPerl.js b/Blocks/syntax/scripts/shBrushPerl.js
new file mode 100644
index 0000000..d94a2e0
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushPerl.js
@@ -0,0 +1,72 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by David Simmons-Duffin and Marty Kube
25
26 var funcs =
27 'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' +
28 'chroot close closedir connect cos crypt defined delete each endgrent ' +
29 'endhostent endnetent endprotoent endpwent endservent eof exec exists ' +
30 'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' +
31 'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' +
32 'getnetbyname getnetent getpeername getpgrp getppid getpriority ' +
33 'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' +
34 'getservbyname getservbyport getservent getsockname getsockopt glob ' +
35 'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' +
36 'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' +
37 'oct open opendir ord pack pipe pop pos print printf prototype push ' +
38 'quotemeta rand read readdir readline readlink readpipe recv rename ' +
39 'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' +
40 'semget semop send setgrent sethostent setnetent setpgrp setpriority ' +
41 'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' +
42 'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' +
43 'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' +
44 'system syswrite tell telldir time times tr truncate uc ucfirst umask ' +
45 'undef unlink unpack unshift utime values vec wait waitpid warn write';
46
47 var keywords =
48 'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' +
49 'for foreach goto if import last local my next no our package redo ref ' +
50 'require return sub tie tied unless untie until use wantarray while';
51
52 this.regexList = [
53 { regex: new RegExp('#[^!].*$', 'gm'), css: 'comments' },
54 { regex: new RegExp('^\\s*#!.*$', 'gm'), css: 'preprocessor' }, // shebang
55 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
56 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
57 { regex: new RegExp('(\\$|@|%)\\w+', 'g'), css: 'variable' },
58 { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' },
59 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
60 ];
61
62 this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
63 }
64
65 Brush.prototype = new SyntaxHighlighter.Highlighter();
66 Brush.aliases = ['perl', 'Perl', 'pl'];
67
68 SyntaxHighlighter.brushes.Perl = Brush;
69
70 // CommonJS
71 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
72})();
diff --git a/Blocks/syntax/scripts/shBrushPhp.js b/Blocks/syntax/scripts/shBrushPhp.js
new file mode 100644
index 0000000..95e6e43
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushPhp.js
@@ -0,0 +1,88 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var funcs = 'abs acos acosh addcslashes addslashes ' +
25 'array_change_key_case array_chunk array_combine array_count_values array_diff '+
26 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
27 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
28 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
29 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
30 'array_push array_rand array_reduce array_reverse array_search array_shift '+
31 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
32 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
33 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
34 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
35 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
36 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
37 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
38 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
39 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
40 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
41 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
42 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
43 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
44 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
45 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
46 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
47 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
48 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
49 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
50 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
51 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
52 'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir '+
53 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
54 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
55 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
56 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
57 'strtoupper strtr strval substr substr_compare';
58
59 var keywords = 'abstract and array as break case catch cfunction class clone const continue declare default die do ' +
60 'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach ' +
61 'function include include_once global goto if implements interface instanceof namespace new ' +
62 'old_function or private protected public return require require_once static switch ' +
63 'throw try use var while xor ';
64
65 var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
66
67 this.regexList = [
68 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
69 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
70 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
71 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
72 { regex: /\$\w+/g, css: 'variable' }, // variables
73 { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // common functions
74 { regex: new RegExp(this.getKeywords(constants), 'gmi'), css: 'constants' }, // constants
75 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword
76 ];
77
78 this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
79 };
80
81 Brush.prototype = new SyntaxHighlighter.Highlighter();
82 Brush.aliases = ['php'];
83
84 SyntaxHighlighter.brushes.Php = Brush;
85
86 // CommonJS
87 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
88})();
diff --git a/Blocks/syntax/scripts/shBrushPlain.js b/Blocks/syntax/scripts/shBrushPlain.js
new file mode 100644
index 0000000..9f7d9e9
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushPlain.js
@@ -0,0 +1,33 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 };
25
26 Brush.prototype = new SyntaxHighlighter.Highlighter();
27 Brush.aliases = ['text', 'plain'];
28
29 SyntaxHighlighter.brushes.Plain = Brush;
30
31 // CommonJS
32 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
33})();
diff --git a/Blocks/syntax/scripts/shBrushPowerShell.js b/Blocks/syntax/scripts/shBrushPowerShell.js
new file mode 100644
index 0000000..0be1752
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushPowerShell.js
@@ -0,0 +1,74 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributes by B.v.Zanten, Getronics
25 // http://confluence.atlassian.com/display/CONFEXT/New+Code+Macro
26
27 var keywords = 'Add-Content Add-History Add-Member Add-PSSnapin Clear(-Content)? Clear-Item ' +
28 'Clear-ItemProperty Clear-Variable Compare-Object ConvertFrom-SecureString Convert-Path ' +
29 'ConvertTo-Html ConvertTo-SecureString Copy(-Item)? Copy-ItemProperty Export-Alias ' +
30 'Export-Clixml Export-Console Export-Csv ForEach(-Object)? Format-Custom Format-List ' +
31 'Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command ' +
32 'Get-Content Get-Credential Get-Culture Get-Date Get-EventLog Get-ExecutionPolicy ' +
33 'Get-Help Get-History Get-Host Get-Item Get-ItemProperty Get-Location Get-Member ' +
34 'Get-PfxCertificate Get-Process Get-PSDrive Get-PSProvider Get-PSSnapin Get-Service ' +
35 'Get-TraceSource Get-UICulture Get-Unique Get-Variable Get-WmiObject Group-Object ' +
36 'Import-Alias Import-Clixml Import-Csv Invoke-Expression Invoke-History Invoke-Item ' +
37 'Join-Path Measure-Command Measure-Object Move(-Item)? Move-ItemProperty New-Alias ' +
38 'New-Item New-ItemProperty New-Object New-PSDrive New-Service New-TimeSpan ' +
39 'New-Variable Out-Default Out-File Out-Host Out-Null Out-Printer Out-String Pop-Location ' +
40 'Push-Location Read-Host Remove-Item Remove-ItemProperty Remove-PSDrive Remove-PSSnapin ' +
41 'Remove-Variable Rename-Item Rename-ItemProperty Resolve-Path Restart-Service Resume-Service ' +
42 'Select-Object Select-String Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content ' +
43 'Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-Location Set-PSDebug ' +
44 'Set-Service Set-TraceSource Set(-Variable)? Sort-Object Split-Path Start-Service ' +
45 'Start-Sleep Start-Transcript Stop-Process Stop-Service Stop-Transcript Suspend-Service ' +
46 'Tee-Object Test-Path Trace-Command Update-FormatData Update-TypeData Where(-Object)? ' +
47 'Write-Debug Write-Error Write(-Host)? Write-Output Write-Progress Write-Verbose Write-Warning';
48 var alias = 'ac asnp clc cli clp clv cpi cpp cvpa diff epal epcsv fc fl ' +
49 'ft fw gal gc gci gcm gdr ghy gi gl gm gp gps group gsv ' +
50 'gsnp gu gv gwmi iex ihy ii ipal ipcsv mi mp nal ndr ni nv oh rdr ' +
51 'ri rni rnp rp rsnp rv rvpa sal sasv sc select si sl sleep sort sp ' +
52 'spps spsv sv tee cat cd cp h history kill lp ls ' +
53 'mount mv popd ps pushd pwd r rm rmdir echo cls chdir del dir ' +
54 'erase rd ren type % \\?';
55
56 this.regexList = [
57 { regex: /#.*$/gm, css: 'comments' }, // one line comments
58 { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // variables $Computer1
59 { regex: /\-[a-zA-Z]+\b/g, css: 'keyword' }, // Operators -not -and -eq
60 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
61 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
62 { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' },
63 { regex: new RegExp(this.getKeywords(alias), 'gmi'), css: 'keyword' }
64 ];
65 };
66
67 Brush.prototype = new SyntaxHighlighter.Highlighter();
68 Brush.aliases = ['powershell', 'ps'];
69
70 SyntaxHighlighter.brushes.PowerShell = Brush;
71
72 // CommonJS
73 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
74})();
diff --git a/Blocks/syntax/scripts/shBrushPython.js b/Blocks/syntax/scripts/shBrushPython.js
new file mode 100644
index 0000000..ce77462
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushPython.js
@@ -0,0 +1,64 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by Gheorghe Milas and Ahmad Sherif
25
26 var keywords = 'and assert break class continue def del elif else ' +
27 'except exec finally for from global if import in is ' +
28 'lambda not or pass print raise return try yield while';
29
30 var funcs = '__import__ abs all any apply basestring bin bool buffer callable ' +
31 'chr classmethod cmp coerce compile complex delattr dict dir ' +
32 'divmod enumerate eval execfile file filter float format frozenset ' +
33 'getattr globals hasattr hash help hex id input int intern ' +
34 'isinstance issubclass iter len list locals long map max min next ' +
35 'object oct open ord pow print property range raw_input reduce ' +
36 'reload repr reversed round set setattr slice sorted staticmethod ' +
37 'str sum super tuple type type unichr unicode vars xrange zip';
38
39 var special = 'None True False self cls class_';
40
41 this.regexList = [
42 { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' },
43 { regex: /^\s*@\w+/gm, css: 'decorator' },
44 { regex: /(['\"]{3})([^\1])*?\1/gm, css: 'comments' },
45 { regex: /"(?!")(?:\.|\\\"|[^\""\n])*"/gm, css: 'string' },
46 { regex: /'(?!')(?:\.|(\\\')|[^\''\n])*'/gm, css: 'string' },
47 { regex: /\+|\-|\*|\/|\%|=|==/gm, css: 'keyword' },
48 { regex: /\b\d+\.?\w*/g, css: 'value' },
49 { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' },
50 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' },
51 { regex: new RegExp(this.getKeywords(special), 'gm'), css: 'color1' }
52 ];
53
54 this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
55 };
56
57 Brush.prototype = new SyntaxHighlighter.Highlighter();
58 Brush.aliases = ['py', 'python'];
59
60 SyntaxHighlighter.brushes.Python = Brush;
61
62 // CommonJS
63 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
64})();
diff --git a/Blocks/syntax/scripts/shBrushRuby.js b/Blocks/syntax/scripts/shBrushRuby.js
new file mode 100644
index 0000000..ff82130
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushRuby.js
@@ -0,0 +1,55 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by Erik Peterson.
25
26 var keywords = 'alias and BEGIN begin break case class def define_method defined do each else elsif ' +
27 'END end ensure false for if in module new next nil not or raise redo rescue retry return ' +
28 'self super then throw true undef unless until when while yield';
29
30 var builtins = 'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' +
31 'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' +
32 'ThreadGroup Thread Time TrueClass';
33
34 this.regexList = [
35 { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments
36 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
37 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
38 { regex: /\b[A-Z0-9_]+\b/g, css: 'constants' }, // constants
39 { regex: /:[a-z][A-Za-z0-9_]*/g, css: 'color2' }, // symbols
40 { regex: /(\$|@@|@)\w+/g, css: 'variable bold' }, // $global, @instance, and @@class variables
41 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
42 { regex: new RegExp(this.getKeywords(builtins), 'gm'), css: 'color1' } // builtins
43 ];
44
45 this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
46 };
47
48 Brush.prototype = new SyntaxHighlighter.Highlighter();
49 Brush.aliases = ['ruby', 'rails', 'ror', 'rb'];
50
51 SyntaxHighlighter.brushes.Ruby = Brush;
52
53 // CommonJS
54 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
55})();
diff --git a/Blocks/syntax/scripts/shBrushSass.js b/Blocks/syntax/scripts/shBrushSass.js
new file mode 100644
index 0000000..aa04da0
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushSass.js
@@ -0,0 +1,94 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 function getKeywordsCSS(str)
25 {
26 return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
27 };
28
29 function getValuesCSS(str)
30 {
31 return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
32 };
33
34 var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' +
35 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
36 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
37 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
38 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
39 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
40 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
41 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
42 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
43 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
44 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
45 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
46 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
47 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
48
49 var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
50 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
51 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero digits disc dotted double '+
52 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
53 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
54 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
55 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
56 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
57 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
58 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
59 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
60 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
61 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
62 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
63
64 var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
65
66 var statements = '!important !default';
67 var preprocessor = '@import @extend @debug @warn @if @for @while @mixin @include';
68
69 var r = SyntaxHighlighter.regexLib;
70
71 this.regexList = [
72 { regex: r.multiLineCComments, css: 'comments' }, // multiline comments
73 { regex: r.singleLineCComments, css: 'comments' }, // singleline comments
74 { regex: r.doubleQuotedString, css: 'string' }, // double quoted strings
75 { regex: r.singleQuotedString, css: 'string' }, // single quoted strings
76 { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors
77 { regex: /\b(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)\b/g, css: 'value' }, // sizes
78 { regex: /\$\w+/g, css: 'variable' }, // variables
79 { regex: new RegExp(this.getKeywords(statements), 'g'), css: 'color3' }, // statements
80 { regex: new RegExp(this.getKeywords(preprocessor), 'g'), css: 'preprocessor' }, // preprocessor
81 { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords
82 { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values
83 { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts
84 ];
85 };
86
87 Brush.prototype = new SyntaxHighlighter.Highlighter();
88 Brush.aliases = ['sass', 'scss'];
89
90 SyntaxHighlighter.brushes.Sass = Brush;
91
92 // CommonJS
93 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
94})();
diff --git a/Blocks/syntax/scripts/shBrushScala.js b/Blocks/syntax/scripts/shBrushScala.js
new file mode 100644
index 0000000..4b0b6f0
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushScala.js
@@ -0,0 +1,51 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 // Contributed by Yegor Jbanov and David Bernard.
25
26 var keywords = 'val sealed case def true trait implicit forSome import match object null finally super ' +
27 'override try lazy for var catch throw type extends class while with new final yield abstract ' +
28 'else do if return protected private this package false';
29
30 var keyops = '[_:=><%#@]+';
31
32 this.regexList = [
33 { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
34 { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
35 { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // multi-line strings
36 { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double-quoted string
37 { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
38 { regex: /0x[a-f0-9]+|\d+(\.\d+)?/gi, css: 'value' }, // numbers
39 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
40 { regex: new RegExp(keyops, 'gm'), css: 'keyword' } // scala keyword
41 ];
42 }
43
44 Brush.prototype = new SyntaxHighlighter.Highlighter();
45 Brush.aliases = ['scala'];
46
47 SyntaxHighlighter.brushes.Scala = Brush;
48
49 // CommonJS
50 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
51})();
diff --git a/Blocks/syntax/scripts/shBrushSql.js b/Blocks/syntax/scripts/shBrushSql.js
new file mode 100644
index 0000000..5c2cd88
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushSql.js
@@ -0,0 +1,66 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var funcs = 'abs avg case cast coalesce convert count current_timestamp ' +
25 'current_user day isnull left lower month nullif replace right ' +
26 'session_user space substring sum system_user upper user year';
27
28 var keywords = 'absolute action add after alter as asc at authorization begin bigint ' +
29 'binary bit by cascade char character check checkpoint close collate ' +
30 'column commit committed connect connection constraint contains continue ' +
31 'create cube current current_date current_time cursor database date ' +
32 'deallocate dec decimal declare default delete desc distinct double drop ' +
33 'dynamic else end end-exec escape except exec execute false fetch first ' +
34 'float for force foreign forward free from full function global goto grant ' +
35 'group grouping having hour ignore index inner insensitive insert instead ' +
36 'int integer intersect into is isolation key last level load local max min ' +
37 'minute modify move name national nchar next no numeric of off on only ' +
38 'open option order out output partial password precision prepare primary ' +
39 'prior privileges procedure public read real references relative repeatable ' +
40 'restrict return returns revoke rollback rollup rows rule schema scroll ' +
41 'second section select sequence serializable set size smallint static ' +
42 'statistics table temp temporary then time timestamp to top transaction ' +
43 'translation trigger true truncate uncommitted union unique update values ' +
44 'varchar varying view when where with work';
45
46 var operators = 'all and any between cross in join like not null or outer some';
47
48 this.regexList = [
49 { regex: /--(.*)$/gm, css: 'comments' }, // one line and multiline comments
50 { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings
51 { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // single quoted strings
52 { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'color2' }, // functions
53 { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such
54 { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
55 ];
56 };
57
58 Brush.prototype = new SyntaxHighlighter.Highlighter();
59 Brush.aliases = ['sql'];
60
61 SyntaxHighlighter.brushes.Sql = Brush;
62
63 // CommonJS
64 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
65})();
66
diff --git a/Blocks/syntax/scripts/shBrushVb.js b/Blocks/syntax/scripts/shBrushVb.js
new file mode 100644
index 0000000..be845dc
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushVb.js
@@ -0,0 +1,56 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' +
25 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' +
26 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' +
27 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' +
28 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' +
29 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' +
30 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' +
31 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' +
32 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' +
33 'Overloads Overridable Overrides ParamArray Preserve Private Property ' +
34 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' +
35 'Return Select Set Shadows Shared Short Single Static Step Stop String ' +
36 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' +
37 'Variant When While With WithEvents WriteOnly Xor';
38
39 this.regexList = [
40 { regex: /'.*$/gm, css: 'comments' }, // one line comments
41 { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
42 { regex: /^\s*#.*$/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
43 { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // vb keyword
44 ];
45
46 this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
47 };
48
49 Brush.prototype = new SyntaxHighlighter.Highlighter();
50 Brush.aliases = ['vb', 'vbnet'];
51
52 SyntaxHighlighter.brushes.Vb = Brush;
53
54 // CommonJS
55 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
56})();
diff --git a/Blocks/syntax/scripts/shBrushXml.js b/Blocks/syntax/scripts/shBrushXml.js
new file mode 100644
index 0000000..69d9fd0
--- /dev/null
+++ b/Blocks/syntax/scripts/shBrushXml.js
@@ -0,0 +1,69 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17;(function()
18{
19 // CommonJS
20 typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21
22 function Brush()
23 {
24 function process(match, regexInfo)
25 {
26 var constructor = SyntaxHighlighter.Match,
27 code = match[0],
28 tag = new XRegExp('(&lt;|<)[\\s\\/\\?]*(?<name>[:\\w-\\.]+)', 'xg').exec(code),
29 result = []
30 ;
31
32 if (match.attributes != null)
33 {
34 var attributes,
35 regex = new XRegExp('(?<name> [\\w:\\-\\.]+)' +
36 '\\s*=\\s*' +
37 '(?<value> ".*?"|\'.*?\'|\\w+)',
38 'xg');
39
40 while ((attributes = regex.exec(code)) != null)
41 {
42 result.push(new constructor(attributes.name, match.index + attributes.index, 'color1'));
43 result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string'));
44 }
45 }
46
47 if (tag != null)
48 result.push(
49 new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword')
50 );
51
52 return result;
53 }
54
55 this.regexList = [
56 { regex: new XRegExp('(\\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\&gt;|>)', 'gm'), css: 'color2' }, // <![ ... [ ... ]]>
57 { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // <!-- ... -->
58 { regex: new XRegExp('(&lt;|<)[\\s\\/\\?]*(\\w+)(?<attributes>.*?)[\\s\\/\\?]*(&gt;|>)', 'sg'), func: process }
59 ];
60 };
61
62 Brush.prototype = new SyntaxHighlighter.Highlighter();
63 Brush.aliases = ['xml', 'xhtml', 'xslt', 'html'];
64
65 SyntaxHighlighter.brushes.Xml = Brush;
66
67 // CommonJS
68 typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
69})();
diff --git a/Blocks/syntax/scripts/shCore.js b/Blocks/syntax/scripts/shCore.js
new file mode 100644
index 0000000..b47b645
--- /dev/null
+++ b/Blocks/syntax/scripts/shCore.js
@@ -0,0 +1,17 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('K M;I(M)1S 2U("2a\'t 4k M 4K 2g 3l 4G 4H");(6(){6 r(f,e){I(!M.1R(f))1S 3m("3s 15 4R");K a=f.1w;f=M(f.1m,t(f)+(e||""));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?"g":"")+(f.4s?"i":"")+(f.4p?"m":"")+(f.4v?"x":"")+(f.3n?"y":"")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m("2a\'t 5r 5I 5F 5B 5C 15 5E 5p");H r(f)}I(v)1S 2U("2a\'t W 3l M 59 5m 5g 5x 5i");e=e||"";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h==="[")b=M.2I;Y I(h==="]")b=M.1B;a.U(h);c++}a=15(a.1K(""),n.Q.W(e,w,""));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v="1.5.0";M.2I=1;M.1B=2;K C=/\\$(?:(\\d\\d?|[$&`\'])|{([$\\w]+)})/g,w=/[^5h]+|([\\s\\S])(?=[\\s\\S]*\\1)/g,A=/^(?:[?*+]|{\\d+(?:,\\d*)?})\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,"")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,"");H!f.12}(),y=6(){K f=/x/g;n.Q.W("x",f,"");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\29-26-f]{2}|u[\\29-26-f]{4}|c[A-3o-z]|[\\s\\S]))/;z[M.1B]=/^(?:\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\29-26-f]{2}|u[\\29-26-f]{4}|c[A-3o-z]|[\\s\\S])|\\(\\?[:=!]|[?*+]\\?|{\\d+(?:,\\d*)?}\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,"g"+(E?"y":"")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+"/"+(e||"");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,"g")};M.5l=6(f){H f.Q(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,"\\\\$&")};M.5e=6(f,e,a,b){e=r(e,"g"+(b&&E?"y":""));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U("2a\'t 55 1h 54 3q")}};M.1R=6(f){H 53.Z.1q.W(f)==="[2m 15]"};M.3p=6(f,e,a,b){O(K c=r(e,"g"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,"g"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||"":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,"")>-1){a=15(J.1m,n.Q.W(t(J),"g",""));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()==="3f"&&e.1i("${")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+="";I(1j e==="6")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+"";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24"$":H"$";24"&":H d[0];24"`":H d[d.L-1].1a(0,d[d.L-2]);24"\'":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i="";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||"":"$")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+"",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,"")||h)b.U("")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\(\\?#[^)]*\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"});M.1h(/\\((?!\\?)/,6(){J.19.U(N);H"("});M.1h(/\\(\\?<([$\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H"("});M.1h(/\\\\k<([\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?"\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?"":"(?:)"):f[0]});M.1h(/\\[\\^?]/,6(f){H f[0]==="[]"?"\\\\b\\\\B":"[\\\\s\\\\S]"});M.1h(/^\\(\\?([5A]+)\\)/,6(f){J.3d(f[1]);H""});M.1h(/(?:\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"},M.1B,6(){H J.2K("x")});M.1h(/\\./,6(){H"[\\\\s\\\\S]"},M.1B,6(){H J.2K("s")})})();1j 2e!="1d"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=" "+b)}6 t(a){H a.1i("3e")==0?a:"3e"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={"#":"1c",".":"1l"}[b.1o(0,1)]||"3h",g,i;g=h!="3h"?b.1o(1):b.5u();I((a[h]||"").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g("4U"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e("\\n"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K("\\n")}6 u(a,b){I(a==N||a.L==0||a=="\\n")H a;a=a.Q(/</g,"&1y;");a=a.Q(/ {2,}/g,6(c){O(K d="",h=0;h<c.L-1;h++)d+=e.13.1W;H d+" "});I(b!=N)a=v(a,6(c){I(c.L==0)H"";K d="";c=c.Q(/^(&2s;| )+/,6(h){d=h;H""});I(c.L==0)H d;H d+\'<17 1g="\'+b+\'">\'+c+"</17>"});H a}6 n(a,b){a.1e("\\n");O(K c="",d=0;d<50;d++)c+=" ";H a=v(a,6(h){I(h.1i("\\t")==-1)H h;O(K g=0;(g=h.1i("\\t"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\s+|\\s+$/g,"")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i=="3f")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d="",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\'<a 2h="\'+c+\'">\'+c+"</a>"+d})}6 z(){O(K a=1E.36("1k"),b=[],c=0;c<a.L;c++)a[c].3s=="20"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,".20",R);a=p(a,".3O",R);K c=1E.4i("3t");I(!(!a||!b||p(a,"3t"))){B(b.1c);r(b,"1m");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K("\\r");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,"4u",6(){c.2G.4E(c);b.1l=b.1l.Q("1m","")})}}I(1j 3F!="1d"&&1j M=="1d")M=3F("M").M;K e={2v:{"1g-27":"","2i-1s":1,"2z-1s-2t":11,1M:N,1t:N,"42-45":R,"43-22":4,1u:R,16:R,"3V-17":R,2l:11,"41-40":R,2k:11,"1z-1k":11},13:{1W:"&2s;",2M:R,46:11,44:11,34:"4n",1x:{21:"4o 1m",2P:"?",1X:"1v\\n\\n",3E:"4r\'t 4t 1D O: ",4g:"4m 4B\'t 51 O 1z-1k 4F: ",37:\'<!4T 1z 4S "-//4V//3H 4W 1.0 4Z//4Y" "1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J"><1z 4I="1Z://2y.3L.3K/4L/5L"><3J><4N 1Z-4M="5G-5M" 6K="2O/1z; 6J=6I-8" /><1t>6L 1v</1t></3J><3B 1L="25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;"><T 1L="2O-3D:3C;3w-32:1.6z;"><T 1L="25-22:6A-6E;">1v</T><T 1L="25-22:.6C;3w-6B:6R;"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h="1Z://3u.2w/1v" 1F="38" 1L="2f:#3y">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h="6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O" 1L="2f:#3y">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\/\\*[\\s\\S]*?\\*\\//2c,6m:/\\/\\/.*$/2c,6l:/#.*$/2c,6k:/"([^\\\\"\\n]|\\\\.)*"/g,6o:/\'([^\\\\\'\\n]|\\\\.)*\'/g,6p:1f M(\'"([^\\\\\\\\"]|\\\\\\\\.)*"\',"3z"),6s:1f M("\'([^\\\\\\\\\']|\\\\\\\\.)*\'","3z"),6q:/(&1y;|<)!--[\\s\\S]*?--(&1G;|>)/2c,3M:/\\w+:\\/\\/[\\w-.\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\?=?/g,1b:/\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\/\\s*1k\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\'<T 1g="16">\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+="</T>";H c},2o:6(a,b,c){H\'<2W><a 2h="#" 1g="6e 6h\'+b+" "+b+\'">\'+c+"</a></2W>"},2b:6(a){K b=a.1F,c=b.1l||"";b=B(p(b,".20",R).1c);K d=6(h){H(h=15(h+"6f(\\\\w+)").X(c))?h[1]:N}("6g");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:["21","2P"],21:{1H:6(a){I(a.V("2l")!=R)H"";K b=a.V("1t");H e.16.2o(a,"21",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q("47","")}},2P:{2B:6(){K a="68=0";a+=", 18="+(31.30-33)/2+", 32="+(31.2Z-2Y)/2+", 30=33, 2Z=2Y";a=a.Q(/^,/,"");a=1P.6Z("","38",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M("^\\\\[(?<2V>(.*?))\\\\]$"),s=1f M("(?<27>[\\\\w-]+)\\\\s*:\\\\s*(?<1T>[\\\\w-%#]+|\\\\[.*?\\\\]|\\".*?\\"|\'.*?\')\\\\s*;?","g");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\'"]|[\'"]$/g,"");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\s*,\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k["1z-1k"]=="R"||e.2v["1z-1k"]==R){d=1f e.4l(j);j="4O"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i("<![6G[")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i("]]\\>")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||"")!="")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||"")!="")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,"4k",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i="2F 1H 2Q".1e(" ");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={"R":R,"11":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]=="2m")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V("2i-1s"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V("1M",[]);I(1j b!="2m"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=["1s","6i"+b,"P"+a,"6r"+(b%2==0?1:2).1q()];J.3U(b)&&a.U("67");b==0&&a.U("1N");H\'<T 1g="\'+a.1K(" ")+\'">\'+c+"</T>"},3Q:6(a,b){K c="",d=a.1e("\\n").L,h=2u(J.V("2i-1s")),g=J.V("2z-1s-2t");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l="0"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e("\\n");J.V("2z-1s-2t");K d=2u(J.V("2i-1s"));a="";O(K h=J.V("1D"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(" ",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\'<17 1g="\'+h+\' 5N">\'+j+"</17>":"")+i)}H a},4f:6(a){H a?"<4a>"+a+"</4a>":""},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+" ":""}O(K d=0,h="",g=J.V("1D",""),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+"48")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+"48");H h},1H:6(a){K b="",c=["20"],d;I(J.V("2k")==R)J.1n.16=J.1n.1u=11;1l="20";J.V("2l")==R&&c.U("47");I((1u=J.V("1u"))==11)c.U("6S");c.U(J.V("1g-27"));c.U(J.V("1D"));a=a.Q(/^[ ]*[\\n]+|[\\n]*[ ]*$/g,"").Q(/\\r/g," ");b=J.V("43-22");I(J.V("42-45")==R)a=n(a,b);Y{O(K h="",g=0;g<b;g++)h+=" ";a=a.Q(/\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\s*\\/?>|&1y;2R\\s*\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,"\\n");I(e.13.44==R)b=b.Q(h,"");b=b.1e("\\n");h=/^\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K("\\n")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V("41-40"))b=E(b);1j 2H!="1d"&&2H.3S&&2H.3S.1C(/5s/)&&c.U("5t");H b=\'<T 1c="\'+t(J.1c)+\'" 1g="\'+c.1K(" ")+\'">\'+(J.V("16")?e.16.1H(J):"")+\'<3Z 5z="0" 5H="0" 5J="0">\'+J.4f(J.V("1t"))+"<3T><3P>"+(1u?\'<2d 1g="1u">\'+J.3Q(a)+"</2d>":"")+\'<2d 1g="17"><T 1g="3O">\'+b+"</T></2d></3P></3T></3Z></T>"},2F:6(a){I(a===N)a="";J.17=a;K b=J.3Y("T");b.3X=J.1H(a);J.V("16")&&w(p(b,".16"),"5c",e.16.2b);J.V("3V-17")&&w(p(b,".17"),"56",f);H b},2Q:6(a){J.1c=""+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V("2k")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\s+|\\s+$/g,"").Q(/\\s+/g,"|");H"\\\\b(?:"+a+")\\\\b"},5f:6(a){J.28={18:{1I:a.18,23:"1k"},1b:{1I:a.1b,23:"1k"},17:1f M("(?<18>"+a.18.1m+")(?<17>.*?)(?<1b>"+a.1b.1m+")","5o")}}};H e}();1j 2e!="1d"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))
diff --git a/Blocks/syntax/scripts/shLegacy.js b/Blocks/syntax/scripts/shLegacy.js
new file mode 100644
index 0000000..6d9fd4d
--- /dev/null
+++ b/Blocks/syntax/scripts/shLegacy.js
@@ -0,0 +1,17 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 u={8:{}};u.8={A:4(c,k,l,m,n,o){4 d(a,b){2 a!=1?a:b}4 f(a){2 a!=1?a.E():1}c=c.I(":");3 g=c[0],e={};t={"r":K};M=1;5=8.5;9(3 j R c)e[c[j]]="r";k=f(d(k,5.C));l=f(d(l,5.D));m=f(d(m,5.s));o=f(d(o,5.Q));n=f(d(n,5["x-y"]));2{P:g,C:d(t[e.O],k),D:d(t[e.N],l),s:d({"r":r}[e.s],m),"x-y":d(4(a,b){9(3 h=T S("^"+b+"\\\\[(?<q>\\\\w+)\\\\]$","U"),i=1,p=0;p<a.7;p++)6((i=h.J(a[p]))!=1)2 i.q;2 1}(c,"G"),n)}},F:4(c,k,l,m,n,o){4 d(){9(3 a=H,b=0;b<a.7;b++)6(a[b]!==1){6(z a[b]=="L"&&a[b]!="")2 a[b]+"";6(z a[b]=="X"&&a[b].q!="")2 a[b].q+""}2 1}4 f(a,b,h){h=12.13(h);9(3 i=0;i<h.7;i++)h[i].V("15")==b&&a.Y(h[i])}3 g=[];f(g,c,"Z");f(g,c,"W");6(g.7!==0)9(c=0;c<g.7;c++){3 e=g[c],j=d(e.B["14"],e.10,e.B.v,e.v);6(j!==1){j=u.8.A(j,k,l,m,n,o);8.11(j,e)}}}};',62,68,'|null|return|var|function|defaults|if|length|SyntaxHighlighter|for|||||||||||||||||value|true|collapse|reverse|dp|language||first|line|typeof|parseParams|attributes|gutter|toolbar|toString|HighlightAll|firstline|arguments|split|exec|false|string|result|nocontrols|nogutter|brush|ruler|in|XRegExp|new|gi|getAttribute|textarea|object|push|pre|className|highlight|document|getElementsByTagName|class|name'.split('|'),0,{}))
diff --git a/Blocks/syntax/src/shAutoloader.js b/Blocks/syntax/src/shAutoloader.js
new file mode 100644
index 0000000..3a95449
--- /dev/null
+++ b/Blocks/syntax/src/shAutoloader.js
@@ -0,0 +1,130 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17(function() {
18
19var sh = SyntaxHighlighter;
20
21/**
22 * Provides functionality to dynamically load only the brushes that a needed to render the current page.
23 *
24 * There are two syntaxes that autoload understands. For example:
25 *
26 * SyntaxHighlighter.autoloader(
27 * [ 'applescript', 'Scripts/shBrushAppleScript.js' ],
28 * [ 'actionscript3', 'as3', 'Scripts/shBrushAS3.js' ]
29 * );
30 *
31 * or a more easily comprehendable one:
32 *
33 * SyntaxHighlighter.autoloader(
34 * 'applescript Scripts/shBrushAppleScript.js',
35 * 'actionscript3 as3 Scripts/shBrushAS3.js'
36 * );
37 */
38sh.autoloader = function()
39{
40 var list = arguments,
41 elements = sh.findElements(),
42 brushes = {},
43 scripts = {},
44 all = SyntaxHighlighter.all,
45 allCalled = false,
46 allParams = null,
47 i
48 ;
49
50 SyntaxHighlighter.all = function(params)
51 {
52 allParams = params;
53 allCalled = true;
54 };
55
56 function addBrush(aliases, url)
57 {
58 for (var i = 0; i < aliases.length; i++)
59 brushes[aliases[i]] = url;
60 };
61
62 function getAliases(item)
63 {
64 return item.pop
65 ? item
66 : item.split(/\s+/)
67 ;
68 }
69
70 // create table of aliases and script urls
71 for (i = 0; i < list.length; i++)
72 {
73 var aliases = getAliases(list[i]),
74 url = aliases.pop()
75 ;
76
77 addBrush(aliases, url);
78 }
79
80 // dynamically add <script /> tags to the document body
81 for (i = 0; i < elements.length; i++)
82 {
83 var url = brushes[elements[i].params.brush];
84
85 if (!url)
86 continue;
87
88 scripts[url] = false;
89 loadScript(url);
90 }
91
92 function loadScript(url)
93 {
94 var script = document.createElement('script'),
95 done = false
96 ;
97
98 script.src = url;
99 script.type = 'text/javascript';
100 script.language = 'javascript';
101 script.onload = script.onreadystatechange = function()
102 {
103 if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete'))
104 {
105 done = true;
106 scripts[url] = true;
107 checkAll();
108
109 // Handle memory leak in IE
110 script.onload = script.onreadystatechange = null;
111 script.parentNode.removeChild(script);
112 }
113 };
114
115 // sync way of adding script tags to the page
116 document.body.appendChild(script);
117 };
118
119 function checkAll()
120 {
121 for(var url in scripts)
122 if (scripts[url] == false)
123 return;
124
125 if (allCalled)
126 SyntaxHighlighter.highlight(allParams);
127 };
128};
129
130})();
diff --git a/Blocks/syntax/src/shCore.js b/Blocks/syntax/src/shCore.js
new file mode 100644
index 0000000..4214763
--- /dev/null
+++ b/Blocks/syntax/src/shCore.js
@@ -0,0 +1,1721 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17//
18// Begin anonymous function. This is used to contain local scope variables without polutting global scope.
19//
20var SyntaxHighlighter = function() {
21
22// CommonJS
23if (typeof(require) != 'undefined' && typeof(XRegExp) == 'undefined')
24{
25 XRegExp = require('XRegExp').XRegExp;
26}
27
28// Shortcut object which will be assigned to the SyntaxHighlighter variable.
29// This is a shorthand for local reference in order to avoid long namespace
30// references to SyntaxHighlighter.whatever...
31var sh = {
32 defaults : {
33 /** Additional CSS class names to be added to highlighter elements. */
34 'class-name' : '',
35
36 /** First line number. */
37 'first-line' : 1,
38
39 /**
40 * Pads line numbers. Possible values are:
41 *
42 * false - don't pad line numbers.
43 * true - automaticaly pad numbers with minimum required number of leading zeroes.
44 * [int] - length up to which pad line numbers.
45 */
46 'pad-line-numbers' : false,
47
48 /** Lines to highlight. */
49 'highlight' : null,
50
51 /** Title to be displayed above the code block. */
52 'title' : null,
53
54 /** Enables or disables smart tabs. */
55 'smart-tabs' : true,
56
57 /** Gets or sets tab size. */
58 'tab-size' : 4,
59
60 /** Enables or disables gutter. */
61 'gutter' : true,
62
63 /** Enables or disables toolbar. */
64 'toolbar' : true,
65
66 /** Enables quick code copy and paste from double click. */
67 'quick-code' : true,
68
69 /** Forces code view to be collapsed. */
70 'collapse' : false,
71
72 /** Enables or disables automatic links. */
73 'auto-links' : true,
74
75 /** Gets or sets light mode. Equavalent to turning off gutter and toolbar. */
76 'light' : false,
77
78 'html-script' : false
79 },
80
81 config : {
82 space : '&nbsp;',
83
84 /** Enables use of <SCRIPT type="syntaxhighlighter" /> tags. */
85 useScriptTags : true,
86
87 /** Blogger mode flag. */
88 bloggerMode : false,
89
90 stripBrs : false,
91
92 /** Name of the tag that SyntaxHighlighter will automatically look for. */
93 tagName : 'pre',
94
95 strings : {
96 expandSource : 'expand source',
97 help : '?',
98 alert: 'SyntaxHighlighter\n\n',
99 noBrush : 'Can\'t find brush for: ',
100 brushNotHtmlScript : 'Brush wasn\'t configured for html-script option: ',
101
102 // this is populated by the build script
103 aboutDialog : '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>About SyntaxHighlighter</title></head><body style="font-family:Geneva,Arial,Helvetica,sans-serif;background-color:#fff;color:#000;font-size:1em;text-align:center;"><div style="text-align:center;margin-top:1.5em;"><div style="font-size:xx-large;">SyntaxHighlighter</div><div style="font-size:.75em;margin-bottom:3em;"><div>version 3.0.83 (July 02 2010)</div><div><a href="http://alexgorbatchev.com/SyntaxHighlighter" target="_blank" style="color:#005896">http://alexgorbatchev.com/SyntaxHighlighter</a></div><div>JavaScript code syntax highlighter.</div><div>Copyright 2004-2010 Alex Gorbatchev.</div></div><div>If you like this script, please <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2930402" style="color:#005896">donate</a> to <br/>keep development active!</div></div></body></html>'
104 }
105 },
106
107 /** Internal 'global' variables. */
108 vars : {
109 discoveredBrushes : null,
110 highlighters : {}
111 },
112
113 /** This object is populated by user included external brush files. */
114 brushes : {},
115
116 /** Common regular expressions. */
117 regexLib : {
118 multiLineCComments : /\/\*[\s\S]*?\*\//gm,
119 singleLineCComments : /\/\/.*$/gm,
120 singleLinePerlComments : /#.*$/gm,
121 doubleQuotedString : /"([^\\"\n]|\\.)*"/g,
122 singleQuotedString : /'([^\\'\n]|\\.)*'/g,
123 multiLineDoubleQuotedString : new XRegExp('"([^\\\\"]|\\\\.)*"', 'gs'),
124 multiLineSingleQuotedString : new XRegExp("'([^\\\\']|\\\\.)*'", 'gs'),
125 xmlComments : /(&lt;|<)!--[\s\S]*?--(&gt;|>)/gm,
126 url : /\w+:\/\/[\w-.\/?%&=:@;]*/g,
127
128 /** <?= ?> tags. */
129 phpScriptTags : { left: /(&lt;|<)\?=?/g, right: /\?(&gt;|>)/g },
130
131 /** <%= %> tags. */
132 aspScriptTags : { left: /(&lt;|<)%=?/g, right: /%(&gt;|>)/g },
133
134 /** <script></script> tags. */
135 scriptScriptTags : { left: /(&lt;|<)\s*script.*?(&gt;|>)/gi, right: /(&lt;|<)\/\s*script\s*(&gt;|>)/gi }
136 },
137
138 toolbar: {
139 /**
140 * Generates HTML markup for the toolbar.
141 * @param {Highlighter} highlighter Highlighter instance.
142 * @return {String} Returns HTML markup.
143 */
144 getHtml: function(highlighter)
145 {
146 var html = '<div class="toolbar">',
147 items = sh.toolbar.items,
148 list = items.list
149 ;
150
151 function defaultGetHtml(highlighter, name)
152 {
153 return sh.toolbar.getButtonHtml(highlighter, name, sh.config.strings[name]);
154 };
155
156 for (var i = 0; i < list.length; i++)
157 html += (items[list[i]].getHtml || defaultGetHtml)(highlighter, list[i]);
158
159 html += '</div>';
160
161 return html;
162 },
163
164 /**
165 * Generates HTML markup for a regular button in the toolbar.
166 * @param {Highlighter} highlighter Highlighter instance.
167 * @param {String} commandName Command name that would be executed.
168 * @param {String} label Label text to display.
169 * @return {String} Returns HTML markup.
170 */
171 getButtonHtml: function(highlighter, commandName, label)
172 {
173 return '<span><a href="#" class="toolbar_item'
174 + ' command_' + commandName
175 + ' ' + commandName
176 + '">' + label + '</a></span>'
177 ;
178 },
179
180 /**
181 * Event handler for a toolbar anchor.
182 */
183 handler: function(e)
184 {
185 var target = e.target,
186 className = target.className || ''
187 ;
188
189 function getValue(name)
190 {
191 var r = new RegExp(name + '_(\\w+)'),
192 match = r.exec(className)
193 ;
194
195 return match ? match[1] : null;
196 };
197
198 var highlighter = getHighlighterById(findParentElement(target, '.syntaxhighlighter').id),
199 commandName = getValue('command')
200 ;
201
202 // execute the toolbar command
203 if (highlighter && commandName)
204 sh.toolbar.items[commandName].execute(highlighter);
205
206 // disable default A click behaviour
207 e.preventDefault();
208 },
209
210 /** Collection of toolbar items. */
211 items : {
212 // Ordered lis of items in the toolbar. Can't expect `for (var n in items)` to be consistent.
213 list: ['expandSource', 'help'],
214
215 expandSource: {
216 getHtml: function(highlighter)
217 {
218 if (highlighter.getParam('collapse') != true)
219 return '';
220
221 var title = highlighter.getParam('title');
222 return sh.toolbar.getButtonHtml(highlighter, 'expandSource', title ? title : sh.config.strings.expandSource);
223 },
224
225 execute: function(highlighter)
226 {
227 var div = getHighlighterDivById(highlighter.id);
228 removeClass(div, 'collapsed');
229 }
230 },
231
232 /** Command to display the about dialog window. */
233 help: {
234 execute: function(highlighter)
235 {
236 var wnd = popup('', '_blank', 500, 250, 'scrollbars=0'),
237 doc = wnd.document
238 ;
239
240 doc.write(sh.config.strings.aboutDialog);
241 doc.close();
242 wnd.focus();
243 }
244 }
245 }
246 },
247
248 /**
249 * Finds all elements on the page which should be processes by SyntaxHighlighter.
250 *
251 * @param {Object} globalParams Optional parameters which override element's
252 * parameters. Only used if element is specified.
253 *
254 * @param {Object} element Optional element to highlight. If none is
255 * provided, all elements in the current document
256 * are returned which qualify.
257 *
258 * @return {Array} Returns list of <code>{ target: DOMElement, params: Object }</code> objects.
259 */
260 findElements: function(globalParams, element)
261 {
262 var elements = element ? [element] : toArray(document.getElementsByTagName(sh.config.tagName)),
263 conf = sh.config,
264 result = []
265 ;
266
267 // support for <SCRIPT TYPE="syntaxhighlighter" /> feature
268 if (conf.useScriptTags)
269 elements = elements.concat(getSyntaxHighlighterScriptTags());
270
271 if (elements.length === 0)
272 return result;
273
274 for (var i = 0; i < elements.length; i++)
275 {
276 var item = {
277 target: elements[i],
278 // local params take precedence over globals
279 params: merge(globalParams, parseParams(elements[i].className))
280 };
281
282 if (item.params['brush'] == null)
283 continue;
284
285 result.push(item);
286 }
287
288 return result;
289 },
290
291 /**
292 * Shorthand to highlight all elements on the page that are marked as
293 * SyntaxHighlighter source code.
294 *
295 * @param {Object} globalParams Optional parameters which override element's
296 * parameters. Only used if element is specified.
297 *
298 * @param {Object} element Optional element to highlight. If none is
299 * provided, all elements in the current document
300 * are highlighted.
301 */
302 highlight: function(globalParams, element)
303 {
304 var elements = this.findElements(globalParams, element),
305 propertyName = 'innerHTML',
306 highlighter = null,
307 conf = sh.config
308 ;
309
310 if (elements.length === 0)
311 return;
312
313 for (var i = 0; i < elements.length; i++)
314 {
315 var element = elements[i],
316 target = element.target,
317 params = element.params,
318 brushName = params.brush,
319 code
320 ;
321
322 if (brushName == null)
323 continue;
324
325 // Instantiate a brush
326 if (params['html-script'] == 'true' || sh.defaults['html-script'] == true)
327 {
328 highlighter = new sh.HtmlScript(brushName);
329 brushName = 'htmlscript';
330 }
331 else
332 {
333 var brush = findBrush(brushName);
334
335 if (brush)
336 highlighter = new brush();
337 else
338 continue;
339 }
340
341 code = target[propertyName];
342
343 // remove CDATA from <SCRIPT/> tags if it's present
344 if (conf.useScriptTags)
345 code = stripCData(code);
346
347 // Inject title if the attribute is present
348 if ((target.title || '') != '')
349 params.title = target.title;
350
351 params['brush'] = brushName;
352 highlighter.init(params);
353 element = highlighter.getDiv(code);
354
355 // carry over ID
356 if ((target.id || '') != '')
357 element.id = target.id;
358
359 target.parentNode.replaceChild(element, target);
360 }
361 },
362
363 /**
364 * Main entry point for the SyntaxHighlighter.
365 * @param {Object} params Optional params to apply to all highlighted elements.
366 */
367 all: function(params)
368 {
369 attachEvent(
370 window,
371 'load',
372 function() { sh.highlight(params); }
373 );
374 }
375}; // end of sh
376
377sh['all'] = sh.all;
378sh['highlight'] = sh.highlight;
379
380/**
381 * Checks if target DOM elements has specified CSS class.
382 * @param {DOMElement} target Target DOM element to check.
383 * @param {String} className Name of the CSS class to check for.
384 * @return {Boolean} Returns true if class name is present, false otherwise.
385 */
386function hasClass(target, className)
387{
388 return target.className.indexOf(className) != -1;
389};
390
391/**
392 * Adds CSS class name to the target DOM element.
393 * @param {DOMElement} target Target DOM element.
394 * @param {String} className New CSS class to add.
395 */
396function addClass(target, className)
397{
398 if (!hasClass(target, className))
399 target.className += ' ' + className;
400};
401
402/**
403 * Removes CSS class name from the target DOM element.
404 * @param {DOMElement} target Target DOM element.
405 * @param {String} className CSS class to remove.
406 */
407function removeClass(target, className)
408{
409 target.className = target.className.replace(className, '');
410};
411
412/**
413 * Converts the source to array object. Mostly used for function arguments and
414 * lists returned by getElementsByTagName() which aren't Array objects.
415 * @param {List} source Source list.
416 * @return {Array} Returns array.
417 */
418function toArray(source)
419{
420 var result = [];
421
422 for (var i = 0; i < source.length; i++)
423 result.push(source[i]);
424
425 return result;
426};
427
428/**
429 * Splits block of text into lines.
430 * @param {String} block Block of text.
431 * @return {Array} Returns array of lines.
432 */
433function splitLines(block)
434{
435 return block.split('\n');
436}
437
438/**
439 * Generates HTML ID for the highlighter.
440 * @param {String} highlighterId Highlighter ID.
441 * @return {String} Returns HTML ID.
442 */
443function getHighlighterId(id)
444{
445 var prefix = 'highlighter_';
446 return id.indexOf(prefix) == 0 ? id : prefix + id;
447};
448
449/**
450 * Finds Highlighter instance by ID.
451 * @param {String} highlighterId Highlighter ID.
452 * @return {Highlighter} Returns instance of the highlighter.
453 */
454function getHighlighterById(id)
455{
456 return sh.vars.highlighters[getHighlighterId(id)];
457};
458
459/**
460 * Finds highlighter's DIV container.
461 * @param {String} highlighterId Highlighter ID.
462 * @return {Element} Returns highlighter's DIV element.
463 */
464function getHighlighterDivById(id)
465{
466 return document.getElementById(getHighlighterId(id));
467};
468
469/**
470 * Stores highlighter so that getHighlighterById() can do its thing. Each
471 * highlighter must call this method to preserve itself.
472 * @param {Highilghter} highlighter Highlighter instance.
473 */
474function storeHighlighter(highlighter)
475{
476 sh.vars.highlighters[getHighlighterId(highlighter.id)] = highlighter;
477};
478
479/**
480 * Looks for a child or parent node which has specified classname.
481 * Equivalent to jQuery's $(container).find(".className")
482 * @param {Element} target Target element.
483 * @param {String} search Class name or node name to look for.
484 * @param {Boolean} reverse If set to true, will go up the node tree instead of down.
485 * @return {Element} Returns found child or parent element on null.
486 */
487function findElement(target, search, reverse /* optional */)
488{
489 if (target == null)
490 return null;
491
492 var nodes = reverse != true ? target.childNodes : [ target.parentNode ],
493 propertyToFind = { '#' : 'id', '.' : 'className' }[search.substr(0, 1)] || 'nodeName',
494 expectedValue,
495 found
496 ;
497
498 expectedValue = propertyToFind != 'nodeName'
499 ? search.substr(1)
500 : search.toUpperCase()
501 ;
502
503 // main return of the found node
504 if ((target[propertyToFind] || '').indexOf(expectedValue) != -1)
505 return target;
506
507 for (var i = 0; nodes && i < nodes.length && found == null; i++)
508 found = findElement(nodes[i], search, reverse);
509
510 return found;
511};
512
513/**
514 * Looks for a parent node which has specified classname.
515 * This is an alias to <code>findElement(container, className, true)</code>.
516 * @param {Element} target Target element.
517 * @param {String} className Class name to look for.
518 * @return {Element} Returns found parent element on null.
519 */
520function findParentElement(target, className)
521{
522 return findElement(target, className, true);
523};
524
525/**
526 * Finds an index of element in the array.
527 * @ignore
528 * @param {Object} searchElement
529 * @param {Number} fromIndex
530 * @return {Number} Returns index of element if found; -1 otherwise.
531 */
532function indexOf(array, searchElement, fromIndex)
533{
534 fromIndex = Math.max(fromIndex || 0, 0);
535
536 for (var i = fromIndex; i < array.length; i++)
537 if(array[i] == searchElement)
538 return i;
539
540 return -1;
541};
542
543/**
544 * Generates a unique element ID.
545 */
546function guid(prefix)
547{
548 return (prefix || '') + Math.round(Math.random() * 1000000).toString();
549};
550
551/**
552 * Merges two objects. Values from obj2 override values in obj1.
553 * Function is NOT recursive and works only for one dimensional objects.
554 * @param {Object} obj1 First object.
555 * @param {Object} obj2 Second object.
556 * @return {Object} Returns combination of both objects.
557 */
558function merge(obj1, obj2)
559{
560 var result = {}, name;
561
562 for (name in obj1)
563 result[name] = obj1[name];
564
565 for (name in obj2)
566 result[name] = obj2[name];
567
568 return result;
569};
570
571/**
572 * Attempts to convert string to boolean.
573 * @param {String} value Input string.
574 * @return {Boolean} Returns true if input was "true", false if input was "false" and value otherwise.
575 */
576function toBoolean(value)
577{
578 var result = { "true" : true, "false" : false }[value];
579 return result == null ? value : result;
580};
581
582/**
583 * Opens up a centered popup window.
584 * @param {String} url URL to open in the window.
585 * @param {String} name Popup name.
586 * @param {int} width Popup width.
587 * @param {int} height Popup height.
588 * @param {String} options window.open() options.
589 * @return {Window} Returns window instance.
590 */
591function popup(url, name, width, height, options)
592{
593 var x = (screen.width - width) / 2,
594 y = (screen.height - height) / 2
595 ;
596
597 options += ', left=' + x +
598 ', top=' + y +
599 ', width=' + width +
600 ', height=' + height
601 ;
602 options = options.replace(/^,/, '');
603
604 var win = window.open(url, name, options);
605 win.focus();
606 return win;
607};
608
609/**
610 * Adds event handler to the target object.
611 * @param {Object} obj Target object.
612 * @param {String} type Name of the event.
613 * @param {Function} func Handling function.
614 */
615function attachEvent(obj, type, func, scope)
616{
617 function handler(e)
618 {
619 e = e || window.event;
620
621 if (!e.target)
622 {
623 e.target = e.srcElement;
624 e.preventDefault = function()
625 {
626 this.returnValue = false;
627 };
628 }
629
630 func.call(scope || window, e);
631 };
632
633 if (obj.attachEvent)
634 {
635 obj.attachEvent('on' + type, handler);
636 }
637 else
638 {
639 obj.addEventListener(type, handler, false);
640 }
641};
642
643/**
644 * Displays an alert.
645 * @param {String} str String to display.
646 */
647function alert(str)
648{
649 window.alert(sh.config.strings.alert + str);
650};
651
652/**
653 * Finds a brush by its alias.
654 *
655 * @param {String} alias Brush alias.
656 * @param {Boolean} showAlert Suppresses the alert if false.
657 * @return {Brush} Returns bursh constructor if found, null otherwise.
658 */
659function findBrush(alias, showAlert)
660{
661 var brushes = sh.vars.discoveredBrushes,
662 result = null
663 ;
664
665 if (brushes == null)
666 {
667 brushes = {};
668
669 // Find all brushes
670 for (var brush in sh.brushes)
671 {
672 var info = sh.brushes[brush],
673 aliases = info.aliases
674 ;
675
676 if (aliases == null)
677 continue;
678
679 // keep the brush name
680 info.brushName = brush.toLowerCase();
681
682 for (var i = 0; i < aliases.length; i++)
683 brushes[aliases[i]] = brush;
684 }
685
686 sh.vars.discoveredBrushes = brushes;
687 }
688
689 result = sh.brushes[brushes[alias]];
690
691 if (result == null && showAlert != false)
692 alert(sh.config.strings.noBrush + alias);
693
694 return result;
695};
696
697/**
698 * Executes a callback on each line and replaces each line with result from the callback.
699 * @param {Object} str Input string.
700 * @param {Object} callback Callback function taking one string argument and returning a string.
701 */
702function eachLine(str, callback)
703{
704 var lines = splitLines(str);
705
706 for (var i = 0; i < lines.length; i++)
707 lines[i] = callback(lines[i], i);
708
709 return lines.join('\n');
710};
711
712/**
713 * This is a special trim which only removes first and last empty lines
714 * and doesn't affect valid leading space on the first line.
715 *
716 * @param {String} str Input string
717 * @return {String} Returns string without empty first and last lines.
718 */
719function trimFirstAndLastLines(str)
720{
721 return str.replace(/^[ ]*[\n]+|[\n]*[ ]*$/g, '');
722};
723
724/**
725 * Parses key/value pairs into hash object.
726 *
727 * Understands the following formats:
728 * - name: word;
729 * - name: [word, word];
730 * - name: "string";
731 * - name: 'string';
732 *
733 * For example:
734 * name1: value; name2: [value, value]; name3: 'value'
735 *
736 * @param {String} str Input string.
737 * @return {Object} Returns deserialized object.
738 */
739function parseParams(str)
740{
741 var match,
742 result = {},
743 arrayRegex = new XRegExp("^\\[(?<values>(.*?))\\]$"),
744 regex = new XRegExp(
745 "(?<name>[\\w-]+)" +
746 "\\s*:\\s*" +
747 "(?<value>" +
748 "[\\w-%#]+|" + // word
749 "\\[.*?\\]|" + // [] array
750 '".*?"|' + // "" string
751 "'.*?'" + // '' string
752 ")\\s*;?",
753 "g"
754 )
755 ;
756
757 while ((match = regex.exec(str)) != null)
758 {
759 var value = match.value
760 .replace(/^['"]|['"]$/g, '') // strip quotes from end of strings
761 ;
762
763 // try to parse array value
764 if (value != null && arrayRegex.test(value))
765 {
766 var m = arrayRegex.exec(value);
767 value = m.values.length > 0 ? m.values.split(/\s*,\s*/) : [];
768 }
769
770 result[match.name] = value;
771 }
772
773 return result;
774};
775
776/**
777 * Wraps each line of the string into <code/> tag with given style applied to it.
778 *
779 * @param {String} str Input string.
780 * @param {String} css Style name to apply to the string.
781 * @return {String} Returns input string with each line surrounded by <span/> tag.
782 */
783function wrapLinesWithCode(str, css)
784{
785 if (str == null || str.length == 0 || str == '\n')
786 return str;
787
788 str = str.replace(/</g, '&lt;');
789
790 // Replace two or more sequential spaces with &nbsp; leaving last space untouched.
791 str = str.replace(/ {2,}/g, function(m)
792 {
793 var spaces = '';
794
795 for (var i = 0; i < m.length - 1; i++)
796 spaces += sh.config.space;
797
798 return spaces + ' ';
799 });
800
801 // Split each line and apply <span class="...">...</span> to them so that
802 // leading spaces aren't included.
803 if (css != null)
804 str = eachLine(str, function(line)
805 {
806 if (line.length == 0)
807 return '';
808
809 var spaces = '';
810
811 line = line.replace(/^(&nbsp;| )+/, function(s)
812 {
813 spaces = s;
814 return '';
815 });
816
817 if (line.length == 0)
818 return spaces;
819
820 return spaces + '<code class="' + css + '">' + line + '</code>';
821 });
822
823 return str;
824};
825
826/**
827 * Pads number with zeros until it's length is the same as given length.
828 *
829 * @param {Number} number Number to pad.
830 * @param {Number} length Max string length with.
831 * @return {String} Returns a string padded with proper amount of '0'.
832 */
833function padNumber(number, length)
834{
835 var result = number.toString();
836
837 while (result.length < length)
838 result = '0' + result;
839
840 return result;
841};
842
843/**
844 * Replaces tabs with spaces.
845 *
846 * @param {String} code Source code.
847 * @param {Number} tabSize Size of the tab.
848 * @return {String} Returns code with all tabs replaces by spaces.
849 */
850function processTabs(code, tabSize)
851{
852 var tab = '';
853
854 for (var i = 0; i < tabSize; i++)
855 tab += ' ';
856
857 return code.replace(/\t/g, tab);
858};
859
860/**
861 * Replaces tabs with smart spaces.
862 *
863 * @param {String} code Code to fix the tabs in.
864 * @param {Number} tabSize Number of spaces in a column.
865 * @return {String} Returns code with all tabs replaces with roper amount of spaces.
866 */
867function processSmartTabs(code, tabSize)
868{
869 var lines = splitLines(code),
870 tab = '\t',
871 spaces = ''
872 ;
873
874 // Create a string with 1000 spaces to copy spaces from...
875 // It's assumed that there would be no indentation longer than that.
876 for (var i = 0; i < 50; i++)
877 spaces += ' '; // 20 spaces * 50
878
879 // This function inserts specified amount of spaces in the string
880 // where a tab is while removing that given tab.
881 function insertSpaces(line, pos, count)
882 {
883 return line.substr(0, pos)
884 + spaces.substr(0, count)
885 + line.substr(pos + 1, line.length) // pos + 1 will get rid of the tab
886 ;
887 };
888
889 // Go through all the lines and do the 'smart tabs' magic.
890 code = eachLine(code, function(line)
891 {
892 if (line.indexOf(tab) == -1)
893 return line;
894
895 var pos = 0;
896
897 while ((pos = line.indexOf(tab)) != -1)
898 {
899 // This is pretty much all there is to the 'smart tabs' logic.
900 // Based on the position within the line and size of a tab,
901 // calculate the amount of spaces we need to insert.
902 var spaces = tabSize - pos % tabSize;
903 line = insertSpaces(line, pos, spaces);
904 }
905
906 return line;
907 });
908
909 return code;
910};
911
912/**
913 * Performs various string fixes based on configuration.
914 */
915function fixInputString(str)
916{
917 var br = /<br\s*\/?>|&lt;br\s*\/?&gt;/gi;
918
919 if (sh.config.bloggerMode == true)
920 str = str.replace(br, '\n');
921
922 if (sh.config.stripBrs == true)
923 str = str.replace(br, '');
924
925 return str;
926};
927
928/**
929 * Removes all white space at the begining and end of a string.
930 *
931 * @param {String} str String to trim.
932 * @return {String} Returns string without leading and following white space characters.
933 */
934function trim(str)
935{
936 return str.replace(/^\s+|\s+$/g, '');
937};
938
939/**
940 * Unindents a block of text by the lowest common indent amount.
941 * @param {String} str Text to unindent.
942 * @return {String} Returns unindented text block.
943 */
944function unindent(str)
945{
946 var lines = splitLines(fixInputString(str)),
947 indents = new Array(),
948 regex = /^\s*/,
949 min = 1000
950 ;
951
952 // go through every line and check for common number of indents
953 for (var i = 0; i < lines.length && min > 0; i++)
954 {
955 var line = lines[i];
956
957 if (trim(line).length == 0)
958 continue;
959
960 var matches = regex.exec(line);
961
962 // In the event that just one line doesn't have leading white space
963 // we can't unindent anything, so bail completely.
964 if (matches == null)
965 return str;
966
967 min = Math.min(matches[0].length, min);
968 }
969
970 // trim minimum common number of white space from the begining of every line
971 if (min > 0)
972 for (var i = 0; i < lines.length; i++)
973 lines[i] = lines[i].substr(min);
974
975 return lines.join('\n');
976};
977
978/**
979 * Callback method for Array.sort() which sorts matches by
980 * index position and then by length.
981 *
982 * @param {Match} m1 Left object.
983 * @param {Match} m2 Right object.
984 * @return {Number} Returns -1, 0 or -1 as a comparison result.
985 */
986function matchesSortCallback(m1, m2)
987{
988 // sort matches by index first
989 if(m1.index < m2.index)
990 return -1;
991 else if(m1.index > m2.index)
992 return 1;
993 else
994 {
995 // if index is the same, sort by length
996 if(m1.length < m2.length)
997 return -1;
998 else if(m1.length > m2.length)
999 return 1;
1000 }
1001
1002 return 0;
1003};
1004
1005/**
1006 * Executes given regular expression on provided code and returns all
1007 * matches that are found.
1008 *
1009 * @param {String} code Code to execute regular expression on.
1010 * @param {Object} regex Regular expression item info from <code>regexList</code> collection.
1011 * @return {Array} Returns a list of Match objects.
1012 */
1013function getMatches(code, regexInfo)
1014{
1015 function defaultAdd(match, regexInfo)
1016 {
1017 return match[0];
1018 };
1019
1020 var index = 0,
1021 match = null,
1022 matches = [],
1023 func = regexInfo.func ? regexInfo.func : defaultAdd
1024 ;
1025
1026 while((match = regexInfo.regex.exec(code)) != null)
1027 {
1028 var resultMatch = func(match, regexInfo);
1029
1030 if (typeof(resultMatch) == 'string')
1031 resultMatch = [new sh.Match(resultMatch, match.index, regexInfo.css)];
1032
1033 matches = matches.concat(resultMatch);
1034 }
1035
1036 return matches;
1037};
1038
1039/**
1040 * Turns all URLs in the code into <a/> tags.
1041 * @param {String} code Input code.
1042 * @return {String} Returns code with </a> tags.
1043 */
1044function processUrls(code)
1045{
1046 var gt = /(.*)((&gt;|&lt;).*)/;
1047
1048 return code.replace(sh.regexLib.url, function(m)
1049 {
1050 var suffix = '',
1051 match = null
1052 ;
1053
1054 // We include &lt; and &gt; in the URL for the common cases like <http://google.com>
1055 // The problem is that they get transformed into &lt;http://google.com&gt;
1056 // Where as &gt; easily looks like part of the URL string.
1057
1058 if (match = gt.exec(m))
1059 {
1060 m = match[1];
1061 suffix = match[2];
1062 }
1063
1064 return '<a href="' + m + '">' + m + '</a>' + suffix;
1065 });
1066};
1067
1068/**
1069 * Finds all <SCRIPT TYPE="syntaxhighlighter" /> elementss.
1070 * @return {Array} Returns array of all found SyntaxHighlighter tags.
1071 */
1072function getSyntaxHighlighterScriptTags()
1073{
1074 var tags = document.getElementsByTagName('script'),
1075 result = []
1076 ;
1077
1078 for (var i = 0; i < tags.length; i++)
1079 if (tags[i].type == 'syntaxhighlighter')
1080 result.push(tags[i]);
1081
1082 return result;
1083};
1084
1085/**
1086 * Strips <![CDATA[]]> from <SCRIPT /> content because it should be used
1087 * there in most cases for XHTML compliance.
1088 * @param {String} original Input code.
1089 * @return {String} Returns code without leading <![CDATA[]]> tags.
1090 */
1091function stripCData(original)
1092{
1093 var left = '<![CDATA[',
1094 right = ']]>',
1095 // for some reason IE inserts some leading blanks here
1096 copy = trim(original),
1097 changed = false,
1098 leftLength = left.length,
1099 rightLength = right.length
1100 ;
1101
1102 if (copy.indexOf(left) == 0)
1103 {
1104 copy = copy.substring(leftLength);
1105 changed = true;
1106 }
1107
1108 var copyLength = copy.length;
1109
1110 if (copy.indexOf(right) == copyLength - rightLength)
1111 {
1112 copy = copy.substring(0, copyLength - rightLength);
1113 changed = true;
1114 }
1115
1116 return changed ? copy : original;
1117};
1118
1119
1120/**
1121 * Quick code mouse double click handler.
1122 */
1123function quickCodeHandler(e)
1124{
1125 var target = e.target,
1126 highlighterDiv = findParentElement(target, '.syntaxhighlighter'),
1127 container = findParentElement(target, '.container'),
1128 textarea = document.createElement('textarea'),
1129 highlighter
1130 ;
1131
1132 if (!container || !highlighterDiv || findElement(container, 'textarea'))
1133 return;
1134
1135 highlighter = getHighlighterById(highlighterDiv.id);
1136
1137 // add source class name
1138 addClass(highlighterDiv, 'source');
1139
1140 // Have to go over each line and grab it's text, can't just do it on the
1141 // container because Firefox loses all \n where as Webkit doesn't.
1142 var lines = container.childNodes,
1143 code = []
1144 ;
1145
1146 for (var i = 0; i < lines.length; i++)
1147 code.push(lines[i].innerText || lines[i].textContent);
1148
1149 // using \r instead of \r or \r\n makes this work equally well on IE, FF and Webkit
1150 code = code.join('\r');
1151
1152 // inject <textarea/> tag
1153 textarea.appendChild(document.createTextNode(code));
1154 container.appendChild(textarea);
1155
1156 // preselect all text
1157 textarea.focus();
1158 textarea.select();
1159
1160 // set up handler for lost focus
1161 attachEvent(textarea, 'blur', function(e)
1162 {
1163 textarea.parentNode.removeChild(textarea);
1164 removeClass(highlighterDiv, 'source');
1165 });
1166};
1167
1168/**
1169 * Match object.
1170 */
1171sh.Match = function(value, index, css)
1172{
1173 this.value = value;
1174 this.index = index;
1175 this.length = value.length;
1176 this.css = css;
1177 this.brushName = null;
1178};
1179
1180sh.Match.prototype.toString = function()
1181{
1182 return this.value;
1183};
1184
1185/**
1186 * Simulates HTML code with a scripting language embedded.
1187 *
1188 * @param {String} scriptBrushName Brush name of the scripting language.
1189 */
1190sh.HtmlScript = function(scriptBrushName)
1191{
1192 var brushClass = findBrush(scriptBrushName),
1193 scriptBrush,
1194 xmlBrush = new sh.brushes.Xml(),
1195 bracketsRegex = null,
1196 ref = this,
1197 methodsToExpose = 'getDiv getHtml init'.split(' ')
1198 ;
1199
1200 if (brushClass == null)
1201 return;
1202
1203 scriptBrush = new brushClass();
1204
1205 for(var i = 0; i < methodsToExpose.length; i++)
1206 // make a closure so we don't lose the name after i changes
1207 (function() {
1208 var name = methodsToExpose[i];
1209
1210 ref[name] = function()
1211 {
1212 return xmlBrush[name].apply(xmlBrush, arguments);
1213 };
1214 })();
1215
1216 if (scriptBrush.htmlScript == null)
1217 {
1218 alert(sh.config.strings.brushNotHtmlScript + scriptBrushName);
1219 return;
1220 }
1221
1222 xmlBrush.regexList.push(
1223 { regex: scriptBrush.htmlScript.code, func: process }
1224 );
1225
1226 function offsetMatches(matches, offset)
1227 {
1228 for (var j = 0; j < matches.length; j++)
1229 matches[j].index += offset;
1230 }
1231
1232 function process(match, info)
1233 {
1234 var code = match.code,
1235 matches = [],
1236 regexList = scriptBrush.regexList,
1237 offset = match.index + match.left.length,
1238 htmlScript = scriptBrush.htmlScript,
1239 result
1240 ;
1241
1242 // add all matches from the code
1243 for (var i = 0; i < regexList.length; i++)
1244 {
1245 result = getMatches(code, regexList[i]);
1246 offsetMatches(result, offset);
1247 matches = matches.concat(result);
1248 }
1249
1250 // add left script bracket
1251 if (htmlScript.left != null && match.left != null)
1252 {
1253 result = getMatches(match.left, htmlScript.left);
1254 offsetMatches(result, match.index);
1255 matches = matches.concat(result);
1256 }
1257
1258 // add right script bracket
1259 if (htmlScript.right != null && match.right != null)
1260 {
1261 result = getMatches(match.right, htmlScript.right);
1262 offsetMatches(result, match.index + match[0].lastIndexOf(match.right));
1263 matches = matches.concat(result);
1264 }
1265
1266 for (var j = 0; j < matches.length; j++)
1267 matches[j].brushName = brushClass.brushName;
1268
1269 return matches;
1270 }
1271};
1272
1273/**
1274 * Main Highlither class.
1275 * @constructor
1276 */
1277sh.Highlighter = function()
1278{
1279 // not putting any code in here because of the prototype inheritance
1280};
1281
1282sh.Highlighter.prototype = {
1283 /**
1284 * Returns value of the parameter passed to the highlighter.
1285 * @param {String} name Name of the parameter.
1286 * @param {Object} defaultValue Default value.
1287 * @return {Object} Returns found value or default value otherwise.
1288 */
1289 getParam: function(name, defaultValue)
1290 {
1291 var result = this.params[name];
1292 return toBoolean(result == null ? defaultValue : result);
1293 },
1294
1295 /**
1296 * Shortcut to document.createElement().
1297 * @param {String} name Name of the element to create (DIV, A, etc).
1298 * @return {HTMLElement} Returns new HTML element.
1299 */
1300 create: function(name)
1301 {
1302 return document.createElement(name);
1303 },
1304
1305 /**
1306 * Applies all regular expression to the code and stores all found
1307 * matches in the `this.matches` array.
1308 * @param {Array} regexList List of regular expressions.
1309 * @param {String} code Source code.
1310 * @return {Array} Returns list of matches.
1311 */
1312 findMatches: function(regexList, code)
1313 {
1314 var result = [];
1315
1316 if (regexList != null)
1317 for (var i = 0; i < regexList.length; i++)
1318 // BUG: length returns len+1 for array if methods added to prototype chain ([email protected])
1319 if (typeof (regexList[i]) == "object")
1320 result = result.concat(getMatches(code, regexList[i]));
1321
1322 // sort and remove nested the matches
1323 return this.removeNestedMatches(result.sort(matchesSortCallback));
1324 },
1325
1326 /**
1327 * Checks to see if any of the matches are inside of other matches.
1328 * This process would get rid of highligted strings inside comments,
1329 * keywords inside strings and so on.
1330 */
1331 removeNestedMatches: function(matches)
1332 {
1333 // Optimized by Jose Prado (http://joseprado.com)
1334 for (var i = 0; i < matches.length; i++)
1335 {
1336 if (matches[i] === null)
1337 continue;
1338
1339 var itemI = matches[i],
1340 itemIEndPos = itemI.index + itemI.length
1341 ;
1342
1343 for (var j = i + 1; j < matches.length && matches[i] !== null; j++)
1344 {
1345 var itemJ = matches[j];
1346
1347 if (itemJ === null)
1348 continue;
1349 else if (itemJ.index > itemIEndPos)
1350 break;
1351 else if (itemJ.index == itemI.index && itemJ.length > itemI.length)
1352 matches[i] = null;
1353 else if (itemJ.index >= itemI.index && itemJ.index < itemIEndPos)
1354 matches[j] = null;
1355 }
1356 }
1357
1358 return matches;
1359 },
1360
1361 /**
1362 * Creates an array containing integer line numbers starting from the 'first-line' param.
1363 * @return {Array} Returns array of integers.
1364 */
1365 figureOutLineNumbers: function(code)
1366 {
1367 var lines = [],
1368 firstLine = parseInt(this.getParam('first-line'))
1369 ;
1370
1371 eachLine(code, function(line, index)
1372 {
1373 lines.push(index + firstLine);
1374 });
1375
1376 return lines;
1377 },
1378
1379 /**
1380 * Determines if specified line number is in the highlighted list.
1381 */
1382 isLineHighlighted: function(lineNumber)
1383 {
1384 var list = this.getParam('highlight', []);
1385
1386 if (typeof(list) != 'object' && list.push == null)
1387 list = [ list ];
1388
1389 return indexOf(list, lineNumber.toString()) != -1;
1390 },
1391
1392 /**
1393 * Generates HTML markup for a single line of code while determining alternating line style.
1394 * @param {Integer} lineNumber Line number.
1395 * @param {String} code Line HTML markup.
1396 * @return {String} Returns HTML markup.
1397 */
1398 getLineHtml: function(lineIndex, lineNumber, code)
1399 {
1400 var classes = [
1401 'line',
1402 'number' + lineNumber,
1403 'index' + lineIndex,
1404 'alt' + (lineNumber % 2 == 0 ? 1 : 2).toString()
1405 ];
1406
1407 if (this.isLineHighlighted(lineNumber))
1408 classes.push('highlighted');
1409
1410 if (lineNumber == 0)
1411 classes.push('break');
1412
1413 return '<div class="' + classes.join(' ') + '">' + code + '</div>';
1414 },
1415
1416 /**
1417 * Generates HTML markup for line number column.
1418 * @param {String} code Complete code HTML markup.
1419 * @param {Array} lineNumbers Calculated line numbers.
1420 * @return {String} Returns HTML markup.
1421 */
1422 getLineNumbersHtml: function(code, lineNumbers)
1423 {
1424 var html = '',
1425 count = splitLines(code).length,
1426 firstLine = parseInt(this.getParam('first-line')),
1427 pad = this.getParam('pad-line-numbers')
1428 ;
1429
1430 if (pad == true)
1431 pad = (firstLine + count - 1).toString().length;
1432 else if (isNaN(pad) == true)
1433 pad = 0;
1434
1435 for (var i = 0; i < count; i++)
1436 {
1437 var lineNumber = lineNumbers ? lineNumbers[i] : firstLine + i,
1438 code = lineNumber == 0 ? sh.config.space : padNumber(lineNumber, pad)
1439 ;
1440
1441 html += this.getLineHtml(i, lineNumber, code);
1442 }
1443
1444 return html;
1445 },
1446
1447 /**
1448 * Splits block of text into individual DIV lines.
1449 * @param {String} code Code to highlight.
1450 * @param {Array} lineNumbers Calculated line numbers.
1451 * @return {String} Returns highlighted code in HTML form.
1452 */
1453 getCodeLinesHtml: function(html, lineNumbers)
1454 {
1455 html = trim(html);
1456
1457 var lines = splitLines(html),
1458 padLength = this.getParam('pad-line-numbers'),
1459 firstLine = parseInt(this.getParam('first-line')),
1460 html = '',
1461 brushName = this.getParam('brush')
1462 ;
1463
1464 for (var i = 0; i < lines.length; i++)
1465 {
1466 var line = lines[i],
1467 indent = /^(&nbsp;|\s)+/.exec(line),
1468 spaces = null,
1469 lineNumber = lineNumbers ? lineNumbers[i] : firstLine + i;
1470 ;
1471
1472 if (indent != null)
1473 {
1474 spaces = indent[0].toString();
1475 line = line.substr(spaces.length);
1476 spaces = spaces.replace(' ', sh.config.space);
1477 }
1478
1479 line = trim(line);
1480
1481 if (line.length == 0)
1482 line = sh.config.space;
1483
1484 html += this.getLineHtml(
1485 i,
1486 lineNumber,
1487 (spaces != null ? '<code class="' + brushName + ' spaces">' + spaces + '</code>' : '') + line
1488 );
1489 }
1490
1491 return html;
1492 },
1493
1494 /**
1495 * Returns HTML for the table title or empty string if title is null.
1496 */
1497 getTitleHtml: function(title)
1498 {
1499 return title ? '<caption>' + title + '</caption>' : '';
1500 },
1501
1502 /**
1503 * Finds all matches in the source code.
1504 * @param {String} code Source code to process matches in.
1505 * @param {Array} matches Discovered regex matches.
1506 * @return {String} Returns formatted HTML with processed mathes.
1507 */
1508 getMatchesHtml: function(code, matches)
1509 {
1510 var pos = 0,
1511 result = '',
1512 brushName = this.getParam('brush', '')
1513 ;
1514
1515 function getBrushNameCss(match)
1516 {
1517 var result = match ? (match.brushName || brushName) : brushName;
1518 return result ? result + ' ' : '';
1519 };
1520
1521 // Finally, go through the final list of matches and pull the all
1522 // together adding everything in between that isn't a match.
1523 for (var i = 0; i < matches.length; i++)
1524 {
1525 var match = matches[i],
1526 matchBrushName
1527 ;
1528
1529 if (match === null || match.length === 0)
1530 continue;
1531
1532 matchBrushName = getBrushNameCss(match);
1533
1534 result += wrapLinesWithCode(code.substr(pos, match.index - pos), matchBrushName + 'plain')
1535 + wrapLinesWithCode(match.value, matchBrushName + match.css)
1536 ;
1537
1538 pos = match.index + match.length + (match.offset || 0);
1539 }
1540
1541 // don't forget to add whatever's remaining in the string
1542 result += wrapLinesWithCode(code.substr(pos), getBrushNameCss() + 'plain');
1543
1544 return result;
1545 },
1546
1547 /**
1548 * Generates HTML markup for the whole syntax highlighter.
1549 * @param {String} code Source code.
1550 * @return {String} Returns HTML markup.
1551 */
1552 getHtml: function(code)
1553 {
1554 var html = '',
1555 classes = [ 'syntaxhighlighter' ],
1556 tabSize,
1557 matches,
1558 lineNumbers
1559 ;
1560
1561 // process light mode
1562 if (this.getParam('light') == true)
1563 this.params.toolbar = this.params.gutter = false;
1564
1565 className = 'syntaxhighlighter';
1566
1567 if (this.getParam('collapse') == true)
1568 classes.push('collapsed');
1569
1570 if ((gutter = this.getParam('gutter')) == false)
1571 classes.push('nogutter');
1572
1573 // add custom user style name
1574 classes.push(this.getParam('class-name'));
1575
1576 // add brush alias to the class name for custom CSS
1577 classes.push(this.getParam('brush'));
1578
1579 code = trimFirstAndLastLines(code)
1580 .replace(/\r/g, ' ') // IE lets these buggers through
1581 ;
1582
1583 tabSize = this.getParam('tab-size');
1584
1585 // replace tabs with spaces
1586 code = this.getParam('smart-tabs') == true
1587 ? processSmartTabs(code, tabSize)
1588 : processTabs(code, tabSize)
1589 ;
1590
1591 // unindent code by the common indentation
1592 code = unindent(code);
1593
1594 if (gutter)
1595 lineNumbers = this.figureOutLineNumbers(code);
1596
1597 // find matches in the code using brushes regex list
1598 matches = this.findMatches(this.regexList, code);
1599 // processes found matches into the html
1600 html = this.getMatchesHtml(code, matches);
1601 // finally, split all lines so that they wrap well
1602 html = this.getCodeLinesHtml(html, lineNumbers);
1603
1604 // finally, process the links
1605 if (this.getParam('auto-links'))
1606 html = processUrls(html);
1607
1608 if (typeof(navigator) != 'undefined' && navigator.userAgent && navigator.userAgent.match(/MSIE/))
1609 classes.push('ie');
1610
1611 html =
1612 '<div id="' + getHighlighterId(this.id) + '" class="' + classes.join(' ') + '">'
1613 + (this.getParam('toolbar') ? sh.toolbar.getHtml(this) : '')
1614 + '<table border="0" cellpadding="0" cellspacing="0">'
1615 + this.getTitleHtml(this.getParam('title'))
1616 + '<tbody>'
1617 + '<tr>'
1618 + (gutter ? '<td class="gutter">' + this.getLineNumbersHtml(code) + '</td>' : '')
1619 + '<td class="code">'
1620 + '<div class="container">'
1621 + html
1622 + '</div>'
1623 + '</td>'
1624 + '</tr>'
1625 + '</tbody>'
1626 + '</table>'
1627 + '</div>'
1628 ;
1629
1630 return html;
1631 },
1632
1633 /**
1634 * Highlights the code and returns complete HTML.
1635 * @param {String} code Code to highlight.
1636 * @return {Element} Returns container DIV element with all markup.
1637 */
1638 getDiv: function(code)
1639 {
1640 if (code === null)
1641 code = '';
1642
1643 this.code = code;
1644
1645 var div = this.create('div');
1646
1647 // create main HTML
1648 div.innerHTML = this.getHtml(code);
1649
1650 // set up click handlers
1651 if (this.getParam('toolbar'))
1652 attachEvent(findElement(div, '.toolbar'), 'click', sh.toolbar.handler);
1653
1654 if (this.getParam('quick-code'))
1655 attachEvent(findElement(div, '.code'), 'dblclick', quickCodeHandler);
1656
1657 return div;
1658 },
1659
1660 /**
1661 * Initializes the highlighter/brush.
1662 *
1663 * Constructor isn't used for initialization so that nothing executes during necessary
1664 * `new SyntaxHighlighter.Highlighter()` call when setting up brush inheritence.
1665 *
1666 * @param {Hash} params Highlighter parameters.
1667 */
1668 init: function(params)
1669 {
1670 this.id = guid();
1671
1672 // register this instance in the highlighters list
1673 storeHighlighter(this);
1674
1675 // local params take precedence over defaults
1676 this.params = merge(sh.defaults, params || {})
1677
1678 // process light mode
1679 if (this.getParam('light') == true)
1680 this.params.toolbar = this.params.gutter = false;
1681 },
1682
1683 /**
1684 * Converts space separated list of keywords into a regular expression string.
1685 * @param {String} str Space separated keywords.
1686 * @return {String} Returns regular expression string.
1687 */
1688 getKeywords: function(str)
1689 {
1690 str = str
1691 .replace(/^\s+|\s+$/g, '')
1692 .replace(/\s+/g, '|')
1693 ;
1694
1695 return '\\b(?:' + str + ')\\b';
1696 },
1697
1698 /**
1699 * Makes a brush compatible with the `html-script` functionality.
1700 * @param {Object} regexGroup Object containing `left` and `right` regular expressions.
1701 */
1702 forHtmlScript: function(regexGroup)
1703 {
1704 this.htmlScript = {
1705 left : { regex: regexGroup.left, css: 'script' },
1706 right : { regex: regexGroup.right, css: 'script' },
1707 code : new XRegExp(
1708 "(?<left>" + regexGroup.left.source + ")" +
1709 "(?<code>.*?)" +
1710 "(?<right>" + regexGroup.right.source + ")",
1711 "sgi"
1712 )
1713 };
1714 }
1715}; // end of Highlighter
1716
1717return sh;
1718}(); // end of anonymous function
1719
1720// CommonJS
1721typeof(exports) != 'undefined' ? exports['SyntaxHighlighter'] = SyntaxHighlighter : null;
diff --git a/Blocks/syntax/src/shLegacy.js b/Blocks/syntax/src/shLegacy.js
new file mode 100644
index 0000000..36951c9
--- /dev/null
+++ b/Blocks/syntax/src/shLegacy.js
@@ -0,0 +1,157 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17var dp = {
18 SyntaxHighlighter : {}
19};
20
21dp.SyntaxHighlighter = {
22 parseParams: function(
23 input,
24 showGutter,
25 showControls,
26 collapseAll,
27 firstLine,
28 showColumns
29 )
30 {
31 function getValue(list, name)
32 {
33 var regex = new XRegExp('^' + name + '\\[(?<value>\\w+)\\]$', 'gi'),
34 match = null
35 ;
36
37 for (var i = 0; i < list.length; i++)
38 if ((match = regex.exec(list[i])) != null)
39 return match.value;
40
41 return null;
42 };
43
44 function defaultValue(value, def)
45 {
46 return value != null ? value : def;
47 };
48
49 function asString(value)
50 {
51 return value != null ? value.toString() : null;
52 };
53
54 var parts = input.split(':'),
55 brushName = parts[0],
56 options = {},
57 straight = { 'true' : true }
58 reverse = { 'true' : false },
59 result = null,
60 defaults = SyntaxHighlighter.defaults
61 ;
62
63 for (var i in parts)
64 options[parts[i]] = 'true';
65
66 showGutter = asString(defaultValue(showGutter, defaults.gutter));
67 showControls = asString(defaultValue(showControls, defaults.toolbar));
68 collapseAll = asString(defaultValue(collapseAll, defaults.collapse));
69 showColumns = asString(defaultValue(showColumns, defaults.ruler));
70 firstLine = asString(defaultValue(firstLine, defaults['first-line']));
71
72 return {
73 brush : brushName,
74 gutter : defaultValue(reverse[options.nogutter], showGutter),
75 toolbar : defaultValue(reverse[options.nocontrols], showControls),
76 collapse : defaultValue(straight[options.collapse], collapseAll),
77 // ruler : defaultValue(straight[options.showcolumns], showColumns),
78 'first-line' : defaultValue(getValue(parts, 'firstline'), firstLine)
79 };
80 },
81
82 HighlightAll: function(
83 name,
84 showGutter /* optional */,
85 showControls /* optional */,
86 collapseAll /* optional */,
87 firstLine /* optional */,
88 showColumns /* optional */
89 )
90 {
91 function findValue()
92 {
93 var a = arguments;
94
95 for (var i = 0; i < a.length; i++)
96 {
97 if (a[i] === null)
98 continue;
99
100 if (typeof(a[i]) == 'string' && a[i] != '')
101 return a[i] + '';
102
103 if (typeof(a[i]) == 'object' && a[i].value != '')
104 return a[i].value + '';
105 }
106
107 return null;
108 };
109
110 function findTagsByName(list, name, tagName)
111 {
112 var tags = document.getElementsByTagName(tagName);
113
114 for (var i = 0; i < tags.length; i++)
115 if (tags[i].getAttribute('name') == name)
116 list.push(tags[i]);
117 }
118
119 var elements = [],
120 highlighter = null,
121 registered = {},
122 propertyName = 'innerHTML'
123 ;
124
125 // for some reason IE doesn't find <pre/> by name, however it does see them just fine by tag name...
126 findTagsByName(elements, name, 'pre');
127 findTagsByName(elements, name, 'textarea');
128
129 if (elements.length === 0)
130 return;
131
132 for (var i = 0; i < elements.length; i++)
133 {
134 var element = elements[i],
135 params = findValue(
136 element.attributes['class'], element.className,
137 element.attributes['language'], element.language
138 ),
139 language = ''
140 ;
141
142 if (params === null)
143 continue;
144
145 params = dp.SyntaxHighlighter.parseParams(
146 params,
147 showGutter,
148 showControls,
149 collapseAll,
150 firstLine,
151 showColumns
152 );
153
154 SyntaxHighlighter.highlight(params, element);
155 }
156 }
157};
diff --git a/Blocks/syntax/styles/shCore.css b/Blocks/syntax/styles/shCore.css
new file mode 100644
index 0000000..34f6864
--- /dev/null
+++ b/Blocks/syntax/styles/shCore.css
@@ -0,0 +1,226 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
diff --git a/Blocks/syntax/styles/shCoreDefault.css b/Blocks/syntax/styles/shCoreDefault.css
new file mode 100644
index 0000000..08f9e10
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreDefault.css
@@ -0,0 +1,328 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: white !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: white !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: white !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #e0e0e0 !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: black !important;
242}
243.syntaxhighlighter table caption {
244 color: black !important;
245}
246.syntaxhighlighter .gutter {
247 color: #afafaf !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #6ce26c !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #6ce26c !important;
254 color: white !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: blue !important;
264 background: white !important;
265 border: 1px solid #6ce26c !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: blue !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: red !important;
272}
273.syntaxhighlighter .toolbar {
274 color: white !important;
275 background: #6ce26c !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: white !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: black !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: black !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #008200 !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: blue !important;
292}
293.syntaxhighlighter .keyword {
294 color: #006699 !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: gray !important;
298}
299.syntaxhighlighter .variable {
300 color: #aa7700 !important;
301}
302.syntaxhighlighter .value {
303 color: #009900 !important;
304}
305.syntaxhighlighter .functions {
306 color: #ff1493 !important;
307}
308.syntaxhighlighter .constants {
309 color: #0066cc !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: #006699 !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: gray !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: #ff1493 !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: red !important;
324}
325
326.syntaxhighlighter .keyword {
327 font-weight: bold !important;
328}
diff --git a/Blocks/syntax/styles/shCoreDjango.css b/Blocks/syntax/styles/shCoreDjango.css
new file mode 100644
index 0000000..1db1f70
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreDjango.css
@@ -0,0 +1,331 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: #0a2b1d !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: #0a2b1d !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: #0a2b1d !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #233729 !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: white !important;
242}
243.syntaxhighlighter table caption {
244 color: #f8f8f8 !important;
245}
246.syntaxhighlighter .gutter {
247 color: #497958 !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #41a83e !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #41a83e !important;
254 color: #0a2b1d !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: #96dd3b !important;
264 background: black !important;
265 border: 1px solid #41a83e !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: #96dd3b !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: white !important;
272}
273.syntaxhighlighter .toolbar {
274 color: white !important;
275 background: #41a83e !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: white !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: #ffe862 !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: #f8f8f8 !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #336442 !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: #9df39f !important;
292}
293.syntaxhighlighter .keyword {
294 color: #96dd3b !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: #91bb9e !important;
298}
299.syntaxhighlighter .variable {
300 color: #ffaa3e !important;
301}
302.syntaxhighlighter .value {
303 color: #f7e741 !important;
304}
305.syntaxhighlighter .functions {
306 color: #ffaa3e !important;
307}
308.syntaxhighlighter .constants {
309 color: #e0e8ff !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: #96dd3b !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: #eb939a !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: #91bb9e !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: #edef7d !important;
324}
325
326.syntaxhighlighter .comments {
327 font-style: italic !important;
328}
329.syntaxhighlighter .keyword {
330 font-weight: bold !important;
331}
diff --git a/Blocks/syntax/styles/shCoreEclipse.css b/Blocks/syntax/styles/shCoreEclipse.css
new file mode 100644
index 0000000..a45de9f
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreEclipse.css
@@ -0,0 +1,339 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: white !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: white !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: white !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #c3defe !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: white !important;
242}
243.syntaxhighlighter table caption {
244 color: black !important;
245}
246.syntaxhighlighter .gutter {
247 color: #787878 !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #d4d0c8 !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #d4d0c8 !important;
254 color: white !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: #3f5fbf !important;
264 background: white !important;
265 border: 1px solid #d4d0c8 !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: #3f5fbf !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: #aa7700 !important;
272}
273.syntaxhighlighter .toolbar {
274 color: #a0a0a0 !important;
275 background: #d4d0c8 !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: #a0a0a0 !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: red !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: black !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #3f5fbf !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: #2a00ff !important;
292}
293.syntaxhighlighter .keyword {
294 color: #7f0055 !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: #646464 !important;
298}
299.syntaxhighlighter .variable {
300 color: #aa7700 !important;
301}
302.syntaxhighlighter .value {
303 color: #009900 !important;
304}
305.syntaxhighlighter .functions {
306 color: #ff1493 !important;
307}
308.syntaxhighlighter .constants {
309 color: #0066cc !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: #7f0055 !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: gray !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: #ff1493 !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: red !important;
324}
325
326.syntaxhighlighter .keyword {
327 font-weight: bold !important;
328}
329.syntaxhighlighter .xml .keyword {
330 color: #3f7f7f !important;
331 font-weight: normal !important;
332}
333.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a {
334 color: #7f007f !important;
335}
336.syntaxhighlighter .xml .string {
337 font-style: italic !important;
338 color: #2a00ff !important;
339}
diff --git a/Blocks/syntax/styles/shCoreEmacs.css b/Blocks/syntax/styles/shCoreEmacs.css
new file mode 100644
index 0000000..706c77a
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreEmacs.css
@@ -0,0 +1,324 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: black !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: black !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: black !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #2a3133 !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: white !important;
242}
243.syntaxhighlighter table caption {
244 color: #d3d3d3 !important;
245}
246.syntaxhighlighter .gutter {
247 color: #d3d3d3 !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #990000 !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #990000 !important;
254 color: black !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: #ebdb8d !important;
264 background: black !important;
265 border: 1px solid #990000 !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: #ebdb8d !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: #ff7d27 !important;
272}
273.syntaxhighlighter .toolbar {
274 color: white !important;
275 background: #990000 !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: white !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: #9ccff4 !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: #d3d3d3 !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #ff7d27 !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: #ff9e7b !important;
292}
293.syntaxhighlighter .keyword {
294 color: aqua !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: #aec4de !important;
298}
299.syntaxhighlighter .variable {
300 color: #ffaa3e !important;
301}
302.syntaxhighlighter .value {
303 color: #009900 !important;
304}
305.syntaxhighlighter .functions {
306 color: #81cef9 !important;
307}
308.syntaxhighlighter .constants {
309 color: #ff9e7b !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: aqua !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: #ebdb8d !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: #ff7d27 !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: #aec4de !important;
324}
diff --git a/Blocks/syntax/styles/shCoreFadeToGrey.css b/Blocks/syntax/styles/shCoreFadeToGrey.css
new file mode 100644
index 0000000..6101eba
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreFadeToGrey.css
@@ -0,0 +1,328 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: #121212 !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: #121212 !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: #121212 !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #2c2c29 !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: white !important;
242}
243.syntaxhighlighter table caption {
244 color: white !important;
245}
246.syntaxhighlighter .gutter {
247 color: #afafaf !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #3185b9 !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #3185b9 !important;
254 color: #121212 !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: #3185b9 !important;
264 background: black !important;
265 border: 1px solid #3185b9 !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: #3185b9 !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: #d01d33 !important;
272}
273.syntaxhighlighter .toolbar {
274 color: white !important;
275 background: #3185b9 !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: white !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: #96daff !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: white !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #696854 !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: #e3e658 !important;
292}
293.syntaxhighlighter .keyword {
294 color: #d01d33 !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: #435a5f !important;
298}
299.syntaxhighlighter .variable {
300 color: #898989 !important;
301}
302.syntaxhighlighter .value {
303 color: #009900 !important;
304}
305.syntaxhighlighter .functions {
306 color: #aaaaaa !important;
307}
308.syntaxhighlighter .constants {
309 color: #96daff !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: #d01d33 !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: #ffc074 !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: #4a8cdb !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: #96daff !important;
324}
325
326.syntaxhighlighter .functions {
327 font-weight: bold !important;
328}
diff --git a/Blocks/syntax/styles/shCoreMDUltra.css b/Blocks/syntax/styles/shCoreMDUltra.css
new file mode 100644
index 0000000..2923ce7
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreMDUltra.css
@@ -0,0 +1,324 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: #222222 !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: #222222 !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: #222222 !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #253e5a !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: white !important;
242}
243.syntaxhighlighter table caption {
244 color: lime !important;
245}
246.syntaxhighlighter .gutter {
247 color: #38566f !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #435a5f !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #435a5f !important;
254 color: #222222 !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: #428bdd !important;
264 background: black !important;
265 border: 1px solid #435a5f !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: #428bdd !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: lime !important;
272}
273.syntaxhighlighter .toolbar {
274 color: #aaaaff !important;
275 background: #435a5f !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: #aaaaff !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: #9ccff4 !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: lime !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #428bdd !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: lime !important;
292}
293.syntaxhighlighter .keyword {
294 color: #aaaaff !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: #8aa6c1 !important;
298}
299.syntaxhighlighter .variable {
300 color: aqua !important;
301}
302.syntaxhighlighter .value {
303 color: #f7e741 !important;
304}
305.syntaxhighlighter .functions {
306 color: #ff8000 !important;
307}
308.syntaxhighlighter .constants {
309 color: yellow !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: #aaaaff !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: red !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: yellow !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: #ffaa3e !important;
324}
diff --git a/Blocks/syntax/styles/shCoreMidnight.css b/Blocks/syntax/styles/shCoreMidnight.css
new file mode 100644
index 0000000..e3733ee
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreMidnight.css
@@ -0,0 +1,324 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: #0f192a !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: #0f192a !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: #0f192a !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #253e5a !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: #38566f !important;
242}
243.syntaxhighlighter table caption {
244 color: #d1edff !important;
245}
246.syntaxhighlighter .gutter {
247 color: #afafaf !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #435a5f !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #435a5f !important;
254 color: #0f192a !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: #428bdd !important;
264 background: black !important;
265 border: 1px solid #435a5f !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: #428bdd !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: #1dc116 !important;
272}
273.syntaxhighlighter .toolbar {
274 color: #d1edff !important;
275 background: #435a5f !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: #d1edff !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: #8aa6c1 !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: #d1edff !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #428bdd !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: #1dc116 !important;
292}
293.syntaxhighlighter .keyword {
294 color: #b43d3d !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: #8aa6c1 !important;
298}
299.syntaxhighlighter .variable {
300 color: #ffaa3e !important;
301}
302.syntaxhighlighter .value {
303 color: #f7e741 !important;
304}
305.syntaxhighlighter .functions {
306 color: #ffaa3e !important;
307}
308.syntaxhighlighter .constants {
309 color: #e0e8ff !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: #b43d3d !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: #f8bb00 !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: white !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: #ffaa3e !important;
324}
diff --git a/Blocks/syntax/styles/shCoreRDark.css b/Blocks/syntax/styles/shCoreRDark.css
new file mode 100644
index 0000000..d093683
--- /dev/null
+++ b/Blocks/syntax/styles/shCoreRDark.css
@@ -0,0 +1,324 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter a,
18.syntaxhighlighter div,
19.syntaxhighlighter code,
20.syntaxhighlighter table,
21.syntaxhighlighter table td,
22.syntaxhighlighter table tr,
23.syntaxhighlighter table tbody,
24.syntaxhighlighter table thead,
25.syntaxhighlighter table caption,
26.syntaxhighlighter textarea {
27 -moz-border-radius: 0 0 0 0 !important;
28 -webkit-border-radius: 0 0 0 0 !important;
29 background: none !important;
30 border: 0 !important;
31 bottom: auto !important;
32 float: none !important;
33 height: auto !important;
34 left: auto !important;
35 line-height: 1.1em !important;
36 margin: 0 !important;
37 outline: 0 !important;
38 overflow: visible !important;
39 padding: 0 !important;
40 position: static !important;
41 right: auto !important;
42 text-align: left !important;
43 top: auto !important;
44 vertical-align: baseline !important;
45 width: auto !important;
46 box-sizing: content-box !important;
47 font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
48 font-weight: normal !important;
49 font-style: normal !important;
50 font-size: 1em !important;
51 min-height: inherit !important;
52 min-height: auto !important;
53}
54
55.syntaxhighlighter {
56 width: 100% !important;
57 margin: 1em 0 1em 0 !important;
58 position: relative !important;
59 overflow: auto !important;
60 font-size: 1em !important;
61}
62.syntaxhighlighter.source {
63 overflow: hidden !important;
64}
65.syntaxhighlighter .bold {
66 font-weight: bold !important;
67}
68.syntaxhighlighter .italic {
69 font-style: italic !important;
70}
71.syntaxhighlighter .line {
72 white-space: pre !important;
73}
74.syntaxhighlighter table {
75 width: 100% !important;
76}
77.syntaxhighlighter table caption {
78 text-align: left !important;
79 padding: .5em 0 0.5em 1em !important;
80}
81.syntaxhighlighter table td.code {
82 width: 100% !important;
83}
84.syntaxhighlighter table td.code .container {
85 position: relative !important;
86}
87.syntaxhighlighter table td.code .container textarea {
88 box-sizing: border-box !important;
89 position: absolute !important;
90 left: 0 !important;
91 top: 0 !important;
92 width: 100% !important;
93 height: 100% !important;
94 border: none !important;
95 background: white !important;
96 padding-left: 1em !important;
97 overflow: hidden !important;
98 white-space: pre !important;
99}
100.syntaxhighlighter table td.gutter .line {
101 text-align: right !important;
102 padding: 0 0.5em 0 1em !important;
103}
104.syntaxhighlighter table td.code .line {
105 padding: 0 1em !important;
106}
107.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
108 padding-left: 0em !important;
109}
110.syntaxhighlighter.show {
111 display: block !important;
112}
113.syntaxhighlighter.collapsed table {
114 display: none !important;
115}
116.syntaxhighlighter.collapsed .toolbar {
117 padding: 0.1em 0.8em 0em 0.8em !important;
118 font-size: 1em !important;
119 position: static !important;
120 width: auto !important;
121 height: auto !important;
122}
123.syntaxhighlighter.collapsed .toolbar span {
124 display: inline !important;
125 margin-right: 1em !important;
126}
127.syntaxhighlighter.collapsed .toolbar span a {
128 padding: 0 !important;
129 display: none !important;
130}
131.syntaxhighlighter.collapsed .toolbar span a.expandSource {
132 display: inline !important;
133}
134.syntaxhighlighter .toolbar {
135 position: absolute !important;
136 right: 1px !important;
137 top: 1px !important;
138 width: 11px !important;
139 height: 11px !important;
140 font-size: 10px !important;
141 z-index: 10 !important;
142}
143.syntaxhighlighter .toolbar span.title {
144 display: inline !important;
145}
146.syntaxhighlighter .toolbar a {
147 display: block !important;
148 text-align: center !important;
149 text-decoration: none !important;
150 padding-top: 1px !important;
151}
152.syntaxhighlighter .toolbar a.expandSource {
153 display: none !important;
154}
155.syntaxhighlighter.ie {
156 font-size: .9em !important;
157 padding: 1px 0 1px 0 !important;
158}
159.syntaxhighlighter.ie .toolbar {
160 line-height: 8px !important;
161}
162.syntaxhighlighter.ie .toolbar a {
163 padding-top: 0px !important;
164}
165.syntaxhighlighter.printing .line.alt1 .content,
166.syntaxhighlighter.printing .line.alt2 .content,
167.syntaxhighlighter.printing .line.highlighted .number,
168.syntaxhighlighter.printing .line.highlighted.alt1 .content,
169.syntaxhighlighter.printing .line.highlighted.alt2 .content {
170 background: none !important;
171}
172.syntaxhighlighter.printing .line .number {
173 color: #bbbbbb !important;
174}
175.syntaxhighlighter.printing .line .content {
176 color: black !important;
177}
178.syntaxhighlighter.printing .toolbar {
179 display: none !important;
180}
181.syntaxhighlighter.printing a {
182 text-decoration: none !important;
183}
184.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
185 color: black !important;
186}
187.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
188 color: #008200 !important;
189}
190.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
191 color: blue !important;
192}
193.syntaxhighlighter.printing .keyword {
194 color: #006699 !important;
195 font-weight: bold !important;
196}
197.syntaxhighlighter.printing .preprocessor {
198 color: gray !important;
199}
200.syntaxhighlighter.printing .variable {
201 color: #aa7700 !important;
202}
203.syntaxhighlighter.printing .value {
204 color: #009900 !important;
205}
206.syntaxhighlighter.printing .functions {
207 color: #ff1493 !important;
208}
209.syntaxhighlighter.printing .constants {
210 color: #0066cc !important;
211}
212.syntaxhighlighter.printing .script {
213 font-weight: bold !important;
214}
215.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
216 color: gray !important;
217}
218.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
219 color: #ff1493 !important;
220}
221.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
222 color: red !important;
223}
224.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
225 color: black !important;
226}
227
228.syntaxhighlighter {
229 background-color: #1b2426 !important;
230}
231.syntaxhighlighter .line.alt1 {
232 background-color: #1b2426 !important;
233}
234.syntaxhighlighter .line.alt2 {
235 background-color: #1b2426 !important;
236}
237.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
238 background-color: #323e41 !important;
239}
240.syntaxhighlighter .line.highlighted.number {
241 color: #b9bdb6 !important;
242}
243.syntaxhighlighter table caption {
244 color: #b9bdb6 !important;
245}
246.syntaxhighlighter .gutter {
247 color: #afafaf !important;
248}
249.syntaxhighlighter .gutter .line {
250 border-right: 3px solid #435a5f !important;
251}
252.syntaxhighlighter .gutter .line.highlighted {
253 background-color: #435a5f !important;
254 color: #1b2426 !important;
255}
256.syntaxhighlighter.printing .line .content {
257 border: none !important;
258}
259.syntaxhighlighter.collapsed {
260 overflow: visible !important;
261}
262.syntaxhighlighter.collapsed .toolbar {
263 color: #5ba1cf !important;
264 background: black !important;
265 border: 1px solid #435a5f !important;
266}
267.syntaxhighlighter.collapsed .toolbar a {
268 color: #5ba1cf !important;
269}
270.syntaxhighlighter.collapsed .toolbar a:hover {
271 color: #5ce638 !important;
272}
273.syntaxhighlighter .toolbar {
274 color: white !important;
275 background: #435a5f !important;
276 border: none !important;
277}
278.syntaxhighlighter .toolbar a {
279 color: white !important;
280}
281.syntaxhighlighter .toolbar a:hover {
282 color: #e0e8ff !important;
283}
284.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
285 color: #b9bdb6 !important;
286}
287.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
288 color: #878a85 !important;
289}
290.syntaxhighlighter .string, .syntaxhighlighter .string a {
291 color: #5ce638 !important;
292}
293.syntaxhighlighter .keyword {
294 color: #5ba1cf !important;
295}
296.syntaxhighlighter .preprocessor {
297 color: #435a5f !important;
298}
299.syntaxhighlighter .variable {
300 color: #ffaa3e !important;
301}
302.syntaxhighlighter .value {
303 color: #009900 !important;
304}
305.syntaxhighlighter .functions {
306 color: #ffaa3e !important;
307}
308.syntaxhighlighter .constants {
309 color: #e0e8ff !important;
310}
311.syntaxhighlighter .script {
312 font-weight: bold !important;
313 color: #5ba1cf !important;
314 background-color: none !important;
315}
316.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
317 color: #e0e8ff !important;
318}
319.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
320 color: white !important;
321}
322.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
323 color: #ffaa3e !important;
324}
diff --git a/Blocks/syntax/styles/shThemeDefault.css b/Blocks/syntax/styles/shThemeDefault.css
new file mode 100644
index 0000000..1365411
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeDefault.css
@@ -0,0 +1,117 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: white !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: white !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: white !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #e0e0e0 !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: black !important;
31}
32.syntaxhighlighter table caption {
33 color: black !important;
34}
35.syntaxhighlighter .gutter {
36 color: #afafaf !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #6ce26c !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #6ce26c !important;
43 color: white !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: blue !important;
53 background: white !important;
54 border: 1px solid #6ce26c !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: blue !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: red !important;
61}
62.syntaxhighlighter .toolbar {
63 color: white !important;
64 background: #6ce26c !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: white !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: black !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: black !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #008200 !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: blue !important;
81}
82.syntaxhighlighter .keyword {
83 color: #006699 !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: gray !important;
87}
88.syntaxhighlighter .variable {
89 color: #aa7700 !important;
90}
91.syntaxhighlighter .value {
92 color: #009900 !important;
93}
94.syntaxhighlighter .functions {
95 color: #ff1493 !important;
96}
97.syntaxhighlighter .constants {
98 color: #0066cc !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: #006699 !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: gray !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: #ff1493 !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: red !important;
113}
114
115.syntaxhighlighter .keyword {
116 font-weight: bold !important;
117}
diff --git a/Blocks/syntax/styles/shThemeDjango.css b/Blocks/syntax/styles/shThemeDjango.css
new file mode 100644
index 0000000..d8b4313
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeDjango.css
@@ -0,0 +1,120 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: #0a2b1d !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: #0a2b1d !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: #0a2b1d !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #233729 !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: white !important;
31}
32.syntaxhighlighter table caption {
33 color: #f8f8f8 !important;
34}
35.syntaxhighlighter .gutter {
36 color: #497958 !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #41a83e !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #41a83e !important;
43 color: #0a2b1d !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: #96dd3b !important;
53 background: black !important;
54 border: 1px solid #41a83e !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: #96dd3b !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: white !important;
61}
62.syntaxhighlighter .toolbar {
63 color: white !important;
64 background: #41a83e !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: white !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: #ffe862 !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: #f8f8f8 !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #336442 !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: #9df39f !important;
81}
82.syntaxhighlighter .keyword {
83 color: #96dd3b !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: #91bb9e !important;
87}
88.syntaxhighlighter .variable {
89 color: #ffaa3e !important;
90}
91.syntaxhighlighter .value {
92 color: #f7e741 !important;
93}
94.syntaxhighlighter .functions {
95 color: #ffaa3e !important;
96}
97.syntaxhighlighter .constants {
98 color: #e0e8ff !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: #96dd3b !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: #eb939a !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: #91bb9e !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: #edef7d !important;
113}
114
115.syntaxhighlighter .comments {
116 font-style: italic !important;
117}
118.syntaxhighlighter .keyword {
119 font-weight: bold !important;
120}
diff --git a/Blocks/syntax/styles/shThemeEclipse.css b/Blocks/syntax/styles/shThemeEclipse.css
new file mode 100644
index 0000000..77377d9
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeEclipse.css
@@ -0,0 +1,128 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: white !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: white !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: white !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #c3defe !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: white !important;
31}
32.syntaxhighlighter table caption {
33 color: black !important;
34}
35.syntaxhighlighter .gutter {
36 color: #787878 !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #d4d0c8 !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #d4d0c8 !important;
43 color: white !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: #3f5fbf !important;
53 background: white !important;
54 border: 1px solid #d4d0c8 !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: #3f5fbf !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: #aa7700 !important;
61}
62.syntaxhighlighter .toolbar {
63 color: #a0a0a0 !important;
64 background: #d4d0c8 !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: #a0a0a0 !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: red !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: black !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #3f5fbf !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: #2a00ff !important;
81}
82.syntaxhighlighter .keyword {
83 color: #7f0055 !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: #646464 !important;
87}
88.syntaxhighlighter .variable {
89 color: #aa7700 !important;
90}
91.syntaxhighlighter .value {
92 color: #009900 !important;
93}
94.syntaxhighlighter .functions {
95 color: #ff1493 !important;
96}
97.syntaxhighlighter .constants {
98 color: #0066cc !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: #7f0055 !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: gray !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: #ff1493 !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: red !important;
113}
114
115.syntaxhighlighter .keyword {
116 font-weight: bold !important;
117}
118.syntaxhighlighter .xml .keyword {
119 color: #3f7f7f !important;
120 font-weight: normal !important;
121}
122.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a {
123 color: #7f007f !important;
124}
125.syntaxhighlighter .xml .string {
126 font-style: italic !important;
127 color: #2a00ff !important;
128}
diff --git a/Blocks/syntax/styles/shThemeEmacs.css b/Blocks/syntax/styles/shThemeEmacs.css
new file mode 100644
index 0000000..dae5053
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeEmacs.css
@@ -0,0 +1,113 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: black !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: black !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: black !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #2a3133 !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: white !important;
31}
32.syntaxhighlighter table caption {
33 color: #d3d3d3 !important;
34}
35.syntaxhighlighter .gutter {
36 color: #d3d3d3 !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #990000 !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #990000 !important;
43 color: black !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: #ebdb8d !important;
53 background: black !important;
54 border: 1px solid #990000 !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: #ebdb8d !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: #ff7d27 !important;
61}
62.syntaxhighlighter .toolbar {
63 color: white !important;
64 background: #990000 !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: white !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: #9ccff4 !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: #d3d3d3 !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #ff7d27 !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: #ff9e7b !important;
81}
82.syntaxhighlighter .keyword {
83 color: aqua !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: #aec4de !important;
87}
88.syntaxhighlighter .variable {
89 color: #ffaa3e !important;
90}
91.syntaxhighlighter .value {
92 color: #009900 !important;
93}
94.syntaxhighlighter .functions {
95 color: #81cef9 !important;
96}
97.syntaxhighlighter .constants {
98 color: #ff9e7b !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: aqua !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: #ebdb8d !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: #ff7d27 !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: #aec4de !important;
113}
diff --git a/Blocks/syntax/styles/shThemeFadeToGrey.css b/Blocks/syntax/styles/shThemeFadeToGrey.css
new file mode 100644
index 0000000..8fbd871
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeFadeToGrey.css
@@ -0,0 +1,117 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: #121212 !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: #121212 !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: #121212 !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #2c2c29 !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: white !important;
31}
32.syntaxhighlighter table caption {
33 color: white !important;
34}
35.syntaxhighlighter .gutter {
36 color: #afafaf !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #3185b9 !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #3185b9 !important;
43 color: #121212 !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: #3185b9 !important;
53 background: black !important;
54 border: 1px solid #3185b9 !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: #3185b9 !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: #d01d33 !important;
61}
62.syntaxhighlighter .toolbar {
63 color: white !important;
64 background: #3185b9 !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: white !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: #96daff !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: white !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #696854 !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: #e3e658 !important;
81}
82.syntaxhighlighter .keyword {
83 color: #d01d33 !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: #435a5f !important;
87}
88.syntaxhighlighter .variable {
89 color: #898989 !important;
90}
91.syntaxhighlighter .value {
92 color: #009900 !important;
93}
94.syntaxhighlighter .functions {
95 color: #aaaaaa !important;
96}
97.syntaxhighlighter .constants {
98 color: #96daff !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: #d01d33 !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: #ffc074 !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: #4a8cdb !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: #96daff !important;
113}
114
115.syntaxhighlighter .functions {
116 font-weight: bold !important;
117}
diff --git a/Blocks/syntax/styles/shThemeMDUltra.css b/Blocks/syntax/styles/shThemeMDUltra.css
new file mode 100644
index 0000000..f4db39c
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeMDUltra.css
@@ -0,0 +1,113 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: #222222 !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: #222222 !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: #222222 !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #253e5a !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: white !important;
31}
32.syntaxhighlighter table caption {
33 color: lime !important;
34}
35.syntaxhighlighter .gutter {
36 color: #38566f !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #435a5f !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #435a5f !important;
43 color: #222222 !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: #428bdd !important;
53 background: black !important;
54 border: 1px solid #435a5f !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: #428bdd !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: lime !important;
61}
62.syntaxhighlighter .toolbar {
63 color: #aaaaff !important;
64 background: #435a5f !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: #aaaaff !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: #9ccff4 !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: lime !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #428bdd !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: lime !important;
81}
82.syntaxhighlighter .keyword {
83 color: #aaaaff !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: #8aa6c1 !important;
87}
88.syntaxhighlighter .variable {
89 color: aqua !important;
90}
91.syntaxhighlighter .value {
92 color: #f7e741 !important;
93}
94.syntaxhighlighter .functions {
95 color: #ff8000 !important;
96}
97.syntaxhighlighter .constants {
98 color: yellow !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: #aaaaff !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: red !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: yellow !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: #ffaa3e !important;
113}
diff --git a/Blocks/syntax/styles/shThemeMidnight.css b/Blocks/syntax/styles/shThemeMidnight.css
new file mode 100644
index 0000000..c49563c
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeMidnight.css
@@ -0,0 +1,113 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: #0f192a !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: #0f192a !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: #0f192a !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #253e5a !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: #38566f !important;
31}
32.syntaxhighlighter table caption {
33 color: #d1edff !important;
34}
35.syntaxhighlighter .gutter {
36 color: #afafaf !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #435a5f !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #435a5f !important;
43 color: #0f192a !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: #428bdd !important;
53 background: black !important;
54 border: 1px solid #435a5f !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: #428bdd !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: #1dc116 !important;
61}
62.syntaxhighlighter .toolbar {
63 color: #d1edff !important;
64 background: #435a5f !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: #d1edff !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: #8aa6c1 !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: #d1edff !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #428bdd !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: #1dc116 !important;
81}
82.syntaxhighlighter .keyword {
83 color: #b43d3d !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: #8aa6c1 !important;
87}
88.syntaxhighlighter .variable {
89 color: #ffaa3e !important;
90}
91.syntaxhighlighter .value {
92 color: #f7e741 !important;
93}
94.syntaxhighlighter .functions {
95 color: #ffaa3e !important;
96}
97.syntaxhighlighter .constants {
98 color: #e0e8ff !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: #b43d3d !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: #f8bb00 !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: white !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: #ffaa3e !important;
113}
diff --git a/Blocks/syntax/styles/shThemeRDark.css b/Blocks/syntax/styles/shThemeRDark.css
new file mode 100644
index 0000000..6305a10
--- /dev/null
+++ b/Blocks/syntax/styles/shThemeRDark.css
@@ -0,0 +1,113 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17.syntaxhighlighter {
18 background-color: #1b2426 !important;
19}
20.syntaxhighlighter .line.alt1 {
21 background-color: #1b2426 !important;
22}
23.syntaxhighlighter .line.alt2 {
24 background-color: #1b2426 !important;
25}
26.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
27 background-color: #323e41 !important;
28}
29.syntaxhighlighter .line.highlighted.number {
30 color: #b9bdb6 !important;
31}
32.syntaxhighlighter table caption {
33 color: #b9bdb6 !important;
34}
35.syntaxhighlighter .gutter {
36 color: #afafaf !important;
37}
38.syntaxhighlighter .gutter .line {
39 border-right: 3px solid #435a5f !important;
40}
41.syntaxhighlighter .gutter .line.highlighted {
42 background-color: #435a5f !important;
43 color: #1b2426 !important;
44}
45.syntaxhighlighter.printing .line .content {
46 border: none !important;
47}
48.syntaxhighlighter.collapsed {
49 overflow: visible !important;
50}
51.syntaxhighlighter.collapsed .toolbar {
52 color: #5ba1cf !important;
53 background: black !important;
54 border: 1px solid #435a5f !important;
55}
56.syntaxhighlighter.collapsed .toolbar a {
57 color: #5ba1cf !important;
58}
59.syntaxhighlighter.collapsed .toolbar a:hover {
60 color: #5ce638 !important;
61}
62.syntaxhighlighter .toolbar {
63 color: white !important;
64 background: #435a5f !important;
65 border: none !important;
66}
67.syntaxhighlighter .toolbar a {
68 color: white !important;
69}
70.syntaxhighlighter .toolbar a:hover {
71 color: #e0e8ff !important;
72}
73.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
74 color: #b9bdb6 !important;
75}
76.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
77 color: #878a85 !important;
78}
79.syntaxhighlighter .string, .syntaxhighlighter .string a {
80 color: #5ce638 !important;
81}
82.syntaxhighlighter .keyword {
83 color: #5ba1cf !important;
84}
85.syntaxhighlighter .preprocessor {
86 color: #435a5f !important;
87}
88.syntaxhighlighter .variable {
89 color: #ffaa3e !important;
90}
91.syntaxhighlighter .value {
92 color: #009900 !important;
93}
94.syntaxhighlighter .functions {
95 color: #ffaa3e !important;
96}
97.syntaxhighlighter .constants {
98 color: #e0e8ff !important;
99}
100.syntaxhighlighter .script {
101 font-weight: bold !important;
102 color: #5ba1cf !important;
103 background-color: none !important;
104}
105.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
106 color: #e0e8ff !important;
107}
108.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
109 color: white !important;
110}
111.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
112 color: #ffaa3e !important;
113}
diff --git a/Blocks/syntax/tests/.rvmrc b/Blocks/syntax/tests/.rvmrc
new file mode 100644
index 0000000..8cb2ee3
--- /dev/null
+++ b/Blocks/syntax/tests/.rvmrc
@@ -0,0 +1 @@
rvm 1.8.7-p249@copydeca \ No newline at end of file
diff --git a/Blocks/syntax/tests/brushes/sass.html b/Blocks/syntax/tests/brushes/sass.html
new file mode 100644
index 0000000..f415684
--- /dev/null
+++ b/Blocks/syntax/tests/brushes/sass.html
@@ -0,0 +1,204 @@
1<script class="brush: sass;" type="syntaxhighlighter">
2@mixin round_corners_custom($top, $right, $bottom, $left) {
3 -moz-border-radius: $top $right $bottom $left !important;
4 -webkit-border-radius: $top $right $bottom $left !important;
5}
6
7@mixin round_corners($radius) {
8 @include round_corners_custom($radius, $radius, $radius, $radius);
9}
10
11.syntaxhighlighter {
12 a,
13 div,
14 code,
15 table,
16 table td,
17 table tr,
18 table tbody,
19 table thead,
20 table caption,
21 textarea {
22 @include round_corners(0);
23
24 background: none !important;
25 border: 0 !important;
26 bottom: auto !important;
27 float: none !important;
28 height: auto !important;
29 left: auto !important;
30 line-height: 1.1em !important;
31 margin: 0 !important;
32 outline: 0 !important;
33 overflow: visible !important;
34 padding: 0 !important;
35 position: static !important;
36 right: auto !important;
37 text-align: left !important;
38 top: auto !important;
39 vertical-align: baseline !important;
40 width: auto !important;
41 font: {
42 family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
43 weight: normal !important;
44 style: normal !important;
45 size: 1em !important;
46 }
47 min: {
48 // For IE8, FF & WebKit
49 height: inherit !important;
50 // For IE7
51 height: auto !important;
52 }
53 }
54}
55
56.syntaxhighlighter {
57 width: 100% !important;
58 margin: 1em 0 1em 0 !important;
59
60 position: relative !important;
61 overflow: auto !important;
62 font-size: 1em !important;
63
64 &.source { overflow: hidden !important; }
65
66 // set up bold and italic
67 .bold { font-weight: bold !important; }
68 .italic { font-style: italic !important; }
69
70 .line { white-space: pre !important; }
71
72 // main table and columns
73 table {
74 width: 100% !important;
75 caption {
76 text-align: left !important;
77 padding: .5em 0 0.5em 1em !important;
78 }
79
80 td.code {
81 width: 100% !important;
82
83 .container {
84 position: relative !important;
85
86 textarea {
87 position: absolute !important;
88 left: 0 !important;
89 top: 0 !important;
90 width: 100% !important;
91 height: 120% !important;
92 border: none !important;
93 background: white !important;
94 padding-left: 1em !important;
95 overflow: hidden !important;
96 white-space: pre !important;
97 }
98 }
99 }
100
101 // middle spacing between line numbers and lines
102 td.gutter .line {
103 text-align: right !important;
104 padding: 0 0.5em 0 1em !important;
105 }
106
107 td.code .line {
108 padding: 0 1em !important;
109 }
110 }
111
112 &.nogutter {
113 td.code {
114 .container textarea, .line { padding-left: 0em !important; }
115 }
116 }
117
118 &.show { display: block !important; }
119
120 // Adjust some properties when collapsed
121 &.collapsed {
122 table { display: none !important; }
123
124 .toolbar {
125 padding: 0.1em 0.8em 0em 0.8em !important;
126 font-size: 1em !important;
127 position: static !important;
128 width: auto !important;
129 height: auto !important;
130
131 span {
132 display: inline !important;
133 margin-right: 1em !important;
134
135 a {
136 padding: 0 !important;
137 display: none !important;
138 &.expandSource, &.help { display: inline !important; }
139 }
140 }
141 }
142 }
143
144 // Styles for the toolbar
145 .toolbar {
146 position: absolute !important;
147 right: 1px !important;
148 top: 1px !important;
149 width: 11px !important;
150 height: 11px !important;
151 font-size: 10px !important;
152 z-index: 10 !important;
153
154 span.title { display: inline !important; }
155
156 a {
157 display: block !important;
158 text-align: center !important;
159 text-decoration: none !important;
160 padding-top: 1px !important;
161
162 &.expandSource { display: none !important; }
163 }
164 }
165
166 // Print view.
167 // Colors are based on the default theme without background.
168 &.printing {
169 .line.alt1 .content,
170 .line.alt2 .content,
171 .line.highlighted .number,
172 .line.highlighted.alt1 .content,
173 .line.highlighted.alt2 .content { background: none !important; }
174
175 // Gutter line numbers
176 .line {
177 .number { color: #bbbbbb !important; }
178 // Add border to the lines
179 .content { color: black !important; }
180 }
181
182 // Toolbar when visible
183 .toolbar { display: none !important; }
184 a { text-decoration: none !important; }
185 .plain, .plain a { color: black !important; }
186 .comments, .comments a { color: #008200 !important; }
187 .string, .string a { color: blue !important; }
188 .keyword {
189 color: #006699 !important;
190 font-weight: bold !important;
191 }
192 .preprocessor { color: gray !important; }
193 .variable { color: #aa7700 !important; }
194 .value { color: #009900 !important; }
195 .functions { color: #ff1493 !important; }
196 .constants { color: #0066cc !important; }
197 .script { font-weight: bold !important; }
198 .color1, .color1 a { color: gray !important; }
199 .color2, .color2 a { color: #ff1493 !important; }
200 .color3, .color3 a { color: red !important; }
201 .break, .break a { color: black !important; }
202 }
203}
204</script> \ No newline at end of file
diff --git a/Blocks/syntax/tests/brushes_tests.html b/Blocks/syntax/tests/brushes_tests.html
new file mode 100644
index 0000000..cf60a98
--- /dev/null
+++ b/Blocks/syntax/tests/brushes_tests.html
@@ -0,0 +1,143 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3<head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5 <title>SyntaxHighlighter Brushes Tests</title>
6 <script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
7
8 <!-- SyntaxHighlighter -->
9 <script type="text/javascript" src="/sh/scripts/XRegExp.js"></script> <!-- XRegExp is bundled with the final shCore.js during build -->
10 <script type="text/javascript" src="/sh/scripts/shCore.js"></script>
11 <script type="text/javascript" src="/sh/scripts/shAutoloader.js"></script>
12 <script type="text/javascript" src="/sh/scripts/shBrushAppleScript.js"></script>
13 <script type="text/javascript" src="/sh/scripts/shBrushAS3.js"></script>
14 <script type="text/javascript" src="/sh/scripts/shBrushBash.js"></script>
15 <script type="text/javascript" src="/sh/scripts/shBrushColdFusion.js"></script>
16 <script type="text/javascript" src="/sh/scripts/shBrushCpp.js"></script>
17 <script type="text/javascript" src="/sh/scripts/shBrushCSharp.js"></script>
18 <script type="text/javascript" src="/sh/scripts/shBrushCss.js"></script>
19 <script type="text/javascript" src="/sh/scripts/shBrushDelphi.js"></script>
20 <script type="text/javascript" src="/sh/scripts/shBrushDiff.js"></script>
21 <script type="text/javascript" src="/sh/scripts/shBrushErlang.js"></script>
22 <script type="text/javascript" src="/sh/scripts/shBrushGroovy.js"></script>
23 <script type="text/javascript" src="/sh/scripts/shBrushJava.js"></script>
24 <script type="text/javascript" src="/sh/scripts/shBrushJavaFx.js"></script>
25 <script type="text/javascript" src="/sh/scripts/shBrushJScript.js"></script>
26 <script type="text/javascript" src="/sh/scripts/shBrushPerl.js"></script>
27 <script type="text/javascript" src="/sh/scripts/shBrushPhp.js"></script>
28 <script type="text/javascript" src="/sh/scripts/shBrushPlain.js"></script>
29 <script type="text/javascript" src="/sh/scripts/shBrushPowerShell.js"></script>
30 <script type="text/javascript" src="/sh/scripts/shBrushPython.js"></script>
31 <script type="text/javascript" src="/sh/scripts/shBrushRuby.js"></script>
32 <script type="text/javascript" src="/sh/scripts/shBrushSass.js"></script>
33 <script type="text/javascript" src="/sh/scripts/shBrushScala.js"></script>
34 <script type="text/javascript" src="/sh/scripts/shBrushSql.js"></script>
35 <script type="text/javascript" src="/sh/scripts/shBrushVb.js"></script>
36 <script type="text/javascript" src="/sh/scripts/shBrushXml.js"></script>
37
38 <link type="text/css" rel="stylesheet" href="/sh/styles/shCoreDefault.css"/>
39</head>
40
41<body>
42
43<div id="output"></div>
44
45<style>
46body {
47 background: white;
48 font-family: Helvetica;
49}
50
51.test-wrap {
52 width: 100%;
53 height: 800px;
54 overflow: auto;
55 border: none;
56}
57</style>
58
59<script type="text/javascript">
60var brushes = [
61 'AS3',
62 'AppleScript',
63 'Bash',
64 'CSharp',
65 'ColdFusion',
66 'Cpp',
67 'Css',
68 'Delphi',
69 'Diff',
70 'Erlang',
71 'Groovy',
72 'JScript',
73 'Java',
74 'JavaFX',
75 'Perl',
76 'Php',
77 'Plain',
78 'PowerShell',
79 'Python',
80 'Ruby',
81 'Sass',
82 'Scala',
83 'Sql',
84 'Vb',
85 'Xml'
86 ];
87
88$(document).ready(function()
89{
90 var html = '';
91
92 $.each(brushes, function(index)
93 {
94 var name = this;
95
96 html += ''
97 + '<div class="test-wrap">'
98 + '<h1>'
99 + '<a href="#theme' + (index + 1) + '">next</a> '
100 + '<a name="theme' + index + '">'
101 + name
102 + '</a>'
103 + '</h1>'
104 ;
105
106 $.ajax({
107 url: 'brushes/' + name.toLowerCase() + '.html',
108 type: 'GET',
109 dataType: 'text',
110 async: false,
111 success: function(data)
112 {
113 html += data;
114 },
115 error: function()
116 {
117 html += '<p>Not found...</p>';
118 }
119 });
120
121 html += '</div>\n';
122
123 if (index % 2 != 0)
124 html += '<div style="clear:both"></div>\n';
125 });
126
127 $('#output')[0].innerHTML = html;
128 $('#output a[name]:first').attr('name', 'top');
129 $('#output a[href]:last').attr('href', '#top').html('top');
130
131 SyntaxHighlighter.highlight();
132});
133</script>
134
135
136<!-- jinwei.me Baidu tongji analytics -->
137<script type="text/javascript">
138var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
139document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
140</script>
141
142</body>
143</html>
diff --git a/Blocks/syntax/tests/cases/001_basic.html b/Blocks/syntax/tests/cases/001_basic.html
new file mode 100644
index 0000000..1d57334
--- /dev/null
+++ b/Blocks/syntax/tests/cases/001_basic.html
@@ -0,0 +1,42 @@
1<pre id="sh_001_basic" class="brush: js;" title="Title/caption should render">
2 /**
3 * multiline comment
4 */
5
6 text
7
8 // single line comment
9
10 text
11
12 "string" text 'string' text "string"
13 "string with \" escape" text 'string with \' escape' text "string with \" escape"
14
15 var code = '\
16 function helloWorld()\
17 {\
18 // this is great!\
19 for(var i = 0; i &lt;= 1; i++)\
20 alert("yay");\
21 }\
22 ';
23</pre>
24
25<script type="text/javascript">
26queue(function()
27{
28 var $sh;
29
30 module('001_basic');
31
32 test('basic html check of default elements', function()
33 {
34 $sh = $('#sh_001_basic');
35 ok_sh($sh);
36 ok_toolbar($sh);
37 ok_caption($sh, 'Title/caption should render');
38 ok_gutter($sh);
39 ok_code($sh);
40 });
41});
42</script>
diff --git a/Blocks/syntax/tests/cases/002_brushes.html b/Blocks/syntax/tests/cases/002_brushes.html
new file mode 100644
index 0000000..e9c64e2
--- /dev/null
+++ b/Blocks/syntax/tests/cases/002_brushes.html
@@ -0,0 +1,50 @@
1<div id="sh_002_brushes">
2 <pre class="brush: applescript;">test</pre>
3 <pre class="brush: as3;">test</pre>
4 <pre class="brush: bash;">test</pre>
5 <pre class="brush: cf;">test</pre>
6 <pre class="brush: cpp;">test</pre>
7 <pre class="brush: csharp;">test</pre>
8 <pre class="brush: css;">test</pre>
9 <pre class="brush: delphi;">test</pre>
10 <pre class="brush: diff;">test</pre>
11 <pre class="brush: erlang;">test</pre>
12 <pre class="brush: groovy;">test</pre>
13 <pre class="brush: java;">test</pre>
14 <pre class="brush: javafx;">test</pre>
15 <pre class="brush: jscript;">test</pre>
16 <pre class="brush: perl;">test</pre>
17 <pre class="brush: php;">test</pre>
18 <pre class="brush: plain;">test</pre>
19 <pre class="brush: powershell;">test</pre>
20 <pre class="brush: python;">test</pre>
21 <pre class="brush: ruby;">test</pre>
22 <pre class="brush: sass;">test</pre>
23 <pre class="brush: scala;">test</pre>
24 <pre class="brush: sql;">test</pre>
25 <pre class="brush: vb;">test</pre>
26 <pre class="brush: xml;">test</pre>
27</div>
28
29<script type="text/javascript">
30queue(function()
31{
32 var $sh;
33
34 module('002_brushes');
35
36 test('check that all brushes loaded and rendered', function()
37 {
38 $sh = $('#sh_002_brushes');
39
40 $sh.find('> div > .syntaxhighlighter').each(function()
41 {
42 var $sh = $(this).parent();
43 ok_sh($sh);
44 ok_sh($sh);
45 ok_toolbar($sh);
46 ok_code($sh);
47 });
48 });
49});
50</script>
diff --git a/Blocks/syntax/tests/cases/003_script_tag.html b/Blocks/syntax/tests/cases/003_script_tag.html
new file mode 100644
index 0000000..9b44292
--- /dev/null
+++ b/Blocks/syntax/tests/cases/003_script_tag.html
@@ -0,0 +1,42 @@
1<div>
2<script id="sh_003_script_tag" type="syntaxhighlighter" class="brush: csharp" title="Title/caption should render"><![CDATA[
3 partial class Foo
4 {
5 function test()
6 {
7 yield return;
8 yield break;
9 }
10 }
11
12 function foo()
13 {
14 var vector:Vector.<Vector.<String>> = new Vector<Vector.String>>();
15
16 for (var i = 0; i < 10; i++)
17 {
18 /* comments */
19 }
20 }
21]]></script>
22</div>
23
24<script type="text/javascript">
25queue(function()
26{
27 var $sh;
28
29 module('003_script_tag');
30
31 test('basic html check of default elements', function()
32 {
33 $sh = $('#sh_003_script_tag');
34
35 ok_sh($sh);
36 ok_toolbar($sh);
37 ok_caption($sh, 'Title/caption should render');
38 ok_gutter($sh);
39 ok_code($sh);
40 });
41});
42</script>
diff --git a/Blocks/syntax/tests/cases/004_url_parsing.html b/Blocks/syntax/tests/cases/004_url_parsing.html
new file mode 100644
index 0000000..d489a66
--- /dev/null
+++ b/Blocks/syntax/tests/cases/004_url_parsing.html
@@ -0,0 +1,43 @@
1<pre id="sh_004_url_parsing" class="brush: as3;">
2/**
3 * Please see &lt;http://www.alexgorbatchev.come/?test=1&y=2&gt;
4 */
5var home = "http://www.alexgorbatchev.come/?test=1&y=2;test/1/2/3;";
6// &lt; http://www.gnu.org/licenses/?test=1&y=2 &gt;.
7
8// Test embedded URLs that terminate at a left angle bracket.
9// See bug #28: http://bitbucket.org/alexg/syntaxhighlighter/issue/28/
10"<location>http://www.example.com/song2.mp3</location>";
11</pre>
12
13<script type="text/javascript">
14queue(function()
15{
16 var $sh;
17
18 module('004_url_parsing');
19
20 test('check that urls are present', function()
21 {
22 $sh = $('#sh_004_url_parsing');
23
24 ok_sh($sh);
25 ok_toolbar($sh);
26 ok_code($sh);
27
28 var expected = [
29 'http://www.alexgorbatchev.come/?test=1&y=2',
30 'http://www.alexgorbatchev.come/?test=1&y=2;test/1/2/3;',
31 'http://www.gnu.org/licenses/?test=1&y=2',
32 'http://bitbucket.org/alexg/syntaxhighlighter/issue/28/',
33 'http://www.example.com/song2.mp3'
34 ];
35
36 $sh.find('td.code a').each(function(index)
37 {
38 equal($(this).attr('href'), expected[index], 'href');
39 equal($(this).text(), expected[index], 'text');
40 })
41 });
42});
43</script> \ No newline at end of file
diff --git a/Blocks/syntax/tests/cases/005_no_gutter.html b/Blocks/syntax/tests/cases/005_no_gutter.html
new file mode 100644
index 0000000..6e6b1be
--- /dev/null
+++ b/Blocks/syntax/tests/cases/005_no_gutter.html
@@ -0,0 +1,33 @@
1<pre id="sh_005_no_gutter" class="brush: java; gutter: false;">
2 public Image getImage(URL url, String name) {
3 try {
4 /*
5 Regular multiline comment.
6 */
7 return getImage(new URL(url, name));
8 } catch (MalformedURLException e) {
9 return null;
10 }
11 }
12</pre>
13
14<script type="text/javascript">
15queue(function()
16{
17 var $sh;
18
19 module('005_no_gutter');
20
21 test('check that there is no gutter', function()
22 {
23 $sh = $('#sh_005_no_gutter');
24
25 ok_sh($sh);
26 ok_toolbar($sh);
27 ok_code($sh);
28
29 ok($sh.find('> .syntaxhighlighter.nogutter').length == 1, '.nogutter present');
30 ok($sh.find('> .syntaxhighlighter > table > tbody > tr > .gutter').length == 0, 'Gutter not present');
31 });
32});
33</script>
diff --git a/Blocks/syntax/tests/cases/006_pad_line_numbers.html b/Blocks/syntax/tests/cases/006_pad_line_numbers.html
new file mode 100644
index 0000000..8ebdd55
--- /dev/null
+++ b/Blocks/syntax/tests/cases/006_pad_line_numbers.html
@@ -0,0 +1,39 @@
1<pre id="sh_006_pad_line_numbers" class="brush: java; pad-line-numbers: true">
2/**
3 * Returns an Image object that can then be painted on the screen.
4 * The url argument must specify an absolute {@link URL}. The name
5 * argument is a specifier that is relative to the url argument.
6 *
7 * @param url an absolute URL giving the base location of the image
8 * @param name the location of the image, relative to the url argument
9 * @return the image at the specified URL
10 * @see Image
11 */
12</pre>
13
14<script type="text/javascript">
15queue(function()
16{
17 var $sh;
18
19 module('006_pad_line_numbers');
20
21 test('check that line numbers are padded with zeroes', function()
22 {
23 $sh = $('#sh_006_pad_line_numbers');
24
25 ok_sh($sh);
26 ok_toolbar($sh);
27 ok_gutter($sh);
28 ok_code($sh);
29
30 $sh.find('.gutter > .line').each(function(index)
31 {
32 var text = $(this).text();
33
34 if (parseInt(text) < 10)
35 ok(text.charAt(0) == '0', 'Line ' + index + ' has leading zero: ' + text);
36 });
37 });
38});
39</script>
diff --git a/Blocks/syntax/tests/cases/007_collapse.html b/Blocks/syntax/tests/cases/007_collapse.html
new file mode 100644
index 0000000..2643bb5
--- /dev/null
+++ b/Blocks/syntax/tests/cases/007_collapse.html
@@ -0,0 +1,60 @@
1<pre id="sh_007_collapse_a" class="brush: groovy; collapse: true" title="This is a title for collapsed block">
2 /**
3 * Returns an Image object that can then be painted on the screen.
4 * The url argument must specify an absolute {@link URL}. The name
5 * argument is a specifier that is relative to the url argument.
6 *
7 * @param url an absolute URL giving the base location of the image
8 * @param name the location of the image, relative to the url argument
9 * @return the image at the specified URL
10 * @see Image
11 */
12</pre>
13
14<pre id="sh_007_collapse_b" class="brush: groovy; collapse: true">
15 /**
16 * Returns an Image object that can then be painted on the screen.
17 * The url argument must specify an absolute {@link URL}. The name
18 * argument is a specifier that is relative to the url argument.
19 *
20 * @param url an absolute URL giving the base location of the image
21 * @param name the location of the image, relative to the url argument
22 * @return the image at the specified URL
23 * @see Image
24 */
25</pre>
26
27<script type="text/javascript">
28queue(function()
29{
30 var $sh;
31
32 module('007_collapse');
33
34 test('collapsed block with title', function()
35 {
36 $sh = $('#sh_007_collapse_a');
37
38 ok_sh($sh);
39 ok_toolbar($sh);
40 ok_collapsed($sh);
41
42 var $title = $sh.find('.toolbar a.toolbar_item.command_expandSource');
43 ok($title.length == 1, 'Expand present');
44 equal($title.text(), 'This is a title for collapsed block', 'Expand text');
45 });
46
47 test('collapsed block without title', function()
48 {
49 $sh = $('#sh_007_collapse_b');
50
51 ok_sh($sh);
52 ok_toolbar($sh);
53 ok_collapsed($sh);
54
55 var $title = $sh.find('.toolbar a.toolbar_item.command_expandSource');
56 ok($title.length == 1, 'Expand present');
57 equal($title.text(), SyntaxHighlighter.config.strings.expandSource, 'Expand text');
58 });
59});
60</script>
diff --git a/Blocks/syntax/tests/cases/007_collapse_interaction.html b/Blocks/syntax/tests/cases/007_collapse_interaction.html
new file mode 100644
index 0000000..ea72046
--- /dev/null
+++ b/Blocks/syntax/tests/cases/007_collapse_interaction.html
@@ -0,0 +1,44 @@
1<script type="text/javascript">
2queue(function()
3{
4 var $sh;
5
6 module('007_collapse_interaction');
7
8 function clickA($a)
9 {
10 SyntaxHighlighter.toolbar.handler({
11 target: $a[0],
12 preventDefault: function() {}
13 });
14 };
15
16 test('expand collapsed block with title', function()
17 {
18 $sh = $('#sh_007_collapse_a');
19
20 ok_sh($sh);
21 ok_toolbar($sh);
22 ok_collapsed($sh);
23
24 var $a = $sh.find('.toolbar a.toolbar_item.command_expandSource');
25 clickA($a);
26 ok($a.not(':visible'), 'Expand not visible');
27 ok_code($sh);
28 });
29
30 test('expand collapsed block without title', function()
31 {
32 $sh = $('#sh_007_collapse_b');
33
34 ok_sh($sh);
35 ok_toolbar($sh);
36 ok_collapsed($sh);
37
38 var $a = $sh.find('.toolbar a.toolbar_item.command_expandSource');
39 clickA($a);
40 ok($a.not(':visible'), 'Expand not visible');
41 ok_code($sh);
42 });
43});
44</script>
diff --git a/Blocks/syntax/tests/cases/008_first_line.html b/Blocks/syntax/tests/cases/008_first_line.html
new file mode 100644
index 0000000..169dc38
--- /dev/null
+++ b/Blocks/syntax/tests/cases/008_first_line.html
@@ -0,0 +1,29 @@
1<pre id="sh_008_first_line" class="brush: java; first-line: 10">
2 partial class Foo
3 {
4 function test()
5 {
6 yield return;
7 }
8 }
9</pre>
10
11<script type="text/javascript">
12queue(function()
13{
14 var $sh;
15
16 module('008_first_line');
17
18 test('check the first line', function()
19 {
20 $sh = $('#sh_008_first_line');
21
22 ok_sh($sh);
23 ok_toolbar($sh);
24 ok_gutter($sh);
25 ok_code($sh);
26 equals($sh.find('.gutter .index0').text(), '10', 'First line');
27 });
28});
29</script>
diff --git a/Blocks/syntax/tests/cases/009_class_name.html b/Blocks/syntax/tests/cases/009_class_name.html
new file mode 100644
index 0000000..f2437d5
--- /dev/null
+++ b/Blocks/syntax/tests/cases/009_class_name.html
@@ -0,0 +1,32 @@
1<pre id="sh_009_class_name" class="brush: java; class-name: 'custom class here'">
2 public Image getImage(URL url, String name) {
3 try {
4 /*
5 Regular multiline comment.
6 */
7 return getImage(new URL(url, name));
8 } catch (MalformedURLException e) {
9 return null;
10 }
11 }
12</pre>
13
14<script type="text/javascript">
15queue(function()
16{
17 var $sh;
18
19 module('009_class_name');
20
21 test('check custom classes', function()
22 {
23 $sh = $('#sh_009_class_name');
24
25 ok_sh($sh);
26 ok_toolbar($sh);
27 ok_gutter($sh);
28 ok_code($sh);
29 ok($sh.find('.syntaxhighlighter').is('.custom.class.here'), 'Check custom classes');
30 });
31});
32</script>
diff --git a/Blocks/syntax/tests/cases/010_highlight.html b/Blocks/syntax/tests/cases/010_highlight.html
new file mode 100644
index 0000000..64b6613
--- /dev/null
+++ b/Blocks/syntax/tests/cases/010_highlight.html
@@ -0,0 +1,70 @@
1<pre id="sh_010_highlight_a" class="brush: groovy; highlight: 2">
2 public function validateStrongPassword(password:String):Boolean
3 {
4 if (password == null || password.length <= 0)
5 {
6 return false;
7 }
8
9 return STRONG_PASSWORD_PATTERN.test(password);
10 }
11</pre>
12<script id="sh_010_highlight_b" type="syntaxhighlighter" class="brush: as3; highlight: [2, 4, 12]"><![CDATA[
13 /**
14 * Checks a password and returns a value indicating whether the password is a "strong"
15 * password. The criteria for a strong password are:
16 *
17 * <ul>
18 * <li>Minimum 8 characters</li>
19 * <li>Maxmium 32 characters</li>
20 * <li>Contains at least one lowercase letter</li>
21 * <li>Contains at least one uppercase letter</li>
22 * <li>Contains at least one number or symbol character</li>
23 * </ul>
24 *
25 * @param password The password to check
26 *
27 * @return A value indicating whether the password is a strong password (<code>true</code>)
28 * or not (<code>false</code>).
29 */
30 public function validateStrongPassword(password:String):Boolean
31 {
32 if (password == null || password.length <= 0)
33 {
34 return false;
35 }
36
37 return STRONG_PASSWORD_PATTERN.test(password);
38 }
39]]></script>
40
41<script type="text/javascript">
42queue(function()
43{
44 var $sh;
45
46 module('010_highlight');
47
48 test('one highlighted line', function()
49 {
50 $sh = $('#sh_010_highlight_a');
51
52 ok_sh($sh);
53 ok_toolbar($sh);
54 ok_code($sh);
55 ok($sh.find('.gutter .number2').is('.highlighted'), 'Line 2 is highlighted');
56 });
57
58 test('multiple highlighted lines', function()
59 {
60 $sh = $('#sh_010_highlight_b');
61
62 ok_sh($sh);
63 ok_toolbar($sh);
64 ok_code($sh);
65 ok($sh.find('.gutter .number2').is('.highlighted'), 'Line 2 is highlighted');
66 ok($sh.find('.gutter .number4').is('.highlighted'), 'Line 4 is highlighted');
67 ok($sh.find('.gutter .number12').is('.highlighted'), 'Line 12 is highlighted');
68 });
69});
70</script>
diff --git a/Blocks/syntax/tests/cases/011_smart_tabs.html b/Blocks/syntax/tests/cases/011_smart_tabs.html
new file mode 100644
index 0000000..d6d62fc
--- /dev/null
+++ b/Blocks/syntax/tests/cases/011_smart_tabs.html
@@ -0,0 +1,98 @@
1<pre id="sh_011_smart_tabs_a" class="brush: plain;">
2 the words in this paragraph
3 should look like they are
4 evenly spaced between columns
5</pre>
6
7<pre id="sh_011_smart_tabs_b" class="brush: plain; tab-size: 8;">
8 the words in this paragraph
9 should look like they are
10 evenly spaced between columns
11</pre>
12
13<pre id="sh_011_smart_tabs_c" class="brush: plain; smart-tabs: false">
14 the words in this paragraph
15 should look out of whack
16 because smart tabs are disabled
17</pre>
18
19<script type="text/javascript">
20queue(function()
21{
22 var $sh;
23
24 module('011_smart_tabs');
25
26 var evenLines = [
27 'the words in this paragraph',
28 'should look like they are',
29 'evenly spaced between columns'
30 ],
31 unevenLines = [
32 'the words in this paragraph',
33 'should look out of whack',
34 'because smart tabs are disabled'
35 ]
36 ;
37
38 function fixSpaces(s)
39 {
40 s = encodeURIComponent(s).replace(/%C2%A0/g, '%20');
41 return unescape(s).replace(/\s+$/g, '');
42 };
43
44 test('default tab size is 4', function()
45 {
46 $sh = $('#sh_011_smart_tabs_a');
47
48 ok_sh($sh);
49 ok_toolbar($sh);
50 ok_code($sh);
51
52 $sh.find('.code .line').each(function(index)
53 {
54 var s1 = fixSpaces($(this).text()),
55 s2 = fixSpaces(evenLines[index])
56 ;
57
58 equal(s1, s2, 'Line ' + index);
59 });
60 });
61
62 test('tab size changed to 8', function()
63 {
64 $sh = $('#sh_011_smart_tabs_b');
65
66 ok_sh($sh);
67 ok_toolbar($sh);
68 ok_code($sh);
69
70 $sh.find('.code .line').each(function(index)
71 {
72 var s1 = fixSpaces($(this).text()),
73 s2 = fixSpaces(evenLines[index])
74 ;
75
76 equal(s1, s2, 'Line ' + index);
77 });
78 });
79
80 test('smart tabs are off', function()
81 {
82 $sh = $('#sh_011_smart_tabs_c');
83
84 ok_sh($sh);
85 ok_toolbar($sh);
86 ok_code($sh);
87
88 $sh.find('.code .line').each(function(index)
89 {
90 var s1 = fixSpaces($(this).text()),
91 s2 = fixSpaces(unevenLines[index])
92 ;
93
94 equal(s1, s2, 'Line ' + index);
95 });
96 });
97});
98</script>
diff --git a/Blocks/syntax/tests/cases/012_server_side.html b/Blocks/syntax/tests/cases/012_server_side.html
new file mode 100644
index 0000000..1bb4217
--- /dev/null
+++ b/Blocks/syntax/tests/cases/012_server_side.html
@@ -0,0 +1,35 @@
1<script id="sh_012_server_side_input" type="text/plain">
2function helloWorld()
3{
4 // this is great!
5 for(var i = 0; i <= 1; i++)
6 alert("yay");
7}
8</script>
9
10<div id="sh_012_server_side_output">
11</div>
12
13<script type="text/javascript">
14queue(function()
15{
16 var $sh;
17
18 module('012_server_side');
19
20 test('generate markup', function()
21 {
22 var brush = new SyntaxHighlighter.brushes.JScript(),
23 code = $('#sh_012_server_side_input').html()
24 ;
25
26 brush.init({ toolbar: false });
27 $sh = $('#sh_012_server_side_output');
28 $sh.html(brush.getHtml(code));
29
30 ok_sh($sh);
31 ok_gutter($sh);
32 ok_code($sh);
33 });
34});
35</script> \ No newline at end of file
diff --git a/Blocks/syntax/tests/cases/013_html_script.html b/Blocks/syntax/tests/cases/013_html_script.html
new file mode 100644
index 0000000..c0a1201
--- /dev/null
+++ b/Blocks/syntax/tests/cases/013_html_script.html
@@ -0,0 +1,34 @@
1<pre id="sh_013_html_script" class="brush: groovy; html-script: true">
2&lt;hello>
3 &lt;%
4 package free.cafekiwi.gotapi;
5 %>
6&lt;/hello>
7
8<!--
9 Comments here
10-->
11&lt;%= print(); %>
12</pre>
13
14<script type="text/javascript">
15queue(function()
16{
17 var $sh;
18
19 module('013_html_script');
20
21 test('check markup', function()
22 {
23 $sh = $('#sh_013_html_script');
24
25 ok_sh($sh);
26 ok_gutter($sh);
27 ok_code($sh);
28
29 ok($sh.find('.code .number1 > .htmlscript').length > 0, 'Has .htmlscript on line 1');
30 ok($sh.find('.code .number3 > .groovy').length > 0, 'Has .groovy on line 3');
31 ok($sh.find('.code .number10 > .groovy').length > 0, 'Has .groovy on line 10');
32 });
33});
34</script> \ No newline at end of file
diff --git a/Blocks/syntax/tests/cases/014_legacy.html b/Blocks/syntax/tests/cases/014_legacy.html
new file mode 100644
index 0000000..eb4343e
--- /dev/null
+++ b/Blocks/syntax/tests/cases/014_legacy.html
@@ -0,0 +1,70 @@
1<pre id="sh_014_legacy_a" name="code" class="plain">basic check</pre>
2<pre id="sh_014_legacy_b" name="code" class="plain:nocontrols">no toolbar</pre>
3<pre id="sh_014_legacy_c" name="code" class="plain:nogutter">no gutter</pre>
4<pre id="sh_014_legacy_d" name="code" class="plain:collapse">collapsed</pre>
5<pre id="sh_014_legacy_e" name="code" class="plain:firstline[10]">first line</pre>
6
7<script type="text/javascript">
8queue(function()
9{
10 var $sh;
11
12 dp.SyntaxHighlighter.HighlightAll('code');
13
14 module('014_legacy');
15
16 test('basic check', function()
17 {
18 $sh = $('#sh_014_legacy_a');
19
20 ok_sh($sh);
21 ok_toolbar($sh);
22 ok_code($sh);
23 });
24
25 test('no toolbar', function()
26 {
27 $sh = $('#sh_014_legacy_b');
28
29 ok_sh($sh);
30 ok_code($sh);
31 ok($sh.find('> .syntaxhighlighter > .toolbar').length == 0, 'Toolbar not present');
32 });
33
34 test('no gutter', function()
35 {
36 $sh = $('#sh_014_legacy_c');
37
38 ok_sh($sh);
39 ok_toolbar($sh);
40 ok_code($sh);
41
42 ok($sh.find('> .syntaxhighlighter.nogutter').length == 1, '.nogutter present');
43 ok($sh.find('> .syntaxhighlighter > table > tbody > tr > .gutter').length == 0, 'Gutter not present');
44 });
45
46 test('collapsed check', function()
47 {
48 $sh = $('#sh_014_legacy_d');
49
50 ok_sh($sh);
51 ok_toolbar($sh);
52 ok_collapsed($sh);
53
54 var $title = $sh.find('.toolbar a.toolbar_item.command_expandSource');
55 ok($title.length == 1, 'Expand present');
56 equal($title.text(), SyntaxHighlighter.config.strings.expandSource, 'Expand text');
57 });
58
59 test('first line check', function()
60 {
61 $sh = $('#sh_014_legacy_e');
62
63 ok_sh($sh);
64 ok_toolbar($sh);
65 ok_gutter($sh);
66 ok_code($sh);
67 equals($sh.find('.gutter .index0').text(), '10', 'First line');
68 });
69});
70</script>
diff --git a/Blocks/syntax/tests/commonjs_tests.js b/Blocks/syntax/tests/commonjs_tests.js
new file mode 100644
index 0000000..cda8162
--- /dev/null
+++ b/Blocks/syntax/tests/commonjs_tests.js
@@ -0,0 +1,52 @@
1/**
2 * This is a CommonJS compatibility test. You can run this file with node.
3 */
4require.paths.unshift(__dirname + '/../scripts');
5
6var sys = require('sys'),
7 shSyntaxHighlighter = require('shCore').SyntaxHighlighter,
8 code = 'test',
9 brushes = [
10 'AS3',
11 'AppleScript',
12 'Bash',
13 'CSharp',
14 'ColdFusion',
15 'Cpp',
16 'Css',
17 'Delphi',
18 'Diff',
19 'Erlang',
20 'Groovy',
21 'JScript',
22 'Java',
23 'JavaFX',
24 'Perl',
25 'Php',
26 'Plain',
27 'PowerShell',
28 'Python',
29 'Ruby',
30 'Sass',
31 'Scala',
32 'Sql',
33 'Vb',
34 'Xml'
35 ]
36 ;
37
38brushes.sort();
39
40for (var i = 0; i < brushes.length; i++)
41{
42 var name = brushes[i],
43 brush = require('shBrush' + name).Brush
44 ;
45
46 brush = new brush();
47 brush.init({ toolbar: false });
48
49 var result = brush.getHtml(code);
50
51 sys.puts(name + (result != null ? ': ok' : ': NOT OK'));
52}
diff --git a/Blocks/syntax/tests/js/jquery-1.4.2.js b/Blocks/syntax/tests/js/jquery-1.4.2.js
new file mode 100644
index 0000000..e414a7e
--- /dev/null
+++ b/Blocks/syntax/tests/js/jquery-1.4.2.js
@@ -0,0 +1,6240 @@
1/*!
2 * jQuery JavaScript Library v1.4.2
3 * http://jquery.com/
4 *
5 * Copyright 2010, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2010, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Sat Feb 13 22:33:48 2010 -0500
15 */
16(function( window, undefined ) {
17
18// Define a local copy of jQuery
19var jQuery = function( selector, context ) {
20 // The jQuery object is actually just the init constructor 'enhanced'
21 return new jQuery.fn.init( selector, context );
22 },
23
24 // Map over jQuery in case of overwrite
25 _jQuery = window.jQuery,
26
27 // Map over the $ in case of overwrite
28 _$ = window.$,
29
30 // Use the correct document accordingly with window argument (sandbox)
31 document = window.document,
32
33 // A central reference to the root jQuery(document)
34 rootjQuery,
35
36 // A simple way to check for HTML strings or ID strings
37 // (both of which we optimize for)
38 quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
39
40 // Is it a simple selector
41 isSimple = /^.[^:#\[\.,]*$/,
42
43 // Check if a string has a non-whitespace character in it
44 rnotwhite = /\S/,
45
46 // Used for trimming whitespace
47 rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
48
49 // Match a standalone tag
50 rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
51
52 // Keep a UserAgent string for use with jQuery.browser
53 userAgent = navigator.userAgent,
54
55 // For matching the engine and version of the browser
56 browserMatch,
57
58 // Has the ready events already been bound?
59 readyBound = false,
60
61 // The functions to execute on DOM ready
62 readyList = [],
63
64 // The ready event handler
65 DOMContentLoaded,
66
67 // Save a reference to some core methods
68 toString = Object.prototype.toString,
69 hasOwnProperty = Object.prototype.hasOwnProperty,
70 push = Array.prototype.push,
71 slice = Array.prototype.slice,
72 indexOf = Array.prototype.indexOf;
73
74jQuery.fn = jQuery.prototype = {
75 init: function( selector, context ) {
76 var match, elem, ret, doc;
77
78 // Handle $(""), $(null), or $(undefined)
79 if ( !selector ) {
80 return this;
81 }
82
83 // Handle $(DOMElement)
84 if ( selector.nodeType ) {
85 this.context = this[0] = selector;
86 this.length = 1;
87 return this;
88 }
89
90 // The body element only exists once, optimize finding it
91 if ( selector === "body" && !context ) {
92 this.context = document;
93 this[0] = document.body;
94 this.selector = "body";
95 this.length = 1;
96 return this;
97 }
98
99 // Handle HTML strings
100 if ( typeof selector === "string" ) {
101 // Are we dealing with HTML string or an ID?
102 match = quickExpr.exec( selector );
103
104 // Verify a match, and that no context was specified for #id
105 if ( match && (match[1] || !context) ) {
106
107 // HANDLE: $(html) -> $(array)
108 if ( match[1] ) {
109 doc = (context ? context.ownerDocument || context : document);
110
111 // If a single string is passed in and it's a single tag
112 // just do a createElement and skip the rest
113 ret = rsingleTag.exec( selector );
114
115 if ( ret ) {
116 if ( jQuery.isPlainObject( context ) ) {
117 selector = [ document.createElement( ret[1] ) ];
118 jQuery.fn.attr.call( selector, context, true );
119
120 } else {
121 selector = [ doc.createElement( ret[1] ) ];
122 }
123
124 } else {
125 ret = buildFragment( [ match[1] ], [ doc ] );
126 selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
127 }
128
129 return jQuery.merge( this, selector );
130
131 // HANDLE: $("#id")
132 } else {
133 elem = document.getElementById( match[2] );
134
135 if ( elem ) {
136 // Handle the case where IE and Opera return items
137 // by name instead of ID
138 if ( elem.id !== match[2] ) {
139 return rootjQuery.find( selector );
140 }
141
142 // Otherwise, we inject the element directly into the jQuery object
143 this.length = 1;
144 this[0] = elem;
145 }
146
147 this.context = document;
148 this.selector = selector;
149 return this;
150 }
151
152 // HANDLE: $("TAG")
153 } else if ( !context && /^\w+$/.test( selector ) ) {
154 this.selector = selector;
155 this.context = document;
156 selector = document.getElementsByTagName( selector );
157 return jQuery.merge( this, selector );
158
159 // HANDLE: $(expr, $(...))
160 } else if ( !context || context.jquery ) {
161 return (context || rootjQuery).find( selector );
162
163 // HANDLE: $(expr, context)
164 // (which is just equivalent to: $(context).find(expr)
165 } else {
166 return jQuery( context ).find( selector );
167 }
168
169 // HANDLE: $(function)
170 // Shortcut for document ready
171 } else if ( jQuery.isFunction( selector ) ) {
172 return rootjQuery.ready( selector );
173 }
174
175 if (selector.selector !== undefined) {
176 this.selector = selector.selector;
177 this.context = selector.context;
178 }
179
180 return jQuery.makeArray( selector, this );
181 },
182
183 // Start with an empty selector
184 selector: "",
185
186 // The current version of jQuery being used
187 jquery: "1.4.2",
188
189 // The default length of a jQuery object is 0
190 length: 0,
191
192 // The number of elements contained in the matched element set
193 size: function() {
194 return this.length;
195 },
196
197 toArray: function() {
198 return slice.call( this, 0 );
199 },
200
201 // Get the Nth element in the matched element set OR
202 // Get the whole matched element set as a clean array
203 get: function( num ) {
204 return num == null ?
205
206 // Return a 'clean' array
207 this.toArray() :
208
209 // Return just the object
210 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
211 },
212
213 // Take an array of elements and push it onto the stack
214 // (returning the new matched element set)
215 pushStack: function( elems, name, selector ) {
216 // Build a new jQuery matched element set
217 var ret = jQuery();
218
219 if ( jQuery.isArray( elems ) ) {
220 push.apply( ret, elems );
221
222 } else {
223 jQuery.merge( ret, elems );
224 }
225
226 // Add the old object onto the stack (as a reference)
227 ret.prevObject = this;
228
229 ret.context = this.context;
230
231 if ( name === "find" ) {
232 ret.selector = this.selector + (this.selector ? " " : "") + selector;
233 } else if ( name ) {
234 ret.selector = this.selector + "." + name + "(" + selector + ")";
235 }
236
237 // Return the newly-formed element set
238 return ret;
239 },
240
241 // Execute a callback for every element in the matched set.
242 // (You can seed the arguments with an array of args, but this is
243 // only used internally.)
244 each: function( callback, args ) {
245 return jQuery.each( this, callback, args );
246 },
247
248 ready: function( fn ) {
249 // Attach the listeners
250 jQuery.bindReady();
251
252 // If the DOM is already ready
253 if ( jQuery.isReady ) {
254 // Execute the function immediately
255 fn.call( document, jQuery );
256
257 // Otherwise, remember the function for later
258 } else if ( readyList ) {
259 // Add the function to the wait list
260 readyList.push( fn );
261 }
262
263 return this;
264 },
265
266 eq: function( i ) {
267 return i === -1 ?
268 this.slice( i ) :
269 this.slice( i, +i + 1 );
270 },
271
272 first: function() {
273 return this.eq( 0 );
274 },
275
276 last: function() {
277 return this.eq( -1 );
278 },
279
280 slice: function() {
281 return this.pushStack( slice.apply( this, arguments ),
282 "slice", slice.call(arguments).join(",") );
283 },
284
285 map: function( callback ) {
286 return this.pushStack( jQuery.map(this, function( elem, i ) {
287 return callback.call( elem, i, elem );
288 }));
289 },
290
291 end: function() {
292 return this.prevObject || jQuery(null);
293 },
294
295 // For internal use only.
296 // Behaves like an Array's method, not like a jQuery method.
297 push: push,
298 sort: [].sort,
299 splice: [].splice
300};
301
302// Give the init function the jQuery prototype for later instantiation
303jQuery.fn.init.prototype = jQuery.fn;
304
305jQuery.extend = jQuery.fn.extend = function() {
306 // copy reference to target object
307 var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
308
309 // Handle a deep copy situation
310 if ( typeof target === "boolean" ) {
311 deep = target;
312 target = arguments[1] || {};
313 // skip the boolean and the target
314 i = 2;
315 }
316
317 // Handle case when target is a string or something (possible in deep copy)
318 if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
319 target = {};
320 }
321
322 // extend jQuery itself if only one argument is passed
323 if ( length === i ) {
324 target = this;
325 --i;
326 }
327
328 for ( ; i < length; i++ ) {
329 // Only deal with non-null/undefined values
330 if ( (options = arguments[ i ]) != null ) {
331 // Extend the base object
332 for ( name in options ) {
333 src = target[ name ];
334 copy = options[ name ];
335
336 // Prevent never-ending loop
337 if ( target === copy ) {
338 continue;
339 }
340
341 // Recurse if we're merging object literal values or arrays
342 if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
343 var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
344 : jQuery.isArray(copy) ? [] : {};
345
346 // Never move original objects, clone them
347 target[ name ] = jQuery.extend( deep, clone, copy );
348
349 // Don't bring in undefined values
350 } else if ( copy !== undefined ) {
351 target[ name ] = copy;
352 }
353 }
354 }
355 }
356
357 // Return the modified object
358 return target;
359};
360
361jQuery.extend({
362 noConflict: function( deep ) {
363 window.$ = _$;
364
365 if ( deep ) {
366 window.jQuery = _jQuery;
367 }
368
369 return jQuery;
370 },
371
372 // Is the DOM ready to be used? Set to true once it occurs.
373 isReady: false,
374
375 // Handle when the DOM is ready
376 ready: function() {
377 // Make sure that the DOM is not already loaded
378 if ( !jQuery.isReady ) {
379 // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
380 if ( !document.body ) {
381 return setTimeout( jQuery.ready, 13 );
382 }
383
384 // Remember that the DOM is ready
385 jQuery.isReady = true;
386
387 // If there are functions bound, to execute
388 if ( readyList ) {
389 // Execute all of them
390 var fn, i = 0;
391 while ( (fn = readyList[ i++ ]) ) {
392 fn.call( document, jQuery );
393 }
394
395 // Reset the list of functions
396 readyList = null;
397 }
398
399 // Trigger any bound ready events
400 if ( jQuery.fn.triggerHandler ) {
401 jQuery( document ).triggerHandler( "ready" );
402 }
403 }
404 },
405
406 bindReady: function() {
407 if ( readyBound ) {
408 return;
409 }
410
411 readyBound = true;
412
413 // Catch cases where $(document).ready() is called after the
414 // browser event has already occurred.
415 if ( document.readyState === "complete" ) {
416 return jQuery.ready();
417 }
418
419 // Mozilla, Opera and webkit nightlies currently support this event
420 if ( document.addEventListener ) {
421 // Use the handy event callback
422 document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
423
424 // A fallback to window.onload, that will always work
425 window.addEventListener( "load", jQuery.ready, false );
426
427 // If IE event model is used
428 } else if ( document.attachEvent ) {
429 // ensure firing before onload,
430 // maybe late but safe also for iframes
431 document.attachEvent("onreadystatechange", DOMContentLoaded);
432
433 // A fallback to window.onload, that will always work
434 window.attachEvent( "onload", jQuery.ready );
435
436 // If IE and not a frame
437 // continually check to see if the document is ready
438 var toplevel = false;
439
440 try {
441 toplevel = window.frameElement == null;
442 } catch(e) {}
443
444 if ( document.documentElement.doScroll && toplevel ) {
445 doScrollCheck();
446 }
447 }
448 },
449
450 // See test/unit/core.js for details concerning isFunction.
451 // Since version 1.3, DOM methods and functions like alert
452 // aren't supported. They return false on IE (#2968).
453 isFunction: function( obj ) {
454 return toString.call(obj) === "[object Function]";
455 },
456
457 isArray: function( obj ) {
458 return toString.call(obj) === "[object Array]";
459 },
460
461 isPlainObject: function( obj ) {
462 // Must be an Object.
463 // Because of IE, we also have to check the presence of the constructor property.
464 // Make sure that DOM nodes and window objects don't pass through, as well
465 if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
466 return false;
467 }
468
469 // Not own constructor property must be Object
470 if ( obj.constructor
471 && !hasOwnProperty.call(obj, "constructor")
472 && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
473 return false;
474 }
475
476 // Own properties are enumerated firstly, so to speed up,
477 // if last one is own, then all properties are own.
478
479 var key;
480 for ( key in obj ) {}
481
482 return key === undefined || hasOwnProperty.call( obj, key );
483 },
484
485 isEmptyObject: function( obj ) {
486 for ( var name in obj ) {
487 return false;
488 }
489 return true;
490 },
491
492 error: function( msg ) {
493 throw msg;
494 },
495
496 parseJSON: function( data ) {
497 if ( typeof data !== "string" || !data ) {
498 return null;
499 }
500
501 // Make sure leading/trailing whitespace is removed (IE can't handle it)
502 data = jQuery.trim( data );
503
504 // Make sure the incoming data is actual JSON
505 // Logic borrowed from http://json.org/json2.js
506 if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
507 .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
508 .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
509
510 // Try to use the native JSON parser first
511 return window.JSON && window.JSON.parse ?
512 window.JSON.parse( data ) :
513 (new Function("return " + data))();
514
515 } else {
516 jQuery.error( "Invalid JSON: " + data );
517 }
518 },
519
520 noop: function() {},
521
522 // Evalulates a script in a global context
523 globalEval: function( data ) {
524 if ( data && rnotwhite.test(data) ) {
525 // Inspired by code by Andrea Giammarchi
526 // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
527 var head = document.getElementsByTagName("head")[0] || document.documentElement,
528 script = document.createElement("script");
529
530 script.type = "text/javascript";
531
532 if ( jQuery.support.scriptEval ) {
533 script.appendChild( document.createTextNode( data ) );
534 } else {
535 script.text = data;
536 }
537
538 // Use insertBefore instead of appendChild to circumvent an IE6 bug.
539 // This arises when a base node is used (#2709).
540 head.insertBefore( script, head.firstChild );
541 head.removeChild( script );
542 }
543 },
544
545 nodeName: function( elem, name ) {
546 return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
547 },
548
549 // args is for internal usage only
550 each: function( object, callback, args ) {
551 var name, i = 0,
552 length = object.length,
553 isObj = length === undefined || jQuery.isFunction(object);
554
555 if ( args ) {
556 if ( isObj ) {
557 for ( name in object ) {
558 if ( callback.apply( object[ name ], args ) === false ) {
559 break;
560 }
561 }
562 } else {
563 for ( ; i < length; ) {
564 if ( callback.apply( object[ i++ ], args ) === false ) {
565 break;
566 }
567 }
568 }
569
570 // A special, fast, case for the most common use of each
571 } else {
572 if ( isObj ) {
573 for ( name in object ) {
574 if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
575 break;
576 }
577 }
578 } else {
579 for ( var value = object[0];
580 i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
581 }
582 }
583
584 return object;
585 },
586
587 trim: function( text ) {
588 return (text || "").replace( rtrim, "" );
589 },
590
591 // results is for internal usage only
592 makeArray: function( array, results ) {
593 var ret = results || [];
594
595 if ( array != null ) {
596 // The window, strings (and functions) also have 'length'
597 // The extra typeof function check is to prevent crashes
598 // in Safari 2 (See: #3039)
599 if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
600 push.call( ret, array );
601 } else {
602 jQuery.merge( ret, array );
603 }
604 }
605
606 return ret;
607 },
608
609 inArray: function( elem, array ) {
610 if ( array.indexOf ) {
611 return array.indexOf( elem );
612 }
613
614 for ( var i = 0, length = array.length; i < length; i++ ) {
615 if ( array[ i ] === elem ) {
616 return i;
617 }
618 }
619
620 return -1;
621 },
622
623 merge: function( first, second ) {
624 var i = first.length, j = 0;
625
626 if ( typeof second.length === "number" ) {
627 for ( var l = second.length; j < l; j++ ) {
628 first[ i++ ] = second[ j ];
629 }
630
631 } else {
632 while ( second[j] !== undefined ) {
633 first[ i++ ] = second[ j++ ];
634 }
635 }
636
637 first.length = i;
638
639 return first;
640 },
641
642 grep: function( elems, callback, inv ) {
643 var ret = [];
644
645 // Go through the array, only saving the items
646 // that pass the validator function
647 for ( var i = 0, length = elems.length; i < length; i++ ) {
648 if ( !inv !== !callback( elems[ i ], i ) ) {
649 ret.push( elems[ i ] );
650 }
651 }
652
653 return ret;
654 },
655
656 // arg is for internal usage only
657 map: function( elems, callback, arg ) {
658 var ret = [], value;
659
660 // Go through the array, translating each of the items to their
661 // new value (or values).
662 for ( var i = 0, length = elems.length; i < length; i++ ) {
663 value = callback( elems[ i ], i, arg );
664
665 if ( value != null ) {
666 ret[ ret.length ] = value;
667 }
668 }
669
670 return ret.concat.apply( [], ret );
671 },
672
673 // A global GUID counter for objects
674 guid: 1,
675
676 proxy: function( fn, proxy, thisObject ) {
677 if ( arguments.length === 2 ) {
678 if ( typeof proxy === "string" ) {
679 thisObject = fn;
680 fn = thisObject[ proxy ];
681 proxy = undefined;
682
683 } else if ( proxy && !jQuery.isFunction( proxy ) ) {
684 thisObject = proxy;
685 proxy = undefined;
686 }
687 }
688
689 if ( !proxy && fn ) {
690 proxy = function() {
691 return fn.apply( thisObject || this, arguments );
692 };
693 }
694
695 // Set the guid of unique handler to the same of original handler, so it can be removed
696 if ( fn ) {
697 proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
698 }
699
700 // So proxy can be declared as an argument
701 return proxy;
702 },
703
704 // Use of jQuery.browser is frowned upon.
705 // More details: http://docs.jquery.com/Utilities/jQuery.browser
706 uaMatch: function( ua ) {
707 ua = ua.toLowerCase();
708
709 var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
710 /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
711 /(msie) ([\w.]+)/.exec( ua ) ||
712 !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
713 [];
714
715 return { browser: match[1] || "", version: match[2] || "0" };
716 },
717
718 browser: {}
719});
720
721browserMatch = jQuery.uaMatch( userAgent );
722if ( browserMatch.browser ) {
723 jQuery.browser[ browserMatch.browser ] = true;
724 jQuery.browser.version = browserMatch.version;
725}
726
727// Deprecated, use jQuery.browser.webkit instead
728if ( jQuery.browser.webkit ) {
729 jQuery.browser.safari = true;
730}
731
732if ( indexOf ) {
733 jQuery.inArray = function( elem, array ) {
734 return indexOf.call( array, elem );
735 };
736}
737
738// All jQuery objects should point back to these
739rootjQuery = jQuery(document);
740
741// Cleanup functions for the document ready method
742if ( document.addEventListener ) {
743 DOMContentLoaded = function() {
744 document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
745 jQuery.ready();
746 };
747
748} else if ( document.attachEvent ) {
749 DOMContentLoaded = function() {
750 // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
751 if ( document.readyState === "complete" ) {
752 document.detachEvent( "onreadystatechange", DOMContentLoaded );
753 jQuery.ready();
754 }
755 };
756}
757
758// The DOM ready check for Internet Explorer
759function doScrollCheck() {
760 if ( jQuery.isReady ) {
761 return;
762 }
763
764 try {
765 // If IE is used, use the trick by Diego Perini
766 // http://javascript.nwbox.com/IEContentLoaded/
767 document.documentElement.doScroll("left");
768 } catch( error ) {
769 setTimeout( doScrollCheck, 1 );
770 return;
771 }
772
773 // and execute any waiting functions
774 jQuery.ready();
775}
776
777function evalScript( i, elem ) {
778 if ( elem.src ) {
779 jQuery.ajax({
780 url: elem.src,
781 async: false,
782 dataType: "script"
783 });
784 } else {
785 jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
786 }
787
788 if ( elem.parentNode ) {
789 elem.parentNode.removeChild( elem );
790 }
791}
792
793// Mutifunctional method to get and set values to a collection
794// The value/s can be optionally by executed if its a function
795function access( elems, key, value, exec, fn, pass ) {
796 var length = elems.length;
797
798 // Setting many attributes
799 if ( typeof key === "object" ) {
800 for ( var k in key ) {
801 access( elems, k, key[k], exec, fn, value );
802 }
803 return elems;
804 }
805
806 // Setting one attribute
807 if ( value !== undefined ) {
808 // Optionally, function values get executed if exec is true
809 exec = !pass && exec && jQuery.isFunction(value);
810
811 for ( var i = 0; i < length; i++ ) {
812 fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
813 }
814
815 return elems;
816 }
817
818 // Getting an attribute
819 return length ? fn( elems[0], key ) : undefined;
820}
821
822function now() {
823 return (new Date).getTime();
824}
825(function() {
826
827 jQuery.support = {};
828
829 var root = document.documentElement,
830 script = document.createElement("script"),
831 div = document.createElement("div"),
832 id = "script" + now();
833
834 div.style.display = "none";
835 div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
836
837 var all = div.getElementsByTagName("*"),
838 a = div.getElementsByTagName("a")[0];
839
840 // Can't get basic test support
841 if ( !all || !all.length || !a ) {
842 return;
843 }
844
845 jQuery.support = {
846 // IE strips leading whitespace when .innerHTML is used
847 leadingWhitespace: div.firstChild.nodeType === 3,
848
849 // Make sure that tbody elements aren't automatically inserted
850 // IE will insert them into empty tables
851 tbody: !div.getElementsByTagName("tbody").length,
852
853 // Make sure that link elements get serialized correctly by innerHTML
854 // This requires a wrapper element in IE
855 htmlSerialize: !!div.getElementsByTagName("link").length,
856
857 // Get the style information from getAttribute
858 // (IE uses .cssText insted)
859 style: /red/.test( a.getAttribute("style") ),
860
861 // Make sure that URLs aren't manipulated
862 // (IE normalizes it by default)
863 hrefNormalized: a.getAttribute("href") === "/a",
864
865 // Make sure that element opacity exists
866 // (IE uses filter instead)
867 // Use a regex to work around a WebKit issue. See #5145
868 opacity: /^0.55$/.test( a.style.opacity ),
869
870 // Verify style float existence
871 // (IE uses styleFloat instead of cssFloat)
872 cssFloat: !!a.style.cssFloat,
873
874 // Make sure that if no value is specified for a checkbox
875 // that it defaults to "on".
876 // (WebKit defaults to "" instead)
877 checkOn: div.getElementsByTagName("input")[0].value === "on",
878
879 // Make sure that a selected-by-default option has a working selected property.
880 // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
881 optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
882
883 parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
884
885 // Will be defined later
886 deleteExpando: true,
887 checkClone: false,
888 scriptEval: false,
889 noCloneEvent: true,
890 boxModel: null
891 };
892
893 script.type = "text/javascript";
894 try {
895 script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
896 } catch(e) {}
897
898 root.insertBefore( script, root.firstChild );
899
900 // Make sure that the execution of code works by injecting a script
901 // tag with appendChild/createTextNode
902 // (IE doesn't support this, fails, and uses .text instead)
903 if ( window[ id ] ) {
904 jQuery.support.scriptEval = true;
905 delete window[ id ];
906 }
907
908 // Test to see if it's possible to delete an expando from an element
909 // Fails in Internet Explorer
910 try {
911 delete script.test;
912
913 } catch(e) {
914 jQuery.support.deleteExpando = false;
915 }
916
917 root.removeChild( script );
918
919 if ( div.attachEvent && div.fireEvent ) {
920 div.attachEvent("onclick", function click() {
921 // Cloning a node shouldn't copy over any
922 // bound event handlers (IE does this)
923 jQuery.support.noCloneEvent = false;
924 div.detachEvent("onclick", click);
925 });
926 div.cloneNode(true).fireEvent("onclick");
927 }
928
929 div = document.createElement("div");
930 div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
931
932 var fragment = document.createDocumentFragment();
933 fragment.appendChild( div.firstChild );
934
935 // WebKit doesn't clone checked state correctly in fragments
936 jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
937
938 // Figure out if the W3C box model works as expected
939 // document.body must exist before we can do this
940 jQuery(function() {
941 var div = document.createElement("div");
942 div.style.width = div.style.paddingLeft = "1px";
943
944 document.body.appendChild( div );
945 jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
946 document.body.removeChild( div ).style.display = 'none';
947
948 div = null;
949 });
950
951 // Technique from Juriy Zaytsev
952 // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
953 var eventSupported = function( eventName ) {
954 var el = document.createElement("div");
955 eventName = "on" + eventName;
956
957 var isSupported = (eventName in el);
958 if ( !isSupported ) {
959 el.setAttribute(eventName, "return;");
960 isSupported = typeof el[eventName] === "function";
961 }
962 el = null;
963
964 return isSupported;
965 };
966
967 jQuery.support.submitBubbles = eventSupported("submit");
968 jQuery.support.changeBubbles = eventSupported("change");
969
970 // release memory in IE
971 root = script = div = all = a = null;
972})();
973
974jQuery.props = {
975 "for": "htmlFor",
976 "class": "className",
977 readonly: "readOnly",
978 maxlength: "maxLength",
979 cellspacing: "cellSpacing",
980 rowspan: "rowSpan",
981 colspan: "colSpan",
982 tabindex: "tabIndex",
983 usemap: "useMap",
984 frameborder: "frameBorder"
985};
986var expando = "jQuery" + now(), uuid = 0, windowData = {};
987
988jQuery.extend({
989 cache: {},
990
991 expando:expando,
992
993 // The following elements throw uncatchable exceptions if you
994 // attempt to add expando properties to them.
995 noData: {
996 "embed": true,
997 "object": true,
998 "applet": true
999 },
1000
1001 data: function( elem, name, data ) {
1002 if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
1003 return;
1004 }
1005
1006 elem = elem == window ?
1007 windowData :
1008 elem;
1009
1010 var id = elem[ expando ], cache = jQuery.cache, thisCache;
1011
1012 if ( !id && typeof name === "string" && data === undefined ) {
1013 return null;
1014 }
1015
1016 // Compute a unique ID for the element
1017 if ( !id ) {
1018 id = ++uuid;
1019 }
1020
1021 // Avoid generating a new cache unless none exists and we
1022 // want to manipulate it.
1023 if ( typeof name === "object" ) {
1024 elem[ expando ] = id;
1025 thisCache = cache[ id ] = jQuery.extend(true, {}, name);
1026
1027 } else if ( !cache[ id ] ) {
1028 elem[ expando ] = id;
1029 cache[ id ] = {};
1030 }
1031
1032 thisCache = cache[ id ];
1033
1034 // Prevent overriding the named cache with undefined values
1035 if ( data !== undefined ) {
1036 thisCache[ name ] = data;
1037 }
1038
1039 return typeof name === "string" ? thisCache[ name ] : thisCache;
1040 },
1041
1042 removeData: function( elem, name ) {
1043 if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
1044 return;
1045 }
1046
1047 elem = elem == window ?
1048 windowData :
1049 elem;
1050
1051 var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
1052
1053 // If we want to remove a specific section of the element's data
1054 if ( name ) {
1055 if ( thisCache ) {
1056 // Remove the section of cache data
1057 delete thisCache[ name ];
1058
1059 // If we've removed all the data, remove the element's cache
1060 if ( jQuery.isEmptyObject(thisCache) ) {
1061 jQuery.removeData( elem );
1062 }
1063 }
1064
1065 // Otherwise, we want to remove all of the element's data
1066 } else {
1067 if ( jQuery.support.deleteExpando ) {
1068 delete elem[ jQuery.expando ];
1069
1070 } else if ( elem.removeAttribute ) {
1071 elem.removeAttribute( jQuery.expando );
1072 }
1073
1074 // Completely remove the data cache
1075 delete cache[ id ];
1076 }
1077 }
1078});
1079
1080jQuery.fn.extend({
1081 data: function( key, value ) {
1082 if ( typeof key === "undefined" && this.length ) {
1083 return jQuery.data( this[0] );
1084
1085 } else if ( typeof key === "object" ) {
1086 return this.each(function() {
1087 jQuery.data( this, key );
1088 });
1089 }
1090
1091 var parts = key.split(".");
1092 parts[1] = parts[1] ? "." + parts[1] : "";
1093
1094 if ( value === undefined ) {
1095 var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
1096
1097 if ( data === undefined && this.length ) {
1098 data = jQuery.data( this[0], key );
1099 }
1100 return data === undefined && parts[1] ?
1101 this.data( parts[0] ) :
1102 data;
1103 } else {
1104 return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
1105 jQuery.data( this, key, value );
1106 });
1107 }
1108 },
1109
1110 removeData: function( key ) {
1111 return this.each(function() {
1112 jQuery.removeData( this, key );
1113 });
1114 }
1115});
1116jQuery.extend({
1117 queue: function( elem, type, data ) {
1118 if ( !elem ) {
1119 return;
1120 }
1121
1122 type = (type || "fx") + "queue";
1123 var q = jQuery.data( elem, type );
1124
1125 // Speed up dequeue by getting out quickly if this is just a lookup
1126 if ( !data ) {
1127 return q || [];
1128 }
1129
1130 if ( !q || jQuery.isArray(data) ) {
1131 q = jQuery.data( elem, type, jQuery.makeArray(data) );
1132
1133 } else {
1134 q.push( data );
1135 }
1136
1137 return q;
1138 },
1139
1140 dequeue: function( elem, type ) {
1141 type = type || "fx";
1142
1143 var queue = jQuery.queue( elem, type ), fn = queue.shift();
1144
1145 // If the fx queue is dequeued, always remove the progress sentinel
1146 if ( fn === "inprogress" ) {
1147 fn = queue.shift();
1148 }
1149
1150 if ( fn ) {
1151 // Add a progress sentinel to prevent the fx queue from being
1152 // automatically dequeued
1153 if ( type === "fx" ) {
1154 queue.unshift("inprogress");
1155 }
1156
1157 fn.call(elem, function() {
1158 jQuery.dequeue(elem, type);
1159 });
1160 }
1161 }
1162});
1163
1164jQuery.fn.extend({
1165 queue: function( type, data ) {
1166 if ( typeof type !== "string" ) {
1167 data = type;
1168 type = "fx";
1169 }
1170
1171 if ( data === undefined ) {
1172 return jQuery.queue( this[0], type );
1173 }
1174 return this.each(function( i, elem ) {
1175 var queue = jQuery.queue( this, type, data );
1176
1177 if ( type === "fx" && queue[0] !== "inprogress" ) {
1178 jQuery.dequeue( this, type );
1179 }
1180 });
1181 },
1182 dequeue: function( type ) {
1183 return this.each(function() {
1184 jQuery.dequeue( this, type );
1185 });
1186 },
1187
1188 // Based off of the plugin by Clint Helfers, with permission.
1189 // http://blindsignals.com/index.php/2009/07/jquery-delay/
1190 delay: function( time, type ) {
1191 time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
1192 type = type || "fx";
1193
1194 return this.queue( type, function() {
1195 var elem = this;
1196 setTimeout(function() {
1197 jQuery.dequeue( elem, type );
1198 }, time );
1199 });
1200 },
1201
1202 clearQueue: function( type ) {
1203 return this.queue( type || "fx", [] );
1204 }
1205});
1206var rclass = /[\n\t]/g,
1207 rspace = /\s+/,
1208 rreturn = /\r/g,
1209 rspecialurl = /href|src|style/,
1210 rtype = /(button|input)/i,
1211 rfocusable = /(button|input|object|select|textarea)/i,
1212 rclickable = /^(a|area)$/i,
1213 rradiocheck = /radio|checkbox/;
1214
1215jQuery.fn.extend({
1216 attr: function( name, value ) {
1217 return access( this, name, value, true, jQuery.attr );
1218 },
1219
1220 removeAttr: function( name, fn ) {
1221 return this.each(function(){
1222 jQuery.attr( this, name, "" );
1223 if ( this.nodeType === 1 ) {
1224 this.removeAttribute( name );
1225 }
1226 });
1227 },
1228
1229 addClass: function( value ) {
1230 if ( jQuery.isFunction(value) ) {
1231 return this.each(function(i) {
1232 var self = jQuery(this);
1233 self.addClass( value.call(this, i, self.attr("class")) );
1234 });
1235 }
1236
1237 if ( value && typeof value === "string" ) {
1238 var classNames = (value || "").split( rspace );
1239
1240 for ( var i = 0, l = this.length; i < l; i++ ) {
1241 var elem = this[i];
1242
1243 if ( elem.nodeType === 1 ) {
1244 if ( !elem.className ) {
1245 elem.className = value;
1246
1247 } else {
1248 var className = " " + elem.className + " ", setClass = elem.className;
1249 for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1250 if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
1251 setClass += " " + classNames[c];
1252 }
1253 }
1254 elem.className = jQuery.trim( setClass );
1255 }
1256 }
1257 }
1258 }
1259
1260 return this;
1261 },
1262
1263 removeClass: function( value ) {
1264 if ( jQuery.isFunction(value) ) {
1265 return this.each(function(i) {
1266 var self = jQuery(this);
1267 self.removeClass( value.call(this, i, self.attr("class")) );
1268 });
1269 }
1270
1271 if ( (value && typeof value === "string") || value === undefined ) {
1272 var classNames = (value || "").split(rspace);
1273
1274 for ( var i = 0, l = this.length; i < l; i++ ) {
1275 var elem = this[i];
1276
1277 if ( elem.nodeType === 1 && elem.className ) {
1278 if ( value ) {
1279 var className = (" " + elem.className + " ").replace(rclass, " ");
1280 for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1281 className = className.replace(" " + classNames[c] + " ", " ");
1282 }
1283 elem.className = jQuery.trim( className );
1284
1285 } else {
1286 elem.className = "";
1287 }
1288 }
1289 }
1290 }
1291
1292 return this;
1293 },
1294
1295 toggleClass: function( value, stateVal ) {
1296 var type = typeof value, isBool = typeof stateVal === "boolean";
1297
1298 if ( jQuery.isFunction( value ) ) {
1299 return this.each(function(i) {
1300 var self = jQuery(this);
1301 self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
1302 });
1303 }
1304
1305 return this.each(function() {
1306 if ( type === "string" ) {
1307 // toggle individual class names
1308 var className, i = 0, self = jQuery(this),
1309 state = stateVal,
1310 classNames = value.split( rspace );
1311
1312 while ( (className = classNames[ i++ ]) ) {
1313 // check each className given, space seperated list
1314 state = isBool ? state : !self.hasClass( className );
1315 self[ state ? "addClass" : "removeClass" ]( className );
1316 }
1317
1318 } else if ( type === "undefined" || type === "boolean" ) {
1319 if ( this.className ) {
1320 // store className if set
1321 jQuery.data( this, "__className__", this.className );
1322 }
1323
1324 // toggle whole className
1325 this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
1326 }
1327 });
1328 },
1329
1330 hasClass: function( selector ) {
1331 var className = " " + selector + " ";
1332 for ( var i = 0, l = this.length; i < l; i++ ) {
1333 if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
1334 return true;
1335 }
1336 }
1337
1338 return false;
1339 },
1340
1341 val: function( value ) {
1342 if ( value === undefined ) {
1343 var elem = this[0];
1344
1345 if ( elem ) {
1346 if ( jQuery.nodeName( elem, "option" ) ) {
1347 return (elem.attributes.value || {}).specified ? elem.value : elem.text;
1348 }
1349
1350 // We need to handle select boxes special
1351 if ( jQuery.nodeName( elem, "select" ) ) {
1352 var index = elem.selectedIndex,
1353 values = [],
1354 options = elem.options,
1355 one = elem.type === "select-one";
1356
1357 // Nothing was selected
1358 if ( index < 0 ) {
1359 return null;
1360 }
1361
1362 // Loop through all the selected options
1363 for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
1364 var option = options[ i ];
1365
1366 if ( option.selected ) {
1367 // Get the specifc value for the option
1368 value = jQuery(option).val();
1369
1370 // We don't need an array for one selects
1371 if ( one ) {
1372 return value;
1373 }
1374
1375 // Multi-Selects return an array
1376 values.push( value );
1377 }
1378 }
1379
1380 return values;
1381 }
1382
1383 // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
1384 if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
1385 return elem.getAttribute("value") === null ? "on" : elem.value;
1386 }
1387
1388
1389 // Everything else, we just grab the value
1390 return (elem.value || "").replace(rreturn, "");
1391
1392 }
1393
1394 return undefined;
1395 }
1396
1397 var isFunction = jQuery.isFunction(value);
1398
1399 return this.each(function(i) {
1400 var self = jQuery(this), val = value;
1401
1402 if ( this.nodeType !== 1 ) {
1403 return;
1404 }
1405
1406 if ( isFunction ) {
1407 val = value.call(this, i, self.val());
1408 }
1409
1410 // Typecast each time if the value is a Function and the appended
1411 // value is therefore different each time.
1412 if ( typeof val === "number" ) {
1413 val += "";
1414 }
1415
1416 if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
1417 this.checked = jQuery.inArray( self.val(), val ) >= 0;
1418
1419 } else if ( jQuery.nodeName( this, "select" ) ) {
1420 var values = jQuery.makeArray(val);
1421
1422 jQuery( "option", this ).each(function() {
1423 this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
1424 });
1425
1426 if ( !values.length ) {
1427 this.selectedIndex = -1;
1428 }
1429
1430 } else {
1431 this.value = val;
1432 }
1433 });
1434 }
1435});
1436
1437jQuery.extend({
1438 attrFn: {
1439 val: true,
1440 css: true,
1441 html: true,
1442 text: true,
1443 data: true,
1444 width: true,
1445 height: true,
1446 offset: true
1447 },
1448
1449 attr: function( elem, name, value, pass ) {
1450 // don't set attributes on text and comment nodes
1451 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
1452 return undefined;
1453 }
1454
1455 if ( pass && name in jQuery.attrFn ) {
1456 return jQuery(elem)[name](value);
1457 }
1458
1459 var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
1460 // Whether we are setting (or getting)
1461 set = value !== undefined;
1462
1463 // Try to normalize/fix the name
1464 name = notxml && jQuery.props[ name ] || name;
1465
1466 // Only do all the following if this is a node (faster for style)
1467 if ( elem.nodeType === 1 ) {
1468 // These attributes require special treatment
1469 var special = rspecialurl.test( name );
1470
1471 // Safari mis-reports the default selected property of an option
1472 // Accessing the parent's selectedIndex property fixes it
1473 if ( name === "selected" && !jQuery.support.optSelected ) {
1474 var parent = elem.parentNode;
1475 if ( parent ) {
1476 parent.selectedIndex;
1477
1478 // Make sure that it also works with optgroups, see #5701
1479 if ( parent.parentNode ) {
1480 parent.parentNode.selectedIndex;
1481 }
1482 }
1483 }
1484
1485 // If applicable, access the attribute via the DOM 0 way
1486 if ( name in elem && notxml && !special ) {
1487 if ( set ) {
1488 // We can't allow the type property to be changed (since it causes problems in IE)
1489 if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
1490 jQuery.error( "type property can't be changed" );
1491 }
1492
1493 elem[ name ] = value;
1494 }
1495
1496 // browsers index elements by id/name on forms, give priority to attributes.
1497 if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
1498 return elem.getAttributeNode( name ).nodeValue;
1499 }
1500
1501 // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
1502 // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
1503 if ( name === "tabIndex" ) {
1504 var attributeNode = elem.getAttributeNode( "tabIndex" );
1505
1506 return attributeNode && attributeNode.specified ?
1507 attributeNode.value :
1508 rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
1509 0 :
1510 undefined;
1511 }
1512
1513 return elem[ name ];
1514 }
1515
1516 if ( !jQuery.support.style && notxml && name === "style" ) {
1517 if ( set ) {
1518 elem.style.cssText = "" + value;
1519 }
1520
1521 return elem.style.cssText;
1522 }
1523
1524 if ( set ) {
1525 // convert the value to a string (all browsers do this but IE) see #1070
1526 elem.setAttribute( name, "" + value );
1527 }
1528
1529 var attr = !jQuery.support.hrefNormalized && notxml && special ?
1530 // Some attributes require a special call on IE
1531 elem.getAttribute( name, 2 ) :
1532 elem.getAttribute( name );
1533
1534 // Non-existent attributes return null, we normalize to undefined
1535 return attr === null ? undefined : attr;
1536 }
1537
1538 // elem is actually elem.style ... set the style
1539 // Using attr for specific style information is now deprecated. Use style instead.
1540 return jQuery.style( elem, name, value );
1541 }
1542});
1543var rnamespaces = /\.(.*)$/,
1544 fcleanup = function( nm ) {
1545 return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
1546 return "\\" + ch;
1547 });
1548 };
1549
1550/*
1551 * A number of helper functions used for managing events.
1552 * Many of the ideas behind this code originated from
1553 * Dean Edwards' addEvent library.
1554 */
1555jQuery.event = {
1556
1557 // Bind an event to an element
1558 // Original by Dean Edwards
1559 add: function( elem, types, handler, data ) {
1560 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
1561 return;
1562 }
1563
1564 // For whatever reason, IE has trouble passing the window object
1565 // around, causing it to be cloned in the process
1566 if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
1567 elem = window;
1568 }
1569
1570 var handleObjIn, handleObj;
1571
1572 if ( handler.handler ) {
1573 handleObjIn = handler;
1574 handler = handleObjIn.handler;
1575 }
1576
1577 // Make sure that the function being executed has a unique ID
1578 if ( !handler.guid ) {
1579 handler.guid = jQuery.guid++;
1580 }
1581
1582 // Init the element's event structure
1583 var elemData = jQuery.data( elem );
1584
1585 // If no elemData is found then we must be trying to bind to one of the
1586 // banned noData elements
1587 if ( !elemData ) {
1588 return;
1589 }
1590
1591 var events = elemData.events = elemData.events || {},
1592 eventHandle = elemData.handle, eventHandle;
1593
1594 if ( !eventHandle ) {
1595 elemData.handle = eventHandle = function() {
1596 // Handle the second event of a trigger and when
1597 // an event is called after a page has unloaded
1598 return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
1599 jQuery.event.handle.apply( eventHandle.elem, arguments ) :
1600 undefined;
1601 };
1602 }
1603
1604 // Add elem as a property of the handle function
1605 // This is to prevent a memory leak with non-native events in IE.
1606 eventHandle.elem = elem;
1607
1608 // Handle multiple events separated by a space
1609 // jQuery(...).bind("mouseover mouseout", fn);
1610 types = types.split(" ");
1611
1612 var type, i = 0, namespaces;
1613
1614 while ( (type = types[ i++ ]) ) {
1615 handleObj = handleObjIn ?
1616 jQuery.extend({}, handleObjIn) :
1617 { handler: handler, data: data };
1618
1619 // Namespaced event handlers
1620 if ( type.indexOf(".") > -1 ) {
1621 namespaces = type.split(".");
1622 type = namespaces.shift();
1623 handleObj.namespace = namespaces.slice(0).sort().join(".");
1624
1625 } else {
1626 namespaces = [];
1627 handleObj.namespace = "";
1628 }
1629
1630 handleObj.type = type;
1631 handleObj.guid = handler.guid;
1632
1633 // Get the current list of functions bound to this event
1634 var handlers = events[ type ],
1635 special = jQuery.event.special[ type ] || {};
1636
1637 // Init the event handler queue
1638 if ( !handlers ) {
1639 handlers = events[ type ] = [];
1640
1641 // Check for a special event handler
1642 // Only use addEventListener/attachEvent if the special
1643 // events handler returns false
1644 if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
1645 // Bind the global event handler to the element
1646 if ( elem.addEventListener ) {
1647 elem.addEventListener( type, eventHandle, false );
1648
1649 } else if ( elem.attachEvent ) {
1650 elem.attachEvent( "on" + type, eventHandle );
1651 }
1652 }
1653 }
1654
1655 if ( special.add ) {
1656 special.add.call( elem, handleObj );
1657
1658 if ( !handleObj.handler.guid ) {
1659 handleObj.handler.guid = handler.guid;
1660 }
1661 }
1662
1663 // Add the function to the element's handler list
1664 handlers.push( handleObj );
1665
1666 // Keep track of which events have been used, for global triggering
1667 jQuery.event.global[ type ] = true;
1668 }
1669
1670 // Nullify elem to prevent memory leaks in IE
1671 elem = null;
1672 },
1673
1674 global: {},
1675
1676 // Detach an event or set of events from an element
1677 remove: function( elem, types, handler, pos ) {
1678 // don't do events on text and comment nodes
1679 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
1680 return;
1681 }
1682
1683 var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
1684 elemData = jQuery.data( elem ),
1685 events = elemData && elemData.events;
1686
1687 if ( !elemData || !events ) {
1688 return;
1689 }
1690
1691 // types is actually an event object here
1692 if ( types && types.type ) {
1693 handler = types.handler;
1694 types = types.type;
1695 }
1696
1697 // Unbind all events for the element
1698 if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
1699 types = types || "";
1700
1701 for ( type in events ) {
1702 jQuery.event.remove( elem, type + types );
1703 }
1704
1705 return;
1706 }
1707
1708 // Handle multiple events separated by a space
1709 // jQuery(...).unbind("mouseover mouseout", fn);
1710 types = types.split(" ");
1711
1712 while ( (type = types[ i++ ]) ) {
1713 origType = type;
1714 handleObj = null;
1715 all = type.indexOf(".") < 0;
1716 namespaces = [];
1717
1718 if ( !all ) {
1719 // Namespaced event handlers
1720 namespaces = type.split(".");
1721 type = namespaces.shift();
1722
1723 namespace = new RegExp("(^|\\.)" +
1724 jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)")
1725 }
1726
1727 eventType = events[ type ];
1728
1729 if ( !eventType ) {
1730 continue;
1731 }
1732
1733 if ( !handler ) {
1734 for ( var j = 0; j < eventType.length; j++ ) {
1735 handleObj = eventType[ j ];
1736
1737 if ( all || namespace.test( handleObj.namespace ) ) {
1738 jQuery.event.remove( elem, origType, handleObj.handler, j );
1739 eventType.splice( j--, 1 );
1740 }
1741 }
1742
1743 continue;
1744 }
1745
1746 special = jQuery.event.special[ type ] || {};
1747
1748 for ( var j = pos || 0; j < eventType.length; j++ ) {
1749 handleObj = eventType[ j ];
1750
1751 if ( handler.guid === handleObj.guid ) {
1752 // remove the given handler for the given type
1753 if ( all || namespace.test( handleObj.namespace ) ) {
1754 if ( pos == null ) {
1755 eventType.splice( j--, 1 );
1756 }
1757
1758 if ( special.remove ) {
1759 special.remove.call( elem, handleObj );
1760 }
1761 }
1762
1763 if ( pos != null ) {
1764 break;
1765 }
1766 }
1767 }
1768
1769 // remove generic event handler if no more handlers exist
1770 if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
1771 if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
1772 removeEvent( elem, type, elemData.handle );
1773 }
1774
1775 ret = null;
1776 delete events[ type ];
1777 }
1778 }
1779
1780 // Remove the expando if it's no longer used
1781 if ( jQuery.isEmptyObject( events ) ) {
1782 var handle = elemData.handle;
1783 if ( handle ) {
1784 handle.elem = null;
1785 }
1786
1787 delete elemData.events;
1788 delete elemData.handle;
1789
1790 if ( jQuery.isEmptyObject( elemData ) ) {
1791 jQuery.removeData( elem );
1792 }
1793 }
1794 },
1795
1796 // bubbling is internal
1797 trigger: function( event, data, elem /*, bubbling */ ) {
1798 // Event object or event type
1799 var type = event.type || event,
1800 bubbling = arguments[3];
1801
1802 if ( !bubbling ) {
1803 event = typeof event === "object" ?
1804 // jQuery.Event object
1805 event[expando] ? event :
1806 // Object literal
1807 jQuery.extend( jQuery.Event(type), event ) :
1808 // Just the event type (string)
1809 jQuery.Event(type);
1810
1811 if ( type.indexOf("!") >= 0 ) {
1812 event.type = type = type.slice(0, -1);
1813 event.exclusive = true;
1814 }
1815
1816 // Handle a global trigger
1817 if ( !elem ) {
1818 // Don't bubble custom events when global (to avoid too much overhead)
1819 event.stopPropagation();
1820
1821 // Only trigger if we've ever bound an event for it
1822 if ( jQuery.event.global[ type ] ) {
1823 jQuery.each( jQuery.cache, function() {
1824 if ( this.events && this.events[type] ) {
1825 jQuery.event.trigger( event, data, this.handle.elem );
1826 }
1827 });
1828 }
1829 }
1830
1831 // Handle triggering a single element
1832
1833 // don't do events on text and comment nodes
1834 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
1835 return undefined;
1836 }
1837
1838 // Clean up in case it is reused
1839 event.result = undefined;
1840 event.target = elem;
1841
1842 // Clone the incoming data, if any
1843 data = jQuery.makeArray( data );
1844 data.unshift( event );
1845 }
1846
1847 event.currentTarget = elem;
1848
1849 // Trigger the event, it is assumed that "handle" is a function
1850 var handle = jQuery.data( elem, "handle" );
1851 if ( handle ) {
1852 handle.apply( elem, data );
1853 }
1854
1855 var parent = elem.parentNode || elem.ownerDocument;
1856
1857 // Trigger an inline bound script
1858 try {
1859 if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
1860 if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
1861 event.result = false;
1862 }
1863 }
1864
1865 // prevent IE from throwing an error for some elements with some event types, see #3533
1866 } catch (e) {}
1867
1868 if ( !event.isPropagationStopped() && parent ) {
1869 jQuery.event.trigger( event, data, parent, true );
1870
1871 } else if ( !event.isDefaultPrevented() ) {
1872 var target = event.target, old,
1873 isClick = jQuery.nodeName(target, "a") && type === "click",
1874 special = jQuery.event.special[ type ] || {};
1875
1876 if ( (!special._default || special._default.call( elem, event ) === false) &&
1877 !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
1878
1879 try {
1880 if ( target[ type ] ) {
1881 // Make sure that we don't accidentally re-trigger the onFOO events
1882 old = target[ "on" + type ];
1883
1884 if ( old ) {
1885 target[ "on" + type ] = null;
1886 }
1887
1888 jQuery.event.triggered = true;
1889 target[ type ]();
1890 }
1891
1892 // prevent IE from throwing an error for some elements with some event types, see #3533
1893 } catch (e) {}
1894
1895 if ( old ) {
1896 target[ "on" + type ] = old;
1897 }
1898
1899 jQuery.event.triggered = false;
1900 }
1901 }
1902 },
1903
1904 handle: function( event ) {
1905 var all, handlers, namespaces, namespace, events;
1906
1907 event = arguments[0] = jQuery.event.fix( event || window.event );
1908 event.currentTarget = this;
1909
1910 // Namespaced event handlers
1911 all = event.type.indexOf(".") < 0 && !event.exclusive;
1912
1913 if ( !all ) {
1914 namespaces = event.type.split(".");
1915 event.type = namespaces.shift();
1916 namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
1917 }
1918
1919 var events = jQuery.data(this, "events"), handlers = events[ event.type ];
1920
1921 if ( events && handlers ) {
1922 // Clone the handlers to prevent manipulation
1923 handlers = handlers.slice(0);
1924
1925 for ( var j = 0, l = handlers.length; j < l; j++ ) {
1926 var handleObj = handlers[ j ];
1927
1928 // Filter the functions by class
1929 if ( all || namespace.test( handleObj.namespace ) ) {
1930 // Pass in a reference to the handler function itself
1931 // So that we can later remove it
1932 event.handler = handleObj.handler;
1933 event.data = handleObj.data;
1934 event.handleObj = handleObj;
1935
1936 var ret = handleObj.handler.apply( this, arguments );
1937
1938 if ( ret !== undefined ) {
1939 event.result = ret;
1940 if ( ret === false ) {
1941 event.preventDefault();
1942 event.stopPropagation();
1943 }
1944 }
1945
1946 if ( event.isImmediatePropagationStopped() ) {
1947 break;
1948 }
1949 }
1950 }
1951 }
1952
1953 return event.result;
1954 },
1955
1956 props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
1957
1958 fix: function( event ) {
1959 if ( event[ expando ] ) {
1960 return event;
1961 }
1962
1963 // store a copy of the original event object
1964 // and "clone" to set read-only properties
1965 var originalEvent = event;
1966 event = jQuery.Event( originalEvent );
1967
1968 for ( var i = this.props.length, prop; i; ) {
1969 prop = this.props[ --i ];
1970 event[ prop ] = originalEvent[ prop ];
1971 }
1972
1973 // Fix target property, if necessary
1974 if ( !event.target ) {
1975 event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
1976 }
1977
1978 // check if target is a textnode (safari)
1979 if ( event.target.nodeType === 3 ) {
1980 event.target = event.target.parentNode;
1981 }
1982
1983 // Add relatedTarget, if necessary
1984 if ( !event.relatedTarget && event.fromElement ) {
1985 event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
1986 }
1987
1988 // Calculate pageX/Y if missing and clientX/Y available
1989 if ( event.pageX == null && event.clientX != null ) {
1990 var doc = document.documentElement, body = document.body;
1991 event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
1992 event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
1993 }
1994
1995 // Add which for key events
1996 if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
1997 event.which = event.charCode || event.keyCode;
1998 }
1999
2000 // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
2001 if ( !event.metaKey && event.ctrlKey ) {
2002 event.metaKey = event.ctrlKey;
2003 }
2004
2005 // Add which for click: 1 === left; 2 === middle; 3 === right
2006 // Note: button is not normalized, so don't use it
2007 if ( !event.which && event.button !== undefined ) {
2008 event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
2009 }
2010
2011 return event;
2012 },
2013
2014 // Deprecated, use jQuery.guid instead
2015 guid: 1E8,
2016
2017 // Deprecated, use jQuery.proxy instead
2018 proxy: jQuery.proxy,
2019
2020 special: {
2021 ready: {
2022 // Make sure the ready event is setup
2023 setup: jQuery.bindReady,
2024 teardown: jQuery.noop
2025 },
2026
2027 live: {
2028 add: function( handleObj ) {
2029 jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) );
2030 },
2031
2032 remove: function( handleObj ) {
2033 var remove = true,
2034 type = handleObj.origType.replace(rnamespaces, "");
2035
2036 jQuery.each( jQuery.data(this, "events").live || [], function() {
2037 if ( type === this.origType.replace(rnamespaces, "") ) {
2038 remove = false;
2039 return false;
2040 }
2041 });
2042
2043 if ( remove ) {
2044 jQuery.event.remove( this, handleObj.origType, liveHandler );
2045 }
2046 }
2047
2048 },
2049
2050 beforeunload: {
2051 setup: function( data, namespaces, eventHandle ) {
2052 // We only want to do this special case on windows
2053 if ( this.setInterval ) {
2054 this.onbeforeunload = eventHandle;
2055 }
2056
2057 return false;
2058 },
2059 teardown: function( namespaces, eventHandle ) {
2060 if ( this.onbeforeunload === eventHandle ) {
2061 this.onbeforeunload = null;
2062 }
2063 }
2064 }
2065 }
2066};
2067
2068var removeEvent = document.removeEventListener ?
2069 function( elem, type, handle ) {
2070 elem.removeEventListener( type, handle, false );
2071 } :
2072 function( elem, type, handle ) {
2073 elem.detachEvent( "on" + type, handle );
2074 };
2075
2076jQuery.Event = function( src ) {
2077 // Allow instantiation without the 'new' keyword
2078 if ( !this.preventDefault ) {
2079 return new jQuery.Event( src );
2080 }
2081
2082 // Event object
2083 if ( src && src.type ) {
2084 this.originalEvent = src;
2085 this.type = src.type;
2086 // Event type
2087 } else {
2088 this.type = src;
2089 }
2090
2091 // timeStamp is buggy for some events on Firefox(#3843)
2092 // So we won't rely on the native value
2093 this.timeStamp = now();
2094
2095 // Mark it as fixed
2096 this[ expando ] = true;
2097};
2098
2099function returnFalse() {
2100 return false;
2101}
2102function returnTrue() {
2103 return true;
2104}
2105
2106// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
2107// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
2108jQuery.Event.prototype = {
2109 preventDefault: function() {
2110 this.isDefaultPrevented = returnTrue;
2111
2112 var e = this.originalEvent;
2113 if ( !e ) {
2114 return;
2115 }
2116
2117 // if preventDefault exists run it on the original event
2118 if ( e.preventDefault ) {
2119 e.preventDefault();
2120 }
2121 // otherwise set the returnValue property of the original event to false (IE)
2122 e.returnValue = false;
2123 },
2124 stopPropagation: function() {
2125 this.isPropagationStopped = returnTrue;
2126
2127 var e = this.originalEvent;
2128 if ( !e ) {
2129 return;
2130 }
2131 // if stopPropagation exists run it on the original event
2132 if ( e.stopPropagation ) {
2133 e.stopPropagation();
2134 }
2135 // otherwise set the cancelBubble property of the original event to true (IE)
2136 e.cancelBubble = true;
2137 },
2138 stopImmediatePropagation: function() {
2139 this.isImmediatePropagationStopped = returnTrue;
2140 this.stopPropagation();
2141 },
2142 isDefaultPrevented: returnFalse,
2143 isPropagationStopped: returnFalse,
2144 isImmediatePropagationStopped: returnFalse
2145};
2146
2147// Checks if an event happened on an element within another element
2148// Used in jQuery.event.special.mouseenter and mouseleave handlers
2149var withinElement = function( event ) {
2150 // Check if mouse(over|out) are still within the same parent element
2151 var parent = event.relatedTarget;
2152
2153 // Firefox sometimes assigns relatedTarget a XUL element
2154 // which we cannot access the parentNode property of
2155 try {
2156 // Traverse up the tree
2157 while ( parent && parent !== this ) {
2158 parent = parent.parentNode;
2159 }
2160
2161 if ( parent !== this ) {
2162 // set the correct event type
2163 event.type = event.data;
2164
2165 // handle event if we actually just moused on to a non sub-element
2166 jQuery.event.handle.apply( this, arguments );
2167 }
2168
2169 // assuming we've left the element since we most likely mousedover a xul element
2170 } catch(e) { }
2171},
2172
2173// In case of event delegation, we only need to rename the event.type,
2174// liveHandler will take care of the rest.
2175delegate = function( event ) {
2176 event.type = event.data;
2177 jQuery.event.handle.apply( this, arguments );
2178};
2179
2180// Create mouseenter and mouseleave events
2181jQuery.each({
2182 mouseenter: "mouseover",
2183 mouseleave: "mouseout"
2184}, function( orig, fix ) {
2185 jQuery.event.special[ orig ] = {
2186 setup: function( data ) {
2187 jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
2188 },
2189 teardown: function( data ) {
2190 jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
2191 }
2192 };
2193});
2194
2195// submit delegation
2196if ( !jQuery.support.submitBubbles ) {
2197
2198 jQuery.event.special.submit = {
2199 setup: function( data, namespaces ) {
2200 if ( this.nodeName.toLowerCase() !== "form" ) {
2201 jQuery.event.add(this, "click.specialSubmit", function( e ) {
2202 var elem = e.target, type = elem.type;
2203
2204 if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
2205 return trigger( "submit", this, arguments );
2206 }
2207 });
2208
2209 jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
2210 var elem = e.target, type = elem.type;
2211
2212 if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
2213 return trigger( "submit", this, arguments );
2214 }
2215 });
2216
2217 } else {
2218 return false;
2219 }
2220 },
2221
2222 teardown: function( namespaces ) {
2223 jQuery.event.remove( this, ".specialSubmit" );
2224 }
2225 };
2226
2227}
2228
2229// change delegation, happens here so we have bind.
2230if ( !jQuery.support.changeBubbles ) {
2231
2232 var formElems = /textarea|input|select/i,
2233
2234 changeFilters,
2235
2236 getVal = function( elem ) {
2237 var type = elem.type, val = elem.value;
2238
2239 if ( type === "radio" || type === "checkbox" ) {
2240 val = elem.checked;
2241
2242 } else if ( type === "select-multiple" ) {
2243 val = elem.selectedIndex > -1 ?
2244 jQuery.map( elem.options, function( elem ) {
2245 return elem.selected;
2246 }).join("-") :
2247 "";
2248
2249 } else if ( elem.nodeName.toLowerCase() === "select" ) {
2250 val = elem.selectedIndex;
2251 }
2252
2253 return val;
2254 },
2255
2256 testChange = function testChange( e ) {
2257 var elem = e.target, data, val;
2258
2259 if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
2260 return;
2261 }
2262
2263 data = jQuery.data( elem, "_change_data" );
2264 val = getVal(elem);
2265
2266 // the current data will be also retrieved by beforeactivate
2267 if ( e.type !== "focusout" || elem.type !== "radio" ) {
2268 jQuery.data( elem, "_change_data", val );
2269 }
2270
2271 if ( data === undefined || val === data ) {
2272 return;
2273 }
2274
2275 if ( data != null || val ) {
2276 e.type = "change";
2277 return jQuery.event.trigger( e, arguments[1], elem );
2278 }
2279 };
2280
2281 jQuery.event.special.change = {
2282 filters: {
2283 focusout: testChange,
2284
2285 click: function( e ) {
2286 var elem = e.target, type = elem.type;
2287
2288 if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
2289 return testChange.call( this, e );
2290 }
2291 },
2292
2293 // Change has to be called before submit
2294 // Keydown will be called before keypress, which is used in submit-event delegation
2295 keydown: function( e ) {
2296 var elem = e.target, type = elem.type;
2297
2298 if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
2299 (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
2300 type === "select-multiple" ) {
2301 return testChange.call( this, e );
2302 }
2303 },
2304
2305 // Beforeactivate happens also before the previous element is blurred
2306 // with this event you can't trigger a change event, but you can store
2307 // information/focus[in] is not needed anymore
2308 beforeactivate: function( e ) {
2309 var elem = e.target;
2310 jQuery.data( elem, "_change_data", getVal(elem) );
2311 }
2312 },
2313
2314 setup: function( data, namespaces ) {
2315 if ( this.type === "file" ) {
2316 return false;
2317 }
2318
2319 for ( var type in changeFilters ) {
2320 jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
2321 }
2322
2323 return formElems.test( this.nodeName );
2324 },
2325
2326 teardown: function( namespaces ) {
2327 jQuery.event.remove( this, ".specialChange" );
2328
2329 return formElems.test( this.nodeName );
2330 }
2331 };
2332
2333 changeFilters = jQuery.event.special.change.filters;
2334}
2335
2336function trigger( type, elem, args ) {
2337 args[0].type = type;
2338 return jQuery.event.handle.apply( elem, args );
2339}
2340
2341// Create "bubbling" focus and blur events
2342if ( document.addEventListener ) {
2343 jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
2344 jQuery.event.special[ fix ] = {
2345 setup: function() {
2346 this.addEventListener( orig, handler, true );
2347 },
2348 teardown: function() {
2349 this.removeEventListener( orig, handler, true );
2350 }
2351 };
2352
2353 function handler( e ) {
2354 e = jQuery.event.fix( e );
2355 e.type = fix;
2356 return jQuery.event.handle.call( this, e );
2357 }
2358 });
2359}
2360
2361jQuery.each(["bind", "one"], function( i, name ) {
2362 jQuery.fn[ name ] = function( type, data, fn ) {
2363 // Handle object literals
2364 if ( typeof type === "object" ) {
2365 for ( var key in type ) {
2366 this[ name ](key, data, type[key], fn);
2367 }
2368 return this;
2369 }
2370
2371 if ( jQuery.isFunction( data ) ) {
2372 fn = data;
2373 data = undefined;
2374 }
2375
2376 var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
2377 jQuery( this ).unbind( event, handler );
2378 return fn.apply( this, arguments );
2379 }) : fn;
2380
2381 if ( type === "unload" && name !== "one" ) {
2382 this.one( type, data, fn );
2383
2384 } else {
2385 for ( var i = 0, l = this.length; i < l; i++ ) {
2386 jQuery.event.add( this[i], type, handler, data );
2387 }
2388 }
2389
2390 return this;
2391 };
2392});
2393
2394jQuery.fn.extend({
2395 unbind: function( type, fn ) {
2396 // Handle object literals
2397 if ( typeof type === "object" && !type.preventDefault ) {
2398 for ( var key in type ) {
2399 this.unbind(key, type[key]);
2400 }
2401
2402 } else {
2403 for ( var i = 0, l = this.length; i < l; i++ ) {
2404 jQuery.event.remove( this[i], type, fn );
2405 }
2406 }
2407
2408 return this;
2409 },
2410
2411 delegate: function( selector, types, data, fn ) {
2412 return this.live( types, data, fn, selector );
2413 },
2414
2415 undelegate: function( selector, types, fn ) {
2416 if ( arguments.length === 0 ) {
2417 return this.unbind( "live" );
2418
2419 } else {
2420 return this.die( types, null, fn, selector );
2421 }
2422 },
2423
2424 trigger: function( type, data ) {
2425 return this.each(function() {
2426 jQuery.event.trigger( type, data, this );
2427 });
2428 },
2429
2430 triggerHandler: function( type, data ) {
2431 if ( this[0] ) {
2432 var event = jQuery.Event( type );
2433 event.preventDefault();
2434 event.stopPropagation();
2435 jQuery.event.trigger( event, data, this[0] );
2436 return event.result;
2437 }
2438 },
2439
2440 toggle: function( fn ) {
2441 // Save reference to arguments for access in closure
2442 var args = arguments, i = 1;
2443
2444 // link all the functions, so any of them can unbind this click handler
2445 while ( i < args.length ) {
2446 jQuery.proxy( fn, args[ i++ ] );
2447 }
2448
2449 return this.click( jQuery.proxy( fn, function( event ) {
2450 // Figure out which function to execute
2451 var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
2452 jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
2453
2454 // Make sure that clicks stop
2455 event.preventDefault();
2456
2457 // and execute the function
2458 return args[ lastToggle ].apply( this, arguments ) || false;
2459 }));
2460 },
2461
2462 hover: function( fnOver, fnOut ) {
2463 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
2464 }
2465});
2466
2467var liveMap = {
2468 focus: "focusin",
2469 blur: "focusout",
2470 mouseenter: "mouseover",
2471 mouseleave: "mouseout"
2472};
2473
2474jQuery.each(["live", "die"], function( i, name ) {
2475 jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
2476 var type, i = 0, match, namespaces, preType,
2477 selector = origSelector || this.selector,
2478 context = origSelector ? this : jQuery( this.context );
2479
2480 if ( jQuery.isFunction( data ) ) {
2481 fn = data;
2482 data = undefined;
2483 }
2484
2485 types = (types || "").split(" ");
2486
2487 while ( (type = types[ i++ ]) != null ) {
2488 match = rnamespaces.exec( type );
2489 namespaces = "";
2490
2491 if ( match ) {
2492 namespaces = match[0];
2493 type = type.replace( rnamespaces, "" );
2494 }
2495
2496 if ( type === "hover" ) {
2497 types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
2498 continue;
2499 }
2500
2501 preType = type;
2502
2503 if ( type === "focus" || type === "blur" ) {
2504 types.push( liveMap[ type ] + namespaces );
2505 type = type + namespaces;
2506
2507 } else {
2508 type = (liveMap[ type ] || type) + namespaces;
2509 }
2510
2511 if ( name === "live" ) {
2512 // bind live handler
2513 context.each(function(){
2514 jQuery.event.add( this, liveConvert( type, selector ),
2515 { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
2516 });
2517
2518 } else {
2519 // unbind live handler
2520 context.unbind( liveConvert( type, selector ), fn );
2521 }
2522 }
2523
2524 return this;
2525 }
2526});
2527
2528function liveHandler( event ) {
2529 var stop, elems = [], selectors = [], args = arguments,
2530 related, match, handleObj, elem, j, i, l, data,
2531 events = jQuery.data( this, "events" );
2532
2533 // Make sure we avoid non-left-click bubbling in Firefox (#3861)
2534 if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
2535 return;
2536 }
2537
2538 event.liveFired = this;
2539
2540 var live = events.live.slice(0);
2541
2542 for ( j = 0; j < live.length; j++ ) {
2543 handleObj = live[j];
2544
2545 if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
2546 selectors.push( handleObj.selector );
2547
2548 } else {
2549 live.splice( j--, 1 );
2550 }
2551 }
2552
2553 match = jQuery( event.target ).closest( selectors, event.currentTarget );
2554
2555 for ( i = 0, l = match.length; i < l; i++ ) {
2556 for ( j = 0; j < live.length; j++ ) {
2557 handleObj = live[j];
2558
2559 if ( match[i].selector === handleObj.selector ) {
2560 elem = match[i].elem;
2561 related = null;
2562
2563 // Those two events require additional checking
2564 if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
2565 related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
2566 }
2567
2568 if ( !related || related !== elem ) {
2569 elems.push({ elem: elem, handleObj: handleObj });
2570 }
2571 }
2572 }
2573 }
2574
2575 for ( i = 0, l = elems.length; i < l; i++ ) {
2576 match = elems[i];
2577 event.currentTarget = match.elem;
2578 event.data = match.handleObj.data;
2579 event.handleObj = match.handleObj;
2580
2581 if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {
2582 stop = false;
2583 break;
2584 }
2585 }
2586
2587 return stop;
2588}
2589
2590function liveConvert( type, selector ) {
2591 return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
2592}
2593
2594jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
2595 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
2596 "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
2597
2598 // Handle event binding
2599 jQuery.fn[ name ] = function( fn ) {
2600 return fn ? this.bind( name, fn ) : this.trigger( name );
2601 };
2602
2603 if ( jQuery.attrFn ) {
2604 jQuery.attrFn[ name ] = true;
2605 }
2606});
2607
2608// Prevent memory leaks in IE
2609// Window isn't included so as not to unbind existing unload events
2610// More info:
2611// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
2612if ( window.attachEvent && !window.addEventListener ) {
2613 window.attachEvent("onunload", function() {
2614 for ( var id in jQuery.cache ) {
2615 if ( jQuery.cache[ id ].handle ) {
2616 // Try/Catch is to handle iframes being unloaded, see #4280
2617 try {
2618 jQuery.event.remove( jQuery.cache[ id ].handle.elem );
2619 } catch(e) {}
2620 }
2621 }
2622 });
2623}
2624/*!
2625 * Sizzle CSS Selector Engine - v1.0
2626 * Copyright 2009, The Dojo Foundation
2627 * Released under the MIT, BSD, and GPL Licenses.
2628 * More information: http://sizzlejs.com/
2629 */
2630(function(){
2631
2632var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
2633 done = 0,
2634 toString = Object.prototype.toString,
2635 hasDuplicate = false,
2636 baseHasDuplicate = true;
2637
2638// Here we check if the JavaScript engine is using some sort of
2639// optimization where it does not always call our comparision
2640// function. If that is the case, discard the hasDuplicate value.
2641// Thus far that includes Google Chrome.
2642[0, 0].sort(function(){
2643 baseHasDuplicate = false;
2644 return 0;
2645});
2646
2647var Sizzle = function(selector, context, results, seed) {
2648 results = results || [];
2649 var origContext = context = context || document;
2650
2651 if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
2652 return [];
2653 }
2654
2655 if ( !selector || typeof selector !== "string" ) {
2656 return results;
2657 }
2658
2659 var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
2660 soFar = selector;
2661
2662 // Reset the position of the chunker regexp (start from head)
2663 while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
2664 soFar = m[3];
2665
2666 parts.push( m[1] );
2667
2668 if ( m[2] ) {
2669 extra = m[3];
2670 break;
2671 }
2672 }
2673
2674 if ( parts.length > 1 && origPOS.exec( selector ) ) {
2675 if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
2676 set = posProcess( parts[0] + parts[1], context );
2677 } else {
2678 set = Expr.relative[ parts[0] ] ?
2679 [ context ] :
2680 Sizzle( parts.shift(), context );
2681
2682 while ( parts.length ) {
2683 selector = parts.shift();
2684
2685 if ( Expr.relative[ selector ] ) {
2686 selector += parts.shift();
2687 }
2688
2689 set = posProcess( selector, set );
2690 }
2691 }
2692 } else {
2693 // Take a shortcut and set the context if the root selector is an ID
2694 // (but not if it'll be faster if the inner selector is an ID)
2695 if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
2696 Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
2697 var ret = Sizzle.find( parts.shift(), context, contextXML );
2698 context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
2699 }
2700
2701 if ( context ) {
2702 var ret = seed ?
2703 { expr: parts.pop(), set: makeArray(seed) } :
2704 Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
2705 set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
2706
2707 if ( parts.length > 0 ) {
2708 checkSet = makeArray(set);
2709 } else {
2710 prune = false;
2711 }
2712
2713 while ( parts.length ) {
2714 var cur = parts.pop(), pop = cur;
2715
2716 if ( !Expr.relative[ cur ] ) {
2717 cur = "";
2718 } else {
2719 pop = parts.pop();
2720 }
2721
2722 if ( pop == null ) {
2723 pop = context;
2724 }
2725
2726 Expr.relative[ cur ]( checkSet, pop, contextXML );
2727 }
2728 } else {
2729 checkSet = parts = [];
2730 }
2731 }
2732
2733 if ( !checkSet ) {
2734 checkSet = set;
2735 }
2736
2737 if ( !checkSet ) {
2738 Sizzle.error( cur || selector );
2739 }
2740
2741 if ( toString.call(checkSet) === "[object Array]" ) {
2742 if ( !prune ) {
2743 results.push.apply( results, checkSet );
2744 } else if ( context && context.nodeType === 1 ) {
2745 for ( var i = 0; checkSet[i] != null; i++ ) {
2746 if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
2747 results.push( set[i] );
2748 }
2749 }
2750 } else {
2751 for ( var i = 0; checkSet[i] != null; i++ ) {
2752 if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
2753 results.push( set[i] );
2754 }
2755 }
2756 }
2757 } else {
2758 makeArray( checkSet, results );
2759 }
2760
2761 if ( extra ) {
2762 Sizzle( extra, origContext, results, seed );
2763 Sizzle.uniqueSort( results );
2764 }
2765
2766 return results;
2767};
2768
2769Sizzle.uniqueSort = function(results){
2770 if ( sortOrder ) {
2771 hasDuplicate = baseHasDuplicate;
2772 results.sort(sortOrder);
2773
2774 if ( hasDuplicate ) {
2775 for ( var i = 1; i < results.length; i++ ) {
2776 if ( results[i] === results[i-1] ) {
2777 results.splice(i--, 1);
2778 }
2779 }
2780 }
2781 }
2782
2783 return results;
2784};
2785
2786Sizzle.matches = function(expr, set){
2787 return Sizzle(expr, null, null, set);
2788};
2789
2790Sizzle.find = function(expr, context, isXML){
2791 var set, match;
2792
2793 if ( !expr ) {
2794 return [];
2795 }
2796
2797 for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
2798 var type = Expr.order[i], match;
2799
2800 if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
2801 var left = match[1];
2802 match.splice(1,1);
2803
2804 if ( left.substr( left.length - 1 ) !== "\\" ) {
2805 match[1] = (match[1] || "").replace(/\\/g, "");
2806 set = Expr.find[ type ]( match, context, isXML );
2807 if ( set != null ) {
2808 expr = expr.replace( Expr.match[ type ], "" );
2809 break;
2810 }
2811 }
2812 }
2813 }
2814
2815 if ( !set ) {
2816 set = context.getElementsByTagName("*");
2817 }
2818
2819 return {set: set, expr: expr};
2820};
2821
2822Sizzle.filter = function(expr, set, inplace, not){
2823 var old = expr, result = [], curLoop = set, match, anyFound,
2824 isXMLFilter = set && set[0] && isXML(set[0]);
2825
2826 while ( expr && set.length ) {
2827 for ( var type in Expr.filter ) {
2828 if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
2829 var filter = Expr.filter[ type ], found, item, left = match[1];
2830 anyFound = false;
2831
2832 match.splice(1,1);
2833
2834 if ( left.substr( left.length - 1 ) === "\\" ) {
2835 continue;
2836 }
2837
2838 if ( curLoop === result ) {
2839 result = [];
2840 }
2841
2842 if ( Expr.preFilter[ type ] ) {
2843 match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
2844
2845 if ( !match ) {
2846 anyFound = found = true;
2847 } else if ( match === true ) {
2848 continue;
2849 }
2850 }
2851
2852 if ( match ) {
2853 for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
2854 if ( item ) {
2855 found = filter( item, match, i, curLoop );
2856 var pass = not ^ !!found;
2857
2858 if ( inplace && found != null ) {
2859 if ( pass ) {
2860 anyFound = true;
2861 } else {
2862 curLoop[i] = false;
2863 }
2864 } else if ( pass ) {
2865 result.push( item );
2866 anyFound = true;
2867 }
2868 }
2869 }
2870 }
2871
2872 if ( found !== undefined ) {
2873 if ( !inplace ) {
2874 curLoop = result;
2875 }
2876
2877 expr = expr.replace( Expr.match[ type ], "" );
2878
2879 if ( !anyFound ) {
2880 return [];
2881 }
2882
2883 break;
2884 }
2885 }
2886 }
2887
2888 // Improper expression
2889 if ( expr === old ) {
2890 if ( anyFound == null ) {
2891 Sizzle.error( expr );
2892 } else {
2893 break;
2894 }
2895 }
2896
2897 old = expr;
2898 }
2899
2900 return curLoop;
2901};
2902
2903Sizzle.error = function( msg ) {
2904 throw "Syntax error, unrecognized expression: " + msg;
2905};
2906
2907var Expr = Sizzle.selectors = {
2908 order: [ "ID", "NAME", "TAG" ],
2909 match: {
2910 ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
2911 CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
2912 NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
2913 ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
2914 TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
2915 CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
2916 POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
2917 PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
2918 },
2919 leftMatch: {},
2920 attrMap: {
2921 "class": "className",
2922 "for": "htmlFor"
2923 },
2924 attrHandle: {
2925 href: function(elem){
2926 return elem.getAttribute("href");
2927 }
2928 },
2929 relative: {
2930 "+": function(checkSet, part){
2931 var isPartStr = typeof part === "string",
2932 isTag = isPartStr && !/\W/.test(part),
2933 isPartStrNotTag = isPartStr && !isTag;
2934
2935 if ( isTag ) {
2936 part = part.toLowerCase();
2937 }
2938
2939 for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
2940 if ( (elem = checkSet[i]) ) {
2941 while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
2942
2943 checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
2944 elem || false :
2945 elem === part;
2946 }
2947 }
2948
2949 if ( isPartStrNotTag ) {
2950 Sizzle.filter( part, checkSet, true );
2951 }
2952 },
2953 ">": function(checkSet, part){
2954 var isPartStr = typeof part === "string";
2955
2956 if ( isPartStr && !/\W/.test(part) ) {
2957 part = part.toLowerCase();
2958
2959 for ( var i = 0, l = checkSet.length; i < l; i++ ) {
2960 var elem = checkSet[i];
2961 if ( elem ) {
2962 var parent = elem.parentNode;
2963 checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
2964 }
2965 }
2966 } else {
2967 for ( var i = 0, l = checkSet.length; i < l; i++ ) {
2968 var elem = checkSet[i];
2969 if ( elem ) {
2970 checkSet[i] = isPartStr ?
2971 elem.parentNode :
2972 elem.parentNode === part;
2973 }
2974 }
2975
2976 if ( isPartStr ) {
2977 Sizzle.filter( part, checkSet, true );
2978 }
2979 }
2980 },
2981 "": function(checkSet, part, isXML){
2982 var doneName = done++, checkFn = dirCheck;
2983
2984 if ( typeof part === "string" && !/\W/.test(part) ) {
2985 var nodeCheck = part = part.toLowerCase();
2986 checkFn = dirNodeCheck;
2987 }
2988
2989 checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
2990 },
2991 "~": function(checkSet, part, isXML){
2992 var doneName = done++, checkFn = dirCheck;
2993
2994 if ( typeof part === "string" && !/\W/.test(part) ) {
2995 var nodeCheck = part = part.toLowerCase();
2996 checkFn = dirNodeCheck;
2997 }
2998
2999 checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
3000 }
3001 },
3002 find: {
3003 ID: function(match, context, isXML){
3004 if ( typeof context.getElementById !== "undefined" && !isXML ) {
3005 var m = context.getElementById(match[1]);
3006 return m ? [m] : [];
3007 }
3008 },
3009 NAME: function(match, context){
3010 if ( typeof context.getElementsByName !== "undefined" ) {
3011 var ret = [], results = context.getElementsByName(match[1]);
3012
3013 for ( var i = 0, l = results.length; i < l; i++ ) {
3014 if ( results[i].getAttribute("name") === match[1] ) {
3015 ret.push( results[i] );
3016 }
3017 }
3018
3019 return ret.length === 0 ? null : ret;
3020 }
3021 },
3022 TAG: function(match, context){
3023 return context.getElementsByTagName(match[1]);
3024 }
3025 },
3026 preFilter: {
3027 CLASS: function(match, curLoop, inplace, result, not, isXML){
3028 match = " " + match[1].replace(/\\/g, "") + " ";
3029
3030 if ( isXML ) {
3031 return match;
3032 }
3033
3034 for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
3035 if ( elem ) {
3036 if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
3037 if ( !inplace ) {
3038 result.push( elem );
3039 }
3040 } else if ( inplace ) {
3041 curLoop[i] = false;
3042 }
3043 }
3044 }
3045
3046 return false;
3047 },
3048 ID: function(match){
3049 return match[1].replace(/\\/g, "");
3050 },
3051 TAG: function(match, curLoop){
3052 return match[1].toLowerCase();
3053 },
3054 CHILD: function(match){
3055 if ( match[1] === "nth" ) {
3056 // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
3057 var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
3058 match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
3059 !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
3060
3061 // calculate the numbers (first)n+(last) including if they are negative
3062 match[2] = (test[1] + (test[2] || 1)) - 0;
3063 match[3] = test[3] - 0;
3064 }
3065
3066 // TODO: Move to normal caching system
3067 match[0] = done++;
3068
3069 return match;
3070 },
3071 ATTR: function(match, curLoop, inplace, result, not, isXML){
3072 var name = match[1].replace(/\\/g, "");
3073
3074 if ( !isXML && Expr.attrMap[name] ) {
3075 match[1] = Expr.attrMap[name];
3076 }
3077
3078 if ( match[2] === "~=" ) {
3079 match[4] = " " + match[4] + " ";
3080 }
3081
3082 return match;
3083 },
3084 PSEUDO: function(match, curLoop, inplace, result, not){
3085 if ( match[1] === "not" ) {
3086 // If we're dealing with a complex expression, or a simple one
3087 if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
3088 match[3] = Sizzle(match[3], null, null, curLoop);
3089 } else {
3090 var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
3091 if ( !inplace ) {
3092 result.push.apply( result, ret );
3093 }
3094 return false;
3095 }
3096 } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
3097 return true;
3098 }
3099
3100 return match;
3101 },
3102 POS: function(match){
3103 match.unshift( true );
3104 return match;
3105 }
3106 },
3107 filters: {
3108 enabled: function(elem){
3109 return elem.disabled === false && elem.type !== "hidden";
3110 },
3111 disabled: function(elem){
3112 return elem.disabled === true;
3113 },
3114 checked: function(elem){
3115 return elem.checked === true;
3116 },
3117 selected: function(elem){
3118 // Accessing this property makes selected-by-default
3119 // options in Safari work properly
3120 elem.parentNode.selectedIndex;
3121 return elem.selected === true;
3122 },
3123 parent: function(elem){
3124 return !!elem.firstChild;
3125 },
3126 empty: function(elem){
3127 return !elem.firstChild;
3128 },
3129 has: function(elem, i, match){
3130 return !!Sizzle( match[3], elem ).length;
3131 },
3132 header: function(elem){
3133 return /h\d/i.test( elem.nodeName );
3134 },
3135 text: function(elem){
3136 return "text" === elem.type;
3137 },
3138 radio: function(elem){
3139 return "radio" === elem.type;
3140 },
3141 checkbox: function(elem){
3142 return "checkbox" === elem.type;
3143 },
3144 file: function(elem){
3145 return "file" === elem.type;
3146 },
3147 password: function(elem){
3148 return "password" === elem.type;
3149 },
3150 submit: function(elem){
3151 return "submit" === elem.type;
3152 },
3153 image: function(elem){
3154 return "image" === elem.type;
3155 },
3156 reset: function(elem){
3157 return "reset" === elem.type;
3158 },
3159 button: function(elem){
3160 return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
3161 },
3162 input: function(elem){
3163 return /input|select|textarea|button/i.test(elem.nodeName);
3164 }
3165 },
3166 setFilters: {
3167 first: function(elem, i){
3168 return i === 0;
3169 },
3170 last: function(elem, i, match, array){
3171 return i === array.length - 1;
3172 },
3173 even: function(elem, i){
3174 return i % 2 === 0;
3175 },
3176 odd: function(elem, i){
3177 return i % 2 === 1;
3178 },
3179 lt: function(elem, i, match){
3180 return i < match[3] - 0;
3181 },
3182 gt: function(elem, i, match){
3183 return i > match[3] - 0;
3184 },
3185 nth: function(elem, i, match){
3186 return match[3] - 0 === i;
3187 },
3188 eq: function(elem, i, match){
3189 return match[3] - 0 === i;
3190 }
3191 },
3192 filter: {
3193 PSEUDO: function(elem, match, i, array){
3194 var name = match[1], filter = Expr.filters[ name ];
3195
3196 if ( filter ) {
3197 return filter( elem, i, match, array );
3198 } else if ( name === "contains" ) {
3199 return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
3200 } else if ( name === "not" ) {
3201 var not = match[3];
3202
3203 for ( var i = 0, l = not.length; i < l; i++ ) {
3204 if ( not[i] === elem ) {
3205 return false;
3206 }
3207 }
3208
3209 return true;
3210 } else {
3211 Sizzle.error( "Syntax error, unrecognized expression: " + name );
3212 }
3213 },
3214 CHILD: function(elem, match){
3215 var type = match[1], node = elem;
3216 switch (type) {
3217 case 'only':
3218 case 'first':
3219 while ( (node = node.previousSibling) ) {
3220 if ( node.nodeType === 1 ) {
3221 return false;
3222 }
3223 }
3224 if ( type === "first" ) {
3225 return true;
3226 }
3227 node = elem;
3228 case 'last':
3229 while ( (node = node.nextSibling) ) {
3230 if ( node.nodeType === 1 ) {
3231 return false;
3232 }
3233 }
3234 return true;
3235 case 'nth':
3236 var first = match[2], last = match[3];
3237
3238 if ( first === 1 && last === 0 ) {
3239 return true;
3240 }
3241
3242 var doneName = match[0],
3243 parent = elem.parentNode;
3244
3245 if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
3246 var count = 0;
3247 for ( node = parent.firstChild; node; node = node.nextSibling ) {
3248 if ( node.nodeType === 1 ) {
3249 node.nodeIndex = ++count;
3250 }
3251 }
3252 parent.sizcache = doneName;
3253 }
3254
3255 var diff = elem.nodeIndex - last;
3256 if ( first === 0 ) {
3257 return diff === 0;
3258 } else {
3259 return ( diff % first === 0 && diff / first >= 0 );
3260 }
3261 }
3262 },
3263 ID: function(elem, match){
3264 return elem.nodeType === 1 && elem.getAttribute("id") === match;
3265 },
3266 TAG: function(elem, match){
3267 return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
3268 },
3269 CLASS: function(elem, match){
3270 return (" " + (elem.className || elem.getAttribute("class")) + " ")
3271 .indexOf( match ) > -1;
3272 },
3273 ATTR: function(elem, match){
3274 var name = match[1],
3275 result = Expr.attrHandle[ name ] ?
3276 Expr.attrHandle[ name ]( elem ) :
3277 elem[ name ] != null ?
3278 elem[ name ] :
3279 elem.getAttribute( name ),
3280 value = result + "",
3281 type = match[2],
3282 check = match[4];
3283
3284 return result == null ?
3285 type === "!=" :
3286 type === "=" ?
3287 value === check :
3288 type === "*=" ?
3289 value.indexOf(check) >= 0 :
3290 type === "~=" ?
3291 (" " + value + " ").indexOf(check) >= 0 :
3292 !check ?
3293 value && result !== false :
3294 type === "!=" ?
3295 value !== check :
3296 type === "^=" ?
3297 value.indexOf(check) === 0 :
3298 type === "$=" ?
3299 value.substr(value.length - check.length) === check :
3300 type === "|=" ?
3301 value === check || value.substr(0, check.length + 1) === check + "-" :
3302 false;
3303 },
3304 POS: function(elem, match, i, array){
3305 var name = match[2], filter = Expr.setFilters[ name ];
3306
3307 if ( filter ) {
3308 return filter( elem, i, match, array );
3309 }
3310 }
3311 }
3312};
3313
3314var origPOS = Expr.match.POS;
3315
3316for ( var type in Expr.match ) {
3317 Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
3318 Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
3319 return "\\" + (num - 0 + 1);
3320 }));
3321}
3322
3323var makeArray = function(array, results) {
3324 array = Array.prototype.slice.call( array, 0 );
3325
3326 if ( results ) {
3327 results.push.apply( results, array );
3328 return results;
3329 }
3330
3331 return array;
3332};
3333
3334// Perform a simple check to determine if the browser is capable of
3335// converting a NodeList to an array using builtin methods.
3336// Also verifies that the returned array holds DOM nodes
3337// (which is not the case in the Blackberry browser)
3338try {
3339 Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
3340
3341// Provide a fallback method if it does not work
3342} catch(e){
3343 makeArray = function(array, results) {
3344 var ret = results || [];
3345
3346 if ( toString.call(array) === "[object Array]" ) {
3347 Array.prototype.push.apply( ret, array );
3348 } else {
3349 if ( typeof array.length === "number" ) {
3350 for ( var i = 0, l = array.length; i < l; i++ ) {
3351 ret.push( array[i] );
3352 }
3353 } else {
3354 for ( var i = 0; array[i]; i++ ) {
3355 ret.push( array[i] );
3356 }
3357 }
3358 }
3359
3360 return ret;
3361 };
3362}
3363
3364var sortOrder;
3365
3366if ( document.documentElement.compareDocumentPosition ) {
3367 sortOrder = function( a, b ) {
3368 if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
3369 if ( a == b ) {
3370 hasDuplicate = true;
3371 }
3372 return a.compareDocumentPosition ? -1 : 1;
3373 }
3374
3375 var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
3376 if ( ret === 0 ) {
3377 hasDuplicate = true;
3378 }
3379 return ret;
3380 };
3381} else if ( "sourceIndex" in document.documentElement ) {
3382 sortOrder = function( a, b ) {
3383 if ( !a.sourceIndex || !b.sourceIndex ) {
3384 if ( a == b ) {
3385 hasDuplicate = true;
3386 }
3387 return a.sourceIndex ? -1 : 1;
3388 }
3389
3390 var ret = a.sourceIndex - b.sourceIndex;
3391 if ( ret === 0 ) {
3392 hasDuplicate = true;
3393 }
3394 return ret;
3395 };
3396} else if ( document.createRange ) {
3397 sortOrder = function( a, b ) {
3398 if ( !a.ownerDocument || !b.ownerDocument ) {
3399 if ( a == b ) {
3400 hasDuplicate = true;
3401 }
3402 return a.ownerDocument ? -1 : 1;
3403 }
3404
3405 var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
3406 aRange.setStart(a, 0);
3407 aRange.setEnd(a, 0);
3408 bRange.setStart(b, 0);
3409 bRange.setEnd(b, 0);
3410 var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
3411 if ( ret === 0 ) {
3412 hasDuplicate = true;
3413 }
3414 return ret;
3415 };
3416}
3417
3418// Utility function for retreiving the text value of an array of DOM nodes
3419function getText( elems ) {
3420 var ret = "", elem;
3421
3422 for ( var i = 0; elems[i]; i++ ) {
3423 elem = elems[i];
3424
3425 // Get the text from text nodes and CDATA nodes
3426 if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
3427 ret += elem.nodeValue;
3428
3429 // Traverse everything else, except comment nodes
3430 } else if ( elem.nodeType !== 8 ) {
3431 ret += getText( elem.childNodes );
3432 }
3433 }
3434
3435 return ret;
3436}
3437
3438// Check to see if the browser returns elements by name when
3439// querying by getElementById (and provide a workaround)
3440(function(){
3441 // We're going to inject a fake input element with a specified name
3442 var form = document.createElement("div"),
3443 id = "script" + (new Date).getTime();
3444 form.innerHTML = "<a name='" + id + "'/>";
3445
3446 // Inject it into the root element, check its status, and remove it quickly
3447 var root = document.documentElement;
3448 root.insertBefore( form, root.firstChild );
3449
3450 // The workaround has to do additional checks after a getElementById
3451 // Which slows things down for other browsers (hence the branching)
3452 if ( document.getElementById( id ) ) {
3453 Expr.find.ID = function(match, context, isXML){
3454 if ( typeof context.getElementById !== "undefined" && !isXML ) {
3455 var m = context.getElementById(match[1]);
3456 return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
3457 }
3458 };
3459
3460 Expr.filter.ID = function(elem, match){
3461 var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
3462 return elem.nodeType === 1 && node && node.nodeValue === match;
3463 };
3464 }
3465
3466 root.removeChild( form );
3467 root = form = null; // release memory in IE
3468})();
3469
3470(function(){
3471 // Check to see if the browser returns only elements
3472 // when doing getElementsByTagName("*")
3473
3474 // Create a fake element
3475 var div = document.createElement("div");
3476 div.appendChild( document.createComment("") );
3477
3478 // Make sure no comments are found
3479 if ( div.getElementsByTagName("*").length > 0 ) {
3480 Expr.find.TAG = function(match, context){
3481 var results = context.getElementsByTagName(match[1]);
3482
3483 // Filter out possible comments
3484 if ( match[1] === "*" ) {
3485 var tmp = [];
3486
3487 for ( var i = 0; results[i]; i++ ) {
3488 if ( results[i].nodeType === 1 ) {
3489 tmp.push( results[i] );
3490 }
3491 }
3492
3493 results = tmp;
3494 }
3495
3496 return results;
3497 };
3498 }
3499
3500 // Check to see if an attribute returns normalized href attributes
3501 div.innerHTML = "<a href='#'></a>";
3502 if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
3503 div.firstChild.getAttribute("href") !== "#" ) {
3504 Expr.attrHandle.href = function(elem){
3505 return elem.getAttribute("href", 2);
3506 };
3507 }
3508
3509 div = null; // release memory in IE
3510})();
3511
3512if ( document.querySelectorAll ) {
3513 (function(){
3514 var oldSizzle = Sizzle, div = document.createElement("div");
3515 div.innerHTML = "<p class='TEST'></p>";
3516
3517 // Safari can't handle uppercase or unicode characters when
3518 // in quirks mode.
3519 if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
3520 return;
3521 }
3522
3523 Sizzle = function(query, context, extra, seed){
3524 context = context || document;
3525
3526 // Only use querySelectorAll on non-XML documents
3527 // (ID selectors don't work in non-HTML documents)
3528 if ( !seed && context.nodeType === 9 && !isXML(context) ) {
3529 try {
3530 return makeArray( context.querySelectorAll(query), extra );
3531 } catch(e){}
3532 }
3533
3534 return oldSizzle(query, context, extra, seed);
3535 };
3536
3537 for ( var prop in oldSizzle ) {
3538 Sizzle[ prop ] = oldSizzle[ prop ];
3539 }
3540
3541 div = null; // release memory in IE
3542 })();
3543}
3544
3545(function(){
3546 var div = document.createElement("div");
3547
3548 div.innerHTML = "<div class='test e'></div><div class='test'></div>";
3549
3550 // Opera can't find a second classname (in 9.6)
3551 // Also, make sure that getElementsByClassName actually exists
3552 if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
3553 return;
3554 }
3555
3556 // Safari caches class attributes, doesn't catch changes (in 3.2)
3557 div.lastChild.className = "e";
3558
3559 if ( div.getElementsByClassName("e").length === 1 ) {
3560 return;
3561 }
3562
3563 Expr.order.splice(1, 0, "CLASS");
3564 Expr.find.CLASS = function(match, context, isXML) {
3565 if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
3566 return context.getElementsByClassName(match[1]);
3567 }
3568 };
3569
3570 div = null; // release memory in IE
3571})();
3572
3573function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
3574 for ( var i = 0, l = checkSet.length; i < l; i++ ) {
3575 var elem = checkSet[i];
3576 if ( elem ) {
3577 elem = elem[dir];
3578 var match = false;
3579
3580 while ( elem ) {
3581 if ( elem.sizcache === doneName ) {
3582 match = checkSet[elem.sizset];
3583 break;
3584 }
3585
3586 if ( elem.nodeType === 1 && !isXML ){
3587 elem.sizcache = doneName;
3588 elem.sizset = i;
3589 }
3590
3591 if ( elem.nodeName.toLowerCase() === cur ) {
3592 match = elem;
3593 break;
3594 }
3595
3596 elem = elem[dir];
3597 }
3598
3599 checkSet[i] = match;
3600 }
3601 }
3602}
3603
3604function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
3605 for ( var i = 0, l = checkSet.length; i < l; i++ ) {
3606 var elem = checkSet[i];
3607 if ( elem ) {
3608 elem = elem[dir];
3609 var match = false;
3610
3611 while ( elem ) {
3612 if ( elem.sizcache === doneName ) {
3613 match = checkSet[elem.sizset];
3614 break;
3615 }
3616
3617 if ( elem.nodeType === 1 ) {
3618 if ( !isXML ) {
3619 elem.sizcache = doneName;
3620 elem.sizset = i;
3621 }
3622 if ( typeof cur !== "string" ) {
3623 if ( elem === cur ) {
3624 match = true;
3625 break;
3626 }
3627
3628 } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
3629 match = elem;
3630 break;
3631 }
3632 }
3633
3634 elem = elem[dir];
3635 }
3636
3637 checkSet[i] = match;
3638 }
3639 }
3640}
3641
3642var contains = document.compareDocumentPosition ? function(a, b){
3643 return !!(a.compareDocumentPosition(b) & 16);
3644} : function(a, b){
3645 return a !== b && (a.contains ? a.contains(b) : true);
3646};
3647
3648var isXML = function(elem){
3649 // documentElement is verified for cases where it doesn't yet exist
3650 // (such as loading iframes in IE - #4833)
3651 var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
3652 return documentElement ? documentElement.nodeName !== "HTML" : false;
3653};
3654
3655var posProcess = function(selector, context){
3656 var tmpSet = [], later = "", match,
3657 root = context.nodeType ? [context] : context;
3658
3659 // Position selectors must be done after the filter
3660 // And so must :not(positional) so we move all PSEUDOs to the end
3661 while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
3662 later += match[0];
3663 selector = selector.replace( Expr.match.PSEUDO, "" );
3664 }
3665
3666 selector = Expr.relative[selector] ? selector + "*" : selector;
3667
3668 for ( var i = 0, l = root.length; i < l; i++ ) {
3669 Sizzle( selector, root[i], tmpSet );
3670 }
3671
3672 return Sizzle.filter( later, tmpSet );
3673};
3674
3675// EXPOSE
3676jQuery.find = Sizzle;
3677jQuery.expr = Sizzle.selectors;
3678jQuery.expr[":"] = jQuery.expr.filters;
3679jQuery.unique = Sizzle.uniqueSort;
3680jQuery.text = getText;
3681jQuery.isXMLDoc = isXML;
3682jQuery.contains = contains;
3683
3684return;
3685
3686window.Sizzle = Sizzle;
3687
3688})();
3689var runtil = /Until$/,
3690 rparentsprev = /^(?:parents|prevUntil|prevAll)/,
3691 // Note: This RegExp should be improved, or likely pulled from Sizzle
3692 rmultiselector = /,/,
3693 slice = Array.prototype.slice;
3694
3695// Implement the identical functionality for filter and not
3696var winnow = function( elements, qualifier, keep ) {
3697 if ( jQuery.isFunction( qualifier ) ) {
3698 return jQuery.grep(elements, function( elem, i ) {
3699 return !!qualifier.call( elem, i, elem ) === keep;
3700 });
3701
3702 } else if ( qualifier.nodeType ) {
3703 return jQuery.grep(elements, function( elem, i ) {
3704 return (elem === qualifier) === keep;
3705 });
3706
3707 } else if ( typeof qualifier === "string" ) {
3708 var filtered = jQuery.grep(elements, function( elem ) {
3709 return elem.nodeType === 1;
3710 });
3711
3712 if ( isSimple.test( qualifier ) ) {
3713 return jQuery.filter(qualifier, filtered, !keep);
3714 } else {
3715 qualifier = jQuery.filter( qualifier, filtered );
3716 }
3717 }
3718
3719 return jQuery.grep(elements, function( elem, i ) {
3720 return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
3721 });
3722};
3723
3724jQuery.fn.extend({
3725 find: function( selector ) {
3726 var ret = this.pushStack( "", "find", selector ), length = 0;
3727
3728 for ( var i = 0, l = this.length; i < l; i++ ) {
3729 length = ret.length;
3730 jQuery.find( selector, this[i], ret );
3731
3732 if ( i > 0 ) {
3733 // Make sure that the results are unique
3734 for ( var n = length; n < ret.length; n++ ) {
3735 for ( var r = 0; r < length; r++ ) {
3736 if ( ret[r] === ret[n] ) {
3737 ret.splice(n--, 1);
3738 break;
3739 }
3740 }
3741 }
3742 }
3743 }
3744
3745 return ret;
3746 },
3747
3748 has: function( target ) {
3749 var targets = jQuery( target );
3750 return this.filter(function() {
3751 for ( var i = 0, l = targets.length; i < l; i++ ) {
3752 if ( jQuery.contains( this, targets[i] ) ) {
3753 return true;
3754 }
3755 }
3756 });
3757 },
3758
3759 not: function( selector ) {
3760 return this.pushStack( winnow(this, selector, false), "not", selector);
3761 },
3762
3763 filter: function( selector ) {
3764 return this.pushStack( winnow(this, selector, true), "filter", selector );
3765 },
3766
3767 is: function( selector ) {
3768 return !!selector && jQuery.filter( selector, this ).length > 0;
3769 },
3770
3771 closest: function( selectors, context ) {
3772 if ( jQuery.isArray( selectors ) ) {
3773 var ret = [], cur = this[0], match, matches = {}, selector;
3774
3775 if ( cur && selectors.length ) {
3776 for ( var i = 0, l = selectors.length; i < l; i++ ) {
3777 selector = selectors[i];
3778
3779 if ( !matches[selector] ) {
3780 matches[selector] = jQuery.expr.match.POS.test( selector ) ?
3781 jQuery( selector, context || this.context ) :
3782 selector;
3783 }
3784 }
3785
3786 while ( cur && cur.ownerDocument && cur !== context ) {
3787 for ( selector in matches ) {
3788 match = matches[selector];
3789
3790 if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
3791 ret.push({ selector: selector, elem: cur });
3792 delete matches[selector];
3793 }
3794 }
3795 cur = cur.parentNode;
3796 }
3797 }
3798
3799 return ret;
3800 }
3801
3802 var pos = jQuery.expr.match.POS.test( selectors ) ?
3803 jQuery( selectors, context || this.context ) : null;
3804
3805 return this.map(function( i, cur ) {
3806 while ( cur && cur.ownerDocument && cur !== context ) {
3807 if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
3808 return cur;
3809 }
3810 cur = cur.parentNode;
3811 }
3812 return null;
3813 });
3814 },
3815
3816 // Determine the position of an element within
3817 // the matched set of elements
3818 index: function( elem ) {
3819 if ( !elem || typeof elem === "string" ) {
3820 return jQuery.inArray( this[0],
3821 // If it receives a string, the selector is used
3822 // If it receives nothing, the siblings are used
3823 elem ? jQuery( elem ) : this.parent().children() );
3824 }
3825 // Locate the position of the desired element
3826 return jQuery.inArray(
3827 // If it receives a jQuery object, the first element is used
3828 elem.jquery ? elem[0] : elem, this );
3829 },
3830
3831 add: function( selector, context ) {
3832 var set = typeof selector === "string" ?
3833 jQuery( selector, context || this.context ) :
3834 jQuery.makeArray( selector ),
3835 all = jQuery.merge( this.get(), set );
3836
3837 return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
3838 all :
3839 jQuery.unique( all ) );
3840 },
3841
3842 andSelf: function() {
3843 return this.add( this.prevObject );
3844 }
3845});
3846
3847// A painfully simple check to see if an element is disconnected
3848// from a document (should be improved, where feasible).
3849function isDisconnected( node ) {
3850 return !node || !node.parentNode || node.parentNode.nodeType === 11;
3851}
3852
3853jQuery.each({
3854 parent: function( elem ) {
3855 var parent = elem.parentNode;
3856 return parent && parent.nodeType !== 11 ? parent : null;
3857 },
3858 parents: function( elem ) {
3859 return jQuery.dir( elem, "parentNode" );
3860 },
3861 parentsUntil: function( elem, i, until ) {
3862 return jQuery.dir( elem, "parentNode", until );
3863 },
3864 next: function( elem ) {
3865 return jQuery.nth( elem, 2, "nextSibling" );
3866 },
3867 prev: function( elem ) {
3868 return jQuery.nth( elem, 2, "previousSibling" );
3869 },
3870 nextAll: function( elem ) {
3871 return jQuery.dir( elem, "nextSibling" );
3872 },
3873 prevAll: function( elem ) {
3874 return jQuery.dir( elem, "previousSibling" );
3875 },
3876 nextUntil: function( elem, i, until ) {
3877 return jQuery.dir( elem, "nextSibling", until );
3878 },
3879 prevUntil: function( elem, i, until ) {
3880 return jQuery.dir( elem, "previousSibling", until );
3881 },
3882 siblings: function( elem ) {
3883 return jQuery.sibling( elem.parentNode.firstChild, elem );
3884 },
3885 children: function( elem ) {
3886 return jQuery.sibling( elem.firstChild );
3887 },
3888 contents: function( elem ) {
3889 return jQuery.nodeName( elem, "iframe" ) ?
3890 elem.contentDocument || elem.contentWindow.document :
3891 jQuery.makeArray( elem.childNodes );
3892 }
3893}, function( name, fn ) {
3894 jQuery.fn[ name ] = function( until, selector ) {
3895 var ret = jQuery.map( this, fn, until );
3896
3897 if ( !runtil.test( name ) ) {
3898 selector = until;
3899 }
3900
3901 if ( selector && typeof selector === "string" ) {
3902 ret = jQuery.filter( selector, ret );
3903 }
3904
3905 ret = this.length > 1 ? jQuery.unique( ret ) : ret;
3906
3907 if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
3908 ret = ret.reverse();
3909 }
3910
3911 return this.pushStack( ret, name, slice.call(arguments).join(",") );
3912 };
3913});
3914
3915jQuery.extend({
3916 filter: function( expr, elems, not ) {
3917 if ( not ) {
3918 expr = ":not(" + expr + ")";
3919 }
3920
3921 return jQuery.find.matches(expr, elems);
3922 },
3923
3924 dir: function( elem, dir, until ) {
3925 var matched = [], cur = elem[dir];
3926 while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
3927 if ( cur.nodeType === 1 ) {
3928 matched.push( cur );
3929 }
3930 cur = cur[dir];
3931 }
3932 return matched;
3933 },
3934
3935 nth: function( cur, result, dir, elem ) {
3936 result = result || 1;
3937 var num = 0;
3938
3939 for ( ; cur; cur = cur[dir] ) {
3940 if ( cur.nodeType === 1 && ++num === result ) {
3941 break;
3942 }
3943 }
3944
3945 return cur;
3946 },
3947
3948 sibling: function( n, elem ) {
3949 var r = [];
3950
3951 for ( ; n; n = n.nextSibling ) {
3952 if ( n.nodeType === 1 && n !== elem ) {
3953 r.push( n );
3954 }
3955 }
3956
3957 return r;
3958 }
3959});
3960var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
3961 rleadingWhitespace = /^\s+/,
3962 rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
3963 rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
3964 rtagName = /<([\w:]+)/,
3965 rtbody = /<tbody/i,
3966 rhtml = /<|&#?\w+;/,
3967 rnocache = /<script|<object|<embed|<option|<style/i,
3968 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
3969 fcloseTag = function( all, front, tag ) {
3970 return rselfClosing.test( tag ) ?
3971 all :
3972 front + "></" + tag + ">";
3973 },
3974 wrapMap = {
3975 option: [ 1, "<select multiple='multiple'>", "</select>" ],
3976 legend: [ 1, "<fieldset>", "</fieldset>" ],
3977 thead: [ 1, "<table>", "</table>" ],
3978 tr: [ 2, "<table><tbody>", "</tbody></table>" ],
3979 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
3980 col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
3981 area: [ 1, "<map>", "</map>" ],
3982 _default: [ 0, "", "" ]
3983 };
3984
3985wrapMap.optgroup = wrapMap.option;
3986wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
3987wrapMap.th = wrapMap.td;
3988
3989// IE can't serialize <link> and <script> tags normally
3990if ( !jQuery.support.htmlSerialize ) {
3991 wrapMap._default = [ 1, "div<div>", "</div>" ];
3992}
3993
3994jQuery.fn.extend({
3995 text: function( text ) {
3996 if ( jQuery.isFunction(text) ) {
3997 return this.each(function(i) {
3998 var self = jQuery(this);
3999 self.text( text.call(this, i, self.text()) );
4000 });
4001 }
4002
4003 if ( typeof text !== "object" && text !== undefined ) {
4004 return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
4005 }
4006
4007 return jQuery.text( this );
4008 },
4009
4010 wrapAll: function( html ) {
4011 if ( jQuery.isFunction( html ) ) {
4012 return this.each(function(i) {
4013 jQuery(this).wrapAll( html.call(this, i) );
4014 });
4015 }
4016
4017 if ( this[0] ) {
4018 // The elements to wrap the target around
4019 var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
4020
4021 if ( this[0].parentNode ) {
4022 wrap.insertBefore( this[0] );
4023 }
4024
4025 wrap.map(function() {
4026 var elem = this;
4027
4028 while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
4029 elem = elem.firstChild;
4030 }
4031
4032 return elem;
4033 }).append(this);
4034 }
4035
4036 return this;
4037 },
4038
4039 wrapInner: function( html ) {
4040 if ( jQuery.isFunction( html ) ) {
4041 return this.each(function(i) {
4042 jQuery(this).wrapInner( html.call(this, i) );
4043 });
4044 }
4045
4046 return this.each(function() {
4047 var self = jQuery( this ), contents = self.contents();
4048
4049 if ( contents.length ) {
4050 contents.wrapAll( html );
4051
4052 } else {
4053 self.append( html );
4054 }
4055 });
4056 },
4057
4058 wrap: function( html ) {
4059 return this.each(function() {
4060 jQuery( this ).wrapAll( html );
4061 });
4062 },
4063
4064 unwrap: function() {
4065 return this.parent().each(function() {
4066 if ( !jQuery.nodeName( this, "body" ) ) {
4067 jQuery( this ).replaceWith( this.childNodes );
4068 }
4069 }).end();
4070 },
4071
4072 append: function() {
4073 return this.domManip(arguments, true, function( elem ) {
4074 if ( this.nodeType === 1 ) {
4075 this.appendChild( elem );
4076 }
4077 });
4078 },
4079
4080 prepend: function() {
4081 return this.domManip(arguments, true, function( elem ) {
4082 if ( this.nodeType === 1 ) {
4083 this.insertBefore( elem, this.firstChild );
4084 }
4085 });
4086 },
4087
4088 before: function() {
4089 if ( this[0] && this[0].parentNode ) {
4090 return this.domManip(arguments, false, function( elem ) {
4091 this.parentNode.insertBefore( elem, this );
4092 });
4093 } else if ( arguments.length ) {
4094 var set = jQuery(arguments[0]);
4095 set.push.apply( set, this.toArray() );
4096 return this.pushStack( set, "before", arguments );
4097 }
4098 },
4099
4100 after: function() {
4101 if ( this[0] && this[0].parentNode ) {
4102 return this.domManip(arguments, false, function( elem ) {
4103 this.parentNode.insertBefore( elem, this.nextSibling );
4104 });
4105 } else if ( arguments.length ) {
4106 var set = this.pushStack( this, "after", arguments );
4107 set.push.apply( set, jQuery(arguments[0]).toArray() );
4108 return set;
4109 }
4110 },
4111
4112 // keepData is for internal use only--do not document
4113 remove: function( selector, keepData ) {
4114 for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
4115 if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
4116 if ( !keepData && elem.nodeType === 1 ) {
4117 jQuery.cleanData( elem.getElementsByTagName("*") );
4118 jQuery.cleanData( [ elem ] );
4119 }
4120
4121 if ( elem.parentNode ) {
4122 elem.parentNode.removeChild( elem );
4123 }
4124 }
4125 }
4126
4127 return this;
4128 },
4129
4130 empty: function() {
4131 for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
4132 // Remove element nodes and prevent memory leaks
4133 if ( elem.nodeType === 1 ) {
4134 jQuery.cleanData( elem.getElementsByTagName("*") );
4135 }
4136
4137 // Remove any remaining nodes
4138 while ( elem.firstChild ) {
4139 elem.removeChild( elem.firstChild );
4140 }
4141 }
4142
4143 return this;
4144 },
4145
4146 clone: function( events ) {
4147 // Do the clone
4148 var ret = this.map(function() {
4149 if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
4150 // IE copies events bound via attachEvent when
4151 // using cloneNode. Calling detachEvent on the
4152 // clone will also remove the events from the orignal
4153 // In order to get around this, we use innerHTML.
4154 // Unfortunately, this means some modifications to
4155 // attributes in IE that are actually only stored
4156 // as properties will not be copied (such as the
4157 // the name attribute on an input).
4158 var html = this.outerHTML, ownerDocument = this.ownerDocument;
4159 if ( !html ) {
4160 var div = ownerDocument.createElement("div");
4161 div.appendChild( this.cloneNode(true) );
4162 html = div.innerHTML;
4163 }
4164
4165 return jQuery.clean([html.replace(rinlinejQuery, "")
4166 // Handle the case in IE 8 where action=/test/> self-closes a tag
4167 .replace(/=([^="'>\s]+\/)>/g, '="$1">')
4168 .replace(rleadingWhitespace, "")], ownerDocument)[0];
4169 } else {
4170 return this.cloneNode(true);
4171 }
4172 });
4173
4174 // Copy the events from the original to the clone
4175 if ( events === true ) {
4176 cloneCopyEvent( this, ret );
4177 cloneCopyEvent( this.find("*"), ret.find("*") );
4178 }
4179
4180 // Return the cloned set
4181 return ret;
4182 },
4183
4184 html: function( value ) {
4185 if ( value === undefined ) {
4186 return this[0] && this[0].nodeType === 1 ?
4187 this[0].innerHTML.replace(rinlinejQuery, "") :
4188 null;
4189
4190 // See if we can take a shortcut and just use innerHTML
4191 } else if ( typeof value === "string" && !rnocache.test( value ) &&
4192 (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
4193 !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
4194
4195 value = value.replace(rxhtmlTag, fcloseTag);
4196
4197 try {
4198 for ( var i = 0, l = this.length; i < l; i++ ) {
4199 // Remove element nodes and prevent memory leaks
4200 if ( this[i].nodeType === 1 ) {
4201 jQuery.cleanData( this[i].getElementsByTagName("*") );
4202 this[i].innerHTML = value;
4203 }
4204 }
4205
4206 // If using innerHTML throws an exception, use the fallback method
4207 } catch(e) {
4208 this.empty().append( value );
4209 }
4210
4211 } else if ( jQuery.isFunction( value ) ) {
4212 this.each(function(i){
4213 var self = jQuery(this), old = self.html();
4214 self.empty().append(function(){
4215 return value.call( this, i, old );
4216 });
4217 });
4218
4219 } else {
4220 this.empty().append( value );
4221 }
4222
4223 return this;
4224 },
4225
4226 replaceWith: function( value ) {
4227 if ( this[0] && this[0].parentNode ) {
4228 // Make sure that the elements are removed from the DOM before they are inserted
4229 // this can help fix replacing a parent with child elements
4230 if ( jQuery.isFunction( value ) ) {
4231 return this.each(function(i) {
4232 var self = jQuery(this), old = self.html();
4233 self.replaceWith( value.call( this, i, old ) );
4234 });
4235 }
4236
4237 if ( typeof value !== "string" ) {
4238 value = jQuery(value).detach();
4239 }
4240
4241 return this.each(function() {
4242 var next = this.nextSibling, parent = this.parentNode;
4243
4244 jQuery(this).remove();
4245
4246 if ( next ) {
4247 jQuery(next).before( value );
4248 } else {
4249 jQuery(parent).append( value );
4250 }
4251 });
4252 } else {
4253 return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
4254 }
4255 },
4256
4257 detach: function( selector ) {
4258 return this.remove( selector, true );
4259 },
4260
4261 domManip: function( args, table, callback ) {
4262 var results, first, value = args[0], scripts = [], fragment, parent;
4263
4264 // We can't cloneNode fragments that contain checked, in WebKit
4265 if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
4266 return this.each(function() {
4267 jQuery(this).domManip( args, table, callback, true );
4268 });
4269 }
4270
4271 if ( jQuery.isFunction(value) ) {
4272 return this.each(function(i) {
4273 var self = jQuery(this);
4274 args[0] = value.call(this, i, table ? self.html() : undefined);
4275 self.domManip( args, table, callback );
4276 });
4277 }
4278
4279 if ( this[0] ) {
4280 parent = value && value.parentNode;
4281
4282 // If we're in a fragment, just use that instead of building a new one
4283 if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
4284 results = { fragment: parent };
4285
4286 } else {
4287 results = buildFragment( args, this, scripts );
4288 }
4289
4290 fragment = results.fragment;
4291
4292 if ( fragment.childNodes.length === 1 ) {
4293 first = fragment = fragment.firstChild;
4294 } else {
4295 first = fragment.firstChild;
4296 }
4297
4298 if ( first ) {
4299 table = table && jQuery.nodeName( first, "tr" );
4300
4301 for ( var i = 0, l = this.length; i < l; i++ ) {
4302 callback.call(
4303 table ?
4304 root(this[i], first) :
4305 this[i],
4306 i > 0 || results.cacheable || this.length > 1 ?
4307 fragment.cloneNode(true) :
4308 fragment
4309 );
4310 }
4311 }
4312
4313 if ( scripts.length ) {
4314 jQuery.each( scripts, evalScript );
4315 }
4316 }
4317
4318 return this;
4319
4320 function root( elem, cur ) {
4321 return jQuery.nodeName(elem, "table") ?
4322 (elem.getElementsByTagName("tbody")[0] ||
4323 elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
4324 elem;
4325 }
4326 }
4327});
4328
4329function cloneCopyEvent(orig, ret) {
4330 var i = 0;
4331
4332 ret.each(function() {
4333 if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
4334 return;
4335 }
4336
4337 var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
4338
4339 if ( events ) {
4340 delete curData.handle;
4341 curData.events = {};
4342
4343 for ( var type in events ) {
4344 for ( var handler in events[ type ] ) {
4345 jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
4346 }
4347 }
4348 }
4349 });
4350}
4351
4352function buildFragment( args, nodes, scripts ) {
4353 var fragment, cacheable, cacheresults,
4354 doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
4355
4356 // Only cache "small" (1/2 KB) strings that are associated with the main document
4357 // Cloning options loses the selected state, so don't cache them
4358 // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
4359 // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
4360 if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
4361 !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
4362
4363 cacheable = true;
4364 cacheresults = jQuery.fragments[ args[0] ];
4365 if ( cacheresults ) {
4366 if ( cacheresults !== 1 ) {
4367 fragment = cacheresults;
4368 }
4369 }
4370 }
4371
4372 if ( !fragment ) {
4373 fragment = doc.createDocumentFragment();
4374 jQuery.clean( args, doc, fragment, scripts );
4375 }
4376
4377 if ( cacheable ) {
4378 jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
4379 }
4380
4381 return { fragment: fragment, cacheable: cacheable };
4382}
4383
4384jQuery.fragments = {};
4385
4386jQuery.each({
4387 appendTo: "append",
4388 prependTo: "prepend",
4389 insertBefore: "before",
4390 insertAfter: "after",
4391 replaceAll: "replaceWith"
4392}, function( name, original ) {
4393 jQuery.fn[ name ] = function( selector ) {
4394 var ret = [], insert = jQuery( selector ),
4395 parent = this.length === 1 && this[0].parentNode;
4396
4397 if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
4398 insert[ original ]( this[0] );
4399 return this;
4400
4401 } else {
4402 for ( var i = 0, l = insert.length; i < l; i++ ) {
4403 var elems = (i > 0 ? this.clone(true) : this).get();
4404 jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
4405 ret = ret.concat( elems );
4406 }
4407
4408 return this.pushStack( ret, name, insert.selector );
4409 }
4410 };
4411});
4412
4413jQuery.extend({
4414 clean: function( elems, context, fragment, scripts ) {
4415 context = context || document;
4416
4417 // !context.createElement fails in IE with an error but returns typeof 'object'
4418 if ( typeof context.createElement === "undefined" ) {
4419 context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
4420 }
4421
4422 var ret = [];
4423
4424 for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
4425 if ( typeof elem === "number" ) {
4426 elem += "";
4427 }
4428
4429 if ( !elem ) {
4430 continue;
4431 }
4432
4433 // Convert html string into DOM nodes
4434 if ( typeof elem === "string" && !rhtml.test( elem ) ) {
4435 elem = context.createTextNode( elem );
4436
4437 } else if ( typeof elem === "string" ) {
4438 // Fix "XHTML"-style tags in all browsers
4439 elem = elem.replace(rxhtmlTag, fcloseTag);
4440
4441 // Trim whitespace, otherwise indexOf won't work as expected
4442 var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
4443 wrap = wrapMap[ tag ] || wrapMap._default,
4444 depth = wrap[0],
4445 div = context.createElement("div");
4446
4447 // Go to html and back, then peel off extra wrappers
4448 div.innerHTML = wrap[1] + elem + wrap[2];
4449
4450 // Move to the right depth
4451 while ( depth-- ) {
4452 div = div.lastChild;
4453 }
4454
4455 // Remove IE's autoinserted <tbody> from table fragments
4456 if ( !jQuery.support.tbody ) {
4457
4458 // String was a <table>, *may* have spurious <tbody>
4459 var hasBody = rtbody.test(elem),
4460 tbody = tag === "table" && !hasBody ?
4461 div.firstChild && div.firstChild.childNodes :
4462
4463 // String was a bare <thead> or <tfoot>
4464 wrap[1] === "<table>" && !hasBody ?
4465 div.childNodes :
4466 [];
4467
4468 for ( var j = tbody.length - 1; j >= 0 ; --j ) {
4469 if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
4470 tbody[ j ].parentNode.removeChild( tbody[ j ] );
4471 }
4472 }
4473
4474 }
4475
4476 // IE completely kills leading whitespace when innerHTML is used
4477 if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
4478 div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
4479 }
4480
4481 elem = div.childNodes;
4482 }
4483
4484 if ( elem.nodeType ) {
4485 ret.push( elem );
4486 } else {
4487 ret = jQuery.merge( ret, elem );
4488 }
4489 }
4490
4491 if ( fragment ) {
4492 for ( var i = 0; ret[i]; i++ ) {
4493 if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
4494 scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
4495
4496 } else {
4497 if ( ret[i].nodeType === 1 ) {
4498 ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
4499 }
4500 fragment.appendChild( ret[i] );
4501 }
4502 }
4503 }
4504
4505 return ret;
4506 },
4507
4508 cleanData: function( elems ) {
4509 var data, id, cache = jQuery.cache,
4510 special = jQuery.event.special,
4511 deleteExpando = jQuery.support.deleteExpando;
4512
4513 for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
4514 id = elem[ jQuery.expando ];
4515
4516 if ( id ) {
4517 data = cache[ id ];
4518
4519 if ( data.events ) {
4520 for ( var type in data.events ) {
4521 if ( special[ type ] ) {
4522 jQuery.event.remove( elem, type );
4523
4524 } else {
4525 removeEvent( elem, type, data.handle );
4526 }
4527 }
4528 }
4529
4530 if ( deleteExpando ) {
4531 delete elem[ jQuery.expando ];
4532
4533 } else if ( elem.removeAttribute ) {
4534 elem.removeAttribute( jQuery.expando );
4535 }
4536
4537 delete cache[ id ];
4538 }
4539 }
4540 }
4541});
4542// exclude the following css properties to add px
4543var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
4544 ralpha = /alpha\([^)]*\)/,
4545 ropacity = /opacity=([^)]*)/,
4546 rfloat = /float/i,
4547 rdashAlpha = /-([a-z])/ig,
4548 rupper = /([A-Z])/g,
4549 rnumpx = /^-?\d+(?:px)?$/i,
4550 rnum = /^-?\d/,
4551
4552 cssShow = { position: "absolute", visibility: "hidden", display:"block" },
4553 cssWidth = [ "Left", "Right" ],
4554 cssHeight = [ "Top", "Bottom" ],
4555
4556 // cache check for defaultView.getComputedStyle
4557 getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
4558 // normalize float css property
4559 styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
4560 fcamelCase = function( all, letter ) {
4561 return letter.toUpperCase();
4562 };
4563
4564jQuery.fn.css = function( name, value ) {
4565 return access( this, name, value, true, function( elem, name, value ) {
4566 if ( value === undefined ) {
4567 return jQuery.curCSS( elem, name );
4568 }
4569
4570 if ( typeof value === "number" && !rexclude.test(name) ) {
4571 value += "px";
4572 }
4573
4574 jQuery.style( elem, name, value );
4575 });
4576};
4577
4578jQuery.extend({
4579 style: function( elem, name, value ) {
4580 // don't set styles on text and comment nodes
4581 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
4582 return undefined;
4583 }
4584
4585 // ignore negative width and height values #1599
4586 if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
4587 value = undefined;
4588 }
4589
4590 var style = elem.style || elem, set = value !== undefined;
4591
4592 // IE uses filters for opacity
4593 if ( !jQuery.support.opacity && name === "opacity" ) {
4594 if ( set ) {
4595 // IE has trouble with opacity if it does not have layout
4596 // Force it by setting the zoom level
4597 style.zoom = 1;
4598
4599 // Set the alpha filter to set the opacity
4600 var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
4601 var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
4602 style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
4603 }
4604
4605 return style.filter && style.filter.indexOf("opacity=") >= 0 ?
4606 (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
4607 "";
4608 }
4609
4610 // Make sure we're using the right name for getting the float value
4611 if ( rfloat.test( name ) ) {
4612 name = styleFloat;
4613 }
4614
4615 name = name.replace(rdashAlpha, fcamelCase);
4616
4617 if ( set ) {
4618 style[ name ] = value;
4619 }
4620
4621 return style[ name ];
4622 },
4623
4624 css: function( elem, name, force, extra ) {
4625 if ( name === "width" || name === "height" ) {
4626 var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
4627
4628 function getWH() {
4629 val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
4630
4631 if ( extra === "border" ) {
4632 return;
4633 }
4634
4635 jQuery.each( which, function() {
4636 if ( !extra ) {
4637 val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
4638 }
4639
4640 if ( extra === "margin" ) {
4641 val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
4642 } else {
4643 val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
4644 }
4645 });
4646 }
4647
4648 if ( elem.offsetWidth !== 0 ) {
4649 getWH();
4650 } else {
4651 jQuery.swap( elem, props, getWH );
4652 }
4653
4654 return Math.max(0, Math.round(val));
4655 }
4656
4657 return jQuery.curCSS( elem, name, force );
4658 },
4659
4660 curCSS: function( elem, name, force ) {
4661 var ret, style = elem.style, filter;
4662
4663 // IE uses filters for opacity
4664 if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
4665 ret = ropacity.test(elem.currentStyle.filter || "") ?
4666 (parseFloat(RegExp.$1) / 100) + "" :
4667 "";
4668
4669 return ret === "" ?
4670 "1" :
4671 ret;
4672 }
4673
4674 // Make sure we're using the right name for getting the float value
4675 if ( rfloat.test( name ) ) {
4676 name = styleFloat;
4677 }
4678
4679 if ( !force && style && style[ name ] ) {
4680 ret = style[ name ];
4681
4682 } else if ( getComputedStyle ) {
4683
4684 // Only "float" is needed here
4685 if ( rfloat.test( name ) ) {
4686 name = "float";
4687 }
4688
4689 name = name.replace( rupper, "-$1" ).toLowerCase();
4690
4691 var defaultView = elem.ownerDocument.defaultView;
4692
4693 if ( !defaultView ) {
4694 return null;
4695 }
4696
4697 var computedStyle = defaultView.getComputedStyle( elem, null );
4698
4699 if ( computedStyle ) {
4700 ret = computedStyle.getPropertyValue( name );
4701 }
4702
4703 // We should always get a number back from opacity
4704 if ( name === "opacity" && ret === "" ) {
4705 ret = "1";
4706 }
4707
4708 } else if ( elem.currentStyle ) {
4709 var camelCase = name.replace(rdashAlpha, fcamelCase);
4710
4711 ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
4712
4713 // From the awesome hack by Dean Edwards
4714 // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
4715
4716 // If we're not dealing with a regular pixel number
4717 // but a number that has a weird ending, we need to convert it to pixels
4718 if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
4719 // Remember the original values
4720 var left = style.left, rsLeft = elem.runtimeStyle.left;
4721
4722 // Put in the new values to get a computed value out
4723 elem.runtimeStyle.left = elem.currentStyle.left;
4724 style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
4725 ret = style.pixelLeft + "px";
4726
4727 // Revert the changed values
4728 style.left = left;
4729 elem.runtimeStyle.left = rsLeft;
4730 }
4731 }
4732
4733 return ret;
4734 },
4735
4736 // A method for quickly swapping in/out CSS properties to get correct calculations
4737 swap: function( elem, options, callback ) {
4738 var old = {};
4739
4740 // Remember the old values, and insert the new ones
4741 for ( var name in options ) {
4742 old[ name ] = elem.style[ name ];
4743 elem.style[ name ] = options[ name ];
4744 }
4745
4746 callback.call( elem );
4747
4748 // Revert the old values
4749 for ( var name in options ) {
4750 elem.style[ name ] = old[ name ];
4751 }
4752 }
4753});
4754
4755if ( jQuery.expr && jQuery.expr.filters ) {
4756 jQuery.expr.filters.hidden = function( elem ) {
4757 var width = elem.offsetWidth, height = elem.offsetHeight,
4758 skip = elem.nodeName.toLowerCase() === "tr";
4759
4760 return width === 0 && height === 0 && !skip ?
4761 true :
4762 width > 0 && height > 0 && !skip ?
4763 false :
4764 jQuery.curCSS(elem, "display") === "none";
4765 };
4766
4767 jQuery.expr.filters.visible = function( elem ) {
4768 return !jQuery.expr.filters.hidden( elem );
4769 };
4770}
4771var jsc = now(),
4772 rscript = /<script(.|\s)*?\/script>/gi,
4773 rselectTextarea = /select|textarea/i,
4774 rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
4775 jsre = /=\?(&|$)/,
4776 rquery = /\?/,
4777 rts = /(\?|&)_=.*?(&|$)/,
4778 rurl = /^(\w+:)?\/\/([^\/?#]+)/,
4779 r20 = /%20/g,
4780
4781 // Keep a copy of the old load method
4782 _load = jQuery.fn.load;
4783
4784jQuery.fn.extend({
4785 load: function( url, params, callback ) {
4786 if ( typeof url !== "string" ) {
4787 return _load.call( this, url );
4788
4789 // Don't do a request if no elements are being requested
4790 } else if ( !this.length ) {
4791 return this;
4792 }
4793
4794 var off = url.indexOf(" ");
4795 if ( off >= 0 ) {
4796 var selector = url.slice(off, url.length);
4797 url = url.slice(0, off);
4798 }
4799
4800 // Default to a GET request
4801 var type = "GET";
4802
4803 // If the second parameter was provided
4804 if ( params ) {
4805 // If it's a function
4806 if ( jQuery.isFunction( params ) ) {
4807 // We assume that it's the callback
4808 callback = params;
4809 params = null;
4810
4811 // Otherwise, build a param string
4812 } else if ( typeof params === "object" ) {
4813 params = jQuery.param( params, jQuery.ajaxSettings.traditional );
4814 type = "POST";
4815 }
4816 }
4817
4818 var self = this;
4819
4820 // Request the remote document
4821 jQuery.ajax({
4822 url: url,
4823 type: type,
4824 dataType: "html",
4825 data: params,
4826 complete: function( res, status ) {
4827 // If successful, inject the HTML into all the matched elements
4828 if ( status === "success" || status === "notmodified" ) {
4829 // See if a selector was specified
4830 self.html( selector ?
4831 // Create a dummy div to hold the results
4832 jQuery("<div />")
4833 // inject the contents of the document in, removing the scripts
4834 // to avoid any 'Permission Denied' errors in IE
4835 .append(res.responseText.replace(rscript, ""))
4836
4837 // Locate the specified elements
4838 .find(selector) :
4839
4840 // If not, just inject the full result
4841 res.responseText );
4842 }
4843
4844 if ( callback ) {
4845 self.each( callback, [res.responseText, status, res] );
4846 }
4847 }
4848 });
4849
4850 return this;
4851 },
4852
4853 serialize: function() {
4854 return jQuery.param(this.serializeArray());
4855 },
4856 serializeArray: function() {
4857 return this.map(function() {
4858 return this.elements ? jQuery.makeArray(this.elements) : this;
4859 })
4860 .filter(function() {
4861 return this.name && !this.disabled &&
4862 (this.checked || rselectTextarea.test(this.nodeName) ||
4863 rinput.test(this.type));
4864 })
4865 .map(function( i, elem ) {
4866 var val = jQuery(this).val();
4867
4868 return val == null ?
4869 null :
4870 jQuery.isArray(val) ?
4871 jQuery.map( val, function( val, i ) {
4872 return { name: elem.name, value: val };
4873 }) :
4874 { name: elem.name, value: val };
4875 }).get();
4876 }
4877});
4878
4879// Attach a bunch of functions for handling common AJAX events
4880jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
4881 jQuery.fn[o] = function( f ) {
4882 return this.bind(o, f);
4883 };
4884});
4885
4886jQuery.extend({
4887
4888 get: function( url, data, callback, type ) {
4889 // shift arguments if data argument was omited
4890 if ( jQuery.isFunction( data ) ) {
4891 type = type || callback;
4892 callback = data;
4893 data = null;
4894 }
4895
4896 return jQuery.ajax({
4897 type: "GET",
4898 url: url,
4899 data: data,
4900 success: callback,
4901 dataType: type
4902 });
4903 },
4904
4905 getScript: function( url, callback ) {
4906 return jQuery.get(url, null, callback, "script");
4907 },
4908
4909 getJSON: function( url, data, callback ) {
4910 return jQuery.get(url, data, callback, "json");
4911 },
4912
4913 post: function( url, data, callback, type ) {
4914 // shift arguments if data argument was omited
4915 if ( jQuery.isFunction( data ) ) {
4916 type = type || callback;
4917 callback = data;
4918 data = {};
4919 }
4920
4921 return jQuery.ajax({
4922 type: "POST",
4923 url: url,
4924 data: data,
4925 success: callback,
4926 dataType: type
4927 });
4928 },
4929
4930 ajaxSetup: function( settings ) {
4931 jQuery.extend( jQuery.ajaxSettings, settings );
4932 },
4933
4934 ajaxSettings: {
4935 url: location.href,
4936 global: true,
4937 type: "GET",
4938 contentType: "application/x-www-form-urlencoded",
4939 processData: true,
4940 async: true,
4941 /*
4942 timeout: 0,
4943 data: null,
4944 username: null,
4945 password: null,
4946 traditional: false,
4947 */
4948 // Create the request object; Microsoft failed to properly
4949 // implement the XMLHttpRequest in IE7 (can't request local files),
4950 // so we use the ActiveXObject when it is available
4951 // This function can be overriden by calling jQuery.ajaxSetup
4952 xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
4953 function() {
4954 return new window.XMLHttpRequest();
4955 } :
4956 function() {
4957 try {
4958 return new window.ActiveXObject("Microsoft.XMLHTTP");
4959 } catch(e) {}
4960 },
4961 accepts: {
4962 xml: "application/xml, text/xml",
4963 html: "text/html",
4964 script: "text/javascript, application/javascript",
4965 json: "application/json, text/javascript",
4966 text: "text/plain",
4967 _default: "*/*"
4968 }
4969 },
4970
4971 // Last-Modified header cache for next request
4972 lastModified: {},
4973 etag: {},
4974
4975 ajax: function( origSettings ) {
4976 var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
4977
4978 var jsonp, status, data,
4979 callbackContext = origSettings && origSettings.context || s,
4980 type = s.type.toUpperCase();
4981
4982 // convert data if not already a string
4983 if ( s.data && s.processData && typeof s.data !== "string" ) {
4984 s.data = jQuery.param( s.data, s.traditional );
4985 }
4986
4987 // Handle JSONP Parameter Callbacks
4988 if ( s.dataType === "jsonp" ) {
4989 if ( type === "GET" ) {
4990 if ( !jsre.test( s.url ) ) {
4991 s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
4992 }
4993 } else if ( !s.data || !jsre.test(s.data) ) {
4994 s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
4995 }
4996 s.dataType = "json";
4997 }
4998
4999 // Build temporary JSONP function
5000 if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
5001 jsonp = s.jsonpCallback || ("jsonp" + jsc++);
5002
5003 // Replace the =? sequence both in the query string and the data
5004 if ( s.data ) {
5005 s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
5006 }
5007
5008 s.url = s.url.replace(jsre, "=" + jsonp + "$1");
5009
5010 // We need to make sure
5011 // that a JSONP style response is executed properly
5012 s.dataType = "script";
5013
5014 // Handle JSONP-style loading
5015 window[ jsonp ] = window[ jsonp ] || function( tmp ) {
5016 data = tmp;
5017 success();
5018 complete();
5019 // Garbage collect
5020 window[ jsonp ] = undefined;
5021
5022 try {
5023 delete window[ jsonp ];
5024 } catch(e) {}
5025
5026 if ( head ) {
5027 head.removeChild( script );
5028 }
5029 };
5030 }
5031
5032 if ( s.dataType === "script" && s.cache === null ) {
5033 s.cache = false;
5034 }
5035
5036 if ( s.cache === false && type === "GET" ) {
5037 var ts = now();
5038
5039 // try replacing _= if it is there
5040 var ret = s.url.replace(rts, "$1_=" + ts + "$2");
5041
5042 // if nothing was replaced, add timestamp to the end
5043 s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
5044 }
5045
5046 // If data is available, append data to url for get requests
5047 if ( s.data && type === "GET" ) {
5048 s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
5049 }
5050
5051 // Watch for a new set of requests
5052 if ( s.global && ! jQuery.active++ ) {
5053 jQuery.event.trigger( "ajaxStart" );
5054 }
5055
5056 // Matches an absolute URL, and saves the domain
5057 var parts = rurl.exec( s.url ),
5058 remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
5059
5060 // If we're requesting a remote document
5061 // and trying to load JSON or Script with a GET
5062 if ( s.dataType === "script" && type === "GET" && remote ) {
5063 var head = document.getElementsByTagName("head")[0] || document.documentElement;
5064 var script = document.createElement("script");
5065 script.src = s.url;
5066 if ( s.scriptCharset ) {
5067 script.charset = s.scriptCharset;
5068 }
5069
5070 // Handle Script loading
5071 if ( !jsonp ) {
5072 var done = false;
5073
5074 // Attach handlers for all browsers
5075 script.onload = script.onreadystatechange = function() {
5076 if ( !done && (!this.readyState ||
5077 this.readyState === "loaded" || this.readyState === "complete") ) {
5078 done = true;
5079 success();
5080 complete();
5081
5082 // Handle memory leak in IE
5083 script.onload = script.onreadystatechange = null;
5084 if ( head && script.parentNode ) {
5085 head.removeChild( script );
5086 }
5087 }
5088 };
5089 }
5090
5091 // Use insertBefore instead of appendChild to circumvent an IE6 bug.
5092 // This arises when a base node is used (#2709 and #4378).
5093 head.insertBefore( script, head.firstChild );
5094
5095 // We handle everything using the script element injection
5096 return undefined;
5097 }
5098
5099 var requestDone = false;
5100
5101 // Create the request object
5102 var xhr = s.xhr();
5103
5104 if ( !xhr ) {
5105 return;
5106 }
5107
5108 // Open the socket
5109 // Passing null username, generates a login popup on Opera (#2865)
5110 if ( s.username ) {
5111 xhr.open(type, s.url, s.async, s.username, s.password);
5112 } else {
5113 xhr.open(type, s.url, s.async);
5114 }
5115
5116 // Need an extra try/catch for cross domain requests in Firefox 3
5117 try {
5118 // Set the correct header, if data is being sent
5119 if ( s.data || origSettings && origSettings.contentType ) {
5120 xhr.setRequestHeader("Content-Type", s.contentType);
5121 }
5122
5123 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
5124 if ( s.ifModified ) {
5125 if ( jQuery.lastModified[s.url] ) {
5126 xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
5127 }
5128
5129 if ( jQuery.etag[s.url] ) {
5130 xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
5131 }
5132 }
5133
5134 // Set header so the called script knows that it's an XMLHttpRequest
5135 // Only send the header if it's not a remote XHR
5136 if ( !remote ) {
5137 xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
5138 }
5139
5140 // Set the Accepts header for the server, depending on the dataType
5141 xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
5142 s.accepts[ s.dataType ] + ", */*" :
5143 s.accepts._default );
5144 } catch(e) {}
5145
5146 // Allow custom headers/mimetypes and early abort
5147 if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
5148 // Handle the global AJAX counter
5149 if ( s.global && ! --jQuery.active ) {
5150 jQuery.event.trigger( "ajaxStop" );
5151 }
5152
5153 // close opended socket
5154 xhr.abort();
5155 return false;
5156 }
5157
5158 if ( s.global ) {
5159 trigger("ajaxSend", [xhr, s]);
5160 }
5161
5162 // Wait for a response to come back
5163 var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
5164 // The request was aborted
5165 if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
5166 // Opera doesn't call onreadystatechange before this point
5167 // so we simulate the call
5168 if ( !requestDone ) {
5169 complete();
5170 }
5171
5172 requestDone = true;
5173 if ( xhr ) {
5174 xhr.onreadystatechange = jQuery.noop;
5175 }
5176
5177 // The transfer is complete and the data is available, or the request timed out
5178 } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
5179 requestDone = true;
5180 xhr.onreadystatechange = jQuery.noop;
5181
5182 status = isTimeout === "timeout" ?
5183 "timeout" :
5184 !jQuery.httpSuccess( xhr ) ?
5185 "error" :
5186 s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
5187 "notmodified" :
5188 "success";
5189
5190 var errMsg;
5191
5192 if ( status === "success" ) {
5193 // Watch for, and catch, XML document parse errors
5194 try {
5195 // process the data (runs the xml through httpData regardless of callback)
5196 data = jQuery.httpData( xhr, s.dataType, s );
5197 } catch(err) {
5198 status = "parsererror";
5199 errMsg = err;
5200 }
5201 }
5202
5203 // Make sure that the request was successful or notmodified
5204 if ( status === "success" || status === "notmodified" ) {
5205 // JSONP handles its own success callback
5206 if ( !jsonp ) {
5207 success();
5208 }
5209 } else {
5210 jQuery.handleError(s, xhr, status, errMsg);
5211 }
5212
5213 // Fire the complete handlers
5214 complete();
5215
5216 if ( isTimeout === "timeout" ) {
5217 xhr.abort();
5218 }
5219
5220 // Stop memory leaks
5221 if ( s.async ) {
5222 xhr = null;
5223 }
5224 }
5225 };
5226
5227 // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
5228 // Opera doesn't fire onreadystatechange at all on abort
5229 try {
5230 var oldAbort = xhr.abort;
5231 xhr.abort = function() {
5232 if ( xhr ) {
5233 oldAbort.call( xhr );
5234 }
5235
5236 onreadystatechange( "abort" );
5237 };
5238 } catch(e) { }
5239
5240 // Timeout checker
5241 if ( s.async && s.timeout > 0 ) {
5242 setTimeout(function() {
5243 // Check to see if the request is still happening
5244 if ( xhr && !requestDone ) {
5245 onreadystatechange( "timeout" );
5246 }
5247 }, s.timeout);
5248 }
5249
5250 // Send the data
5251 try {
5252 xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
5253 } catch(e) {
5254 jQuery.handleError(s, xhr, null, e);
5255 // Fire the complete handlers
5256 complete();
5257 }
5258
5259 // firefox 1.5 doesn't fire statechange for sync requests
5260 if ( !s.async ) {
5261 onreadystatechange();
5262 }
5263
5264 function success() {
5265 // If a local callback was specified, fire it and pass it the data
5266 if ( s.success ) {
5267 s.success.call( callbackContext, data, status, xhr );
5268 }
5269
5270 // Fire the global callback
5271 if ( s.global ) {
5272 trigger( "ajaxSuccess", [xhr, s] );
5273 }
5274 }
5275
5276 function complete() {
5277 // Process result
5278 if ( s.complete ) {
5279 s.complete.call( callbackContext, xhr, status);
5280 }
5281
5282 // The request was completed
5283 if ( s.global ) {
5284 trigger( "ajaxComplete", [xhr, s] );
5285 }
5286
5287 // Handle the global AJAX counter
5288 if ( s.global && ! --jQuery.active ) {
5289 jQuery.event.trigger( "ajaxStop" );
5290 }
5291 }
5292
5293 function trigger(type, args) {
5294 (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
5295 }
5296
5297 // return XMLHttpRequest to allow aborting the request etc.
5298 return xhr;
5299 },
5300
5301 handleError: function( s, xhr, status, e ) {
5302 // If a local callback was specified, fire it
5303 if ( s.error ) {
5304 s.error.call( s.context || s, xhr, status, e );
5305 }
5306
5307 // Fire the global callback
5308 if ( s.global ) {
5309 (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
5310 }
5311 },
5312
5313 // Counter for holding the number of active queries
5314 active: 0,
5315
5316 // Determines if an XMLHttpRequest was successful or not
5317 httpSuccess: function( xhr ) {
5318 try {
5319 // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
5320 return !xhr.status && location.protocol === "file:" ||
5321 // Opera returns 0 when status is 304
5322 ( xhr.status >= 200 && xhr.status < 300 ) ||
5323 xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
5324 } catch(e) {}
5325
5326 return false;
5327 },
5328
5329 // Determines if an XMLHttpRequest returns NotModified
5330 httpNotModified: function( xhr, url ) {
5331 var lastModified = xhr.getResponseHeader("Last-Modified"),
5332 etag = xhr.getResponseHeader("Etag");
5333
5334 if ( lastModified ) {
5335 jQuery.lastModified[url] = lastModified;
5336 }
5337
5338 if ( etag ) {
5339 jQuery.etag[url] = etag;
5340 }
5341
5342 // Opera returns 0 when status is 304
5343 return xhr.status === 304 || xhr.status === 0;
5344 },
5345
5346 httpData: function( xhr, type, s ) {
5347 var ct = xhr.getResponseHeader("content-type") || "",
5348 xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
5349 data = xml ? xhr.responseXML : xhr.responseText;
5350
5351 if ( xml && data.documentElement.nodeName === "parsererror" ) {
5352 jQuery.error( "parsererror" );
5353 }
5354
5355 // Allow a pre-filtering function to sanitize the response
5356 // s is checked to keep backwards compatibility
5357 if ( s && s.dataFilter ) {
5358 data = s.dataFilter( data, type );
5359 }
5360
5361 // The filter can actually parse the response
5362 if ( typeof data === "string" ) {
5363 // Get the JavaScript object, if JSON is used.
5364 if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
5365 data = jQuery.parseJSON( data );
5366
5367 // If the type is "script", eval it in global context
5368 } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
5369 jQuery.globalEval( data );
5370 }
5371 }
5372
5373 return data;
5374 },
5375
5376 // Serialize an array of form elements or a set of
5377 // key/values into a query string
5378 param: function( a, traditional ) {
5379 var s = [];
5380
5381 // Set traditional to true for jQuery <= 1.3.2 behavior.
5382 if ( traditional === undefined ) {
5383 traditional = jQuery.ajaxSettings.traditional;
5384 }
5385
5386 // If an array was passed in, assume that it is an array of form elements.
5387 if ( jQuery.isArray(a) || a.jquery ) {
5388 // Serialize the form elements
5389 jQuery.each( a, function() {
5390 add( this.name, this.value );
5391 });
5392
5393 } else {
5394 // If traditional, encode the "old" way (the way 1.3.2 or older
5395 // did it), otherwise encode params recursively.
5396 for ( var prefix in a ) {
5397 buildParams( prefix, a[prefix] );
5398 }
5399 }
5400
5401 // Return the resulting serialization
5402 return s.join("&").replace(r20, "+");
5403
5404 function buildParams( prefix, obj ) {
5405 if ( jQuery.isArray(obj) ) {
5406 // Serialize array item.
5407 jQuery.each( obj, function( i, v ) {
5408 if ( traditional || /\[\]$/.test( prefix ) ) {
5409 // Treat each array item as a scalar.
5410 add( prefix, v );
5411 } else {
5412 // If array item is non-scalar (array or object), encode its
5413 // numeric index to resolve deserialization ambiguity issues.
5414 // Note that rack (as of 1.0.0) can't currently deserialize
5415 // nested arrays properly, and attempting to do so may cause
5416 // a server error. Possible fixes are to modify rack's
5417 // deserialization algorithm or to provide an option or flag
5418 // to force array serialization to be shallow.
5419 buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
5420 }
5421 });
5422
5423 } else if ( !traditional && obj != null && typeof obj === "object" ) {
5424 // Serialize object item.
5425 jQuery.each( obj, function( k, v ) {
5426 buildParams( prefix + "[" + k + "]", v );
5427 });
5428
5429 } else {
5430 // Serialize scalar item.
5431 add( prefix, obj );
5432 }
5433 }
5434
5435 function add( key, value ) {
5436 // If value is a function, invoke it and return its value
5437 value = jQuery.isFunction(value) ? value() : value;
5438 s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
5439 }
5440 }
5441});
5442var elemdisplay = {},
5443 rfxtypes = /toggle|show|hide/,
5444 rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
5445 timerId,
5446 fxAttrs = [
5447 // height animations
5448 [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
5449 // width animations
5450 [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
5451 // opacity animations
5452 [ "opacity" ]
5453 ];
5454
5455jQuery.fn.extend({
5456 show: function( speed, callback ) {
5457 if ( speed || speed === 0) {
5458 return this.animate( genFx("show", 3), speed, callback);
5459
5460 } else {
5461 for ( var i = 0, l = this.length; i < l; i++ ) {
5462 var old = jQuery.data(this[i], "olddisplay");
5463
5464 this[i].style.display = old || "";
5465
5466 if ( jQuery.css(this[i], "display") === "none" ) {
5467 var nodeName = this[i].nodeName, display;
5468
5469 if ( elemdisplay[ nodeName ] ) {
5470 display = elemdisplay[ nodeName ];
5471
5472 } else {
5473 var elem = jQuery("<" + nodeName + " />").appendTo("body");
5474
5475 display = elem.css("display");
5476
5477 if ( display === "none" ) {
5478 display = "block";
5479 }
5480
5481 elem.remove();
5482
5483 elemdisplay[ nodeName ] = display;
5484 }
5485
5486 jQuery.data(this[i], "olddisplay", display);
5487 }
5488 }
5489
5490 // Set the display of the elements in a second loop
5491 // to avoid the constant reflow
5492 for ( var j = 0, k = this.length; j < k; j++ ) {
5493 this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
5494 }
5495
5496 return this;
5497 }
5498 },
5499
5500 hide: function( speed, callback ) {
5501 if ( speed || speed === 0 ) {
5502 return this.animate( genFx("hide", 3), speed, callback);
5503
5504 } else {
5505 for ( var i = 0, l = this.length; i < l; i++ ) {
5506 var old = jQuery.data(this[i], "olddisplay");
5507 if ( !old && old !== "none" ) {
5508 jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
5509 }
5510 }
5511
5512 // Set the display of the elements in a second loop
5513 // to avoid the constant reflow
5514 for ( var j = 0, k = this.length; j < k; j++ ) {
5515 this[j].style.display = "none";
5516 }
5517
5518 return this;
5519 }
5520 },
5521
5522 // Save the old toggle function
5523 _toggle: jQuery.fn.toggle,
5524
5525 toggle: function( fn, fn2 ) {
5526 var bool = typeof fn === "boolean";
5527
5528 if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
5529 this._toggle.apply( this, arguments );
5530
5531 } else if ( fn == null || bool ) {
5532 this.each(function() {
5533 var state = bool ? fn : jQuery(this).is(":hidden");
5534 jQuery(this)[ state ? "show" : "hide" ]();
5535 });
5536
5537 } else {
5538 this.animate(genFx("toggle", 3), fn, fn2);
5539 }
5540
5541 return this;
5542 },
5543
5544 fadeTo: function( speed, to, callback ) {
5545 return this.filter(":hidden").css("opacity", 0).show().end()
5546 .animate({opacity: to}, speed, callback);
5547 },
5548
5549 animate: function( prop, speed, easing, callback ) {
5550 var optall = jQuery.speed(speed, easing, callback);
5551
5552 if ( jQuery.isEmptyObject( prop ) ) {
5553 return this.each( optall.complete );
5554 }
5555
5556 return this[ optall.queue === false ? "each" : "queue" ](function() {
5557 var opt = jQuery.extend({}, optall), p,
5558 hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
5559 self = this;
5560
5561 for ( p in prop ) {
5562 var name = p.replace(rdashAlpha, fcamelCase);
5563
5564 if ( p !== name ) {
5565 prop[ name ] = prop[ p ];
5566 delete prop[ p ];
5567 p = name;
5568 }
5569
5570 if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
5571 return opt.complete.call(this);
5572 }
5573
5574 if ( ( p === "height" || p === "width" ) && this.style ) {
5575 // Store display property
5576 opt.display = jQuery.css(this, "display");
5577
5578 // Make sure that nothing sneaks out
5579 opt.overflow = this.style.overflow;
5580 }
5581
5582 if ( jQuery.isArray( prop[p] ) ) {
5583 // Create (if needed) and add to specialEasing
5584 (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
5585 prop[p] = prop[p][0];
5586 }
5587 }
5588
5589 if ( opt.overflow != null ) {
5590 this.style.overflow = "hidden";
5591 }
5592
5593 opt.curAnim = jQuery.extend({}, prop);
5594
5595 jQuery.each( prop, function( name, val ) {
5596 var e = new jQuery.fx( self, opt, name );
5597
5598 if ( rfxtypes.test(val) ) {
5599 e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
5600
5601 } else {
5602 var parts = rfxnum.exec(val),
5603 start = e.cur(true) || 0;
5604
5605 if ( parts ) {
5606 var end = parseFloat( parts[2] ),
5607 unit = parts[3] || "px";
5608
5609 // We need to compute starting value
5610 if ( unit !== "px" ) {
5611 self.style[ name ] = (end || 1) + unit;
5612 start = ((end || 1) / e.cur(true)) * start;
5613 self.style[ name ] = start + unit;
5614 }
5615
5616 // If a +=/-= token was provided, we're doing a relative animation
5617 if ( parts[1] ) {
5618 end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
5619 }
5620
5621 e.custom( start, end, unit );
5622
5623 } else {
5624 e.custom( start, val, "" );
5625 }
5626 }
5627 });
5628
5629 // For JS strict compliance
5630 return true;
5631 });
5632 },
5633
5634 stop: function( clearQueue, gotoEnd ) {
5635 var timers = jQuery.timers;
5636
5637 if ( clearQueue ) {
5638 this.queue([]);
5639 }
5640
5641 this.each(function() {
5642 // go in reverse order so anything added to the queue during the loop is ignored
5643 for ( var i = timers.length - 1; i >= 0; i-- ) {
5644 if ( timers[i].elem === this ) {
5645 if (gotoEnd) {
5646 // force the next step to be the last
5647 timers[i](true);
5648 }
5649
5650 timers.splice(i, 1);
5651 }
5652 }
5653 });
5654
5655 // start the next in the queue if the last step wasn't forced
5656 if ( !gotoEnd ) {
5657 this.dequeue();
5658 }
5659
5660 return this;
5661 }
5662
5663});
5664
5665// Generate shortcuts for custom animations
5666jQuery.each({
5667 slideDown: genFx("show", 1),
5668 slideUp: genFx("hide", 1),
5669 slideToggle: genFx("toggle", 1),
5670 fadeIn: { opacity: "show" },
5671 fadeOut: { opacity: "hide" }
5672}, function( name, props ) {
5673 jQuery.fn[ name ] = function( speed, callback ) {
5674 return this.animate( props, speed, callback );
5675 };
5676});
5677
5678jQuery.extend({
5679 speed: function( speed, easing, fn ) {
5680 var opt = speed && typeof speed === "object" ? speed : {
5681 complete: fn || !fn && easing ||
5682 jQuery.isFunction( speed ) && speed,
5683 duration: speed,
5684 easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
5685 };
5686
5687 opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
5688 jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
5689
5690 // Queueing
5691 opt.old = opt.complete;
5692 opt.complete = function() {
5693 if ( opt.queue !== false ) {
5694 jQuery(this).dequeue();
5695 }
5696 if ( jQuery.isFunction( opt.old ) ) {
5697 opt.old.call( this );
5698 }
5699 };
5700
5701 return opt;
5702 },
5703
5704 easing: {
5705 linear: function( p, n, firstNum, diff ) {
5706 return firstNum + diff * p;
5707 },
5708 swing: function( p, n, firstNum, diff ) {
5709 return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
5710 }
5711 },
5712
5713 timers: [],
5714
5715 fx: function( elem, options, prop ) {
5716 this.options = options;
5717 this.elem = elem;
5718 this.prop = prop;
5719
5720 if ( !options.orig ) {
5721 options.orig = {};
5722 }
5723 }
5724
5725});
5726
5727jQuery.fx.prototype = {
5728 // Simple function for setting a style value
5729 update: function() {
5730 if ( this.options.step ) {
5731 this.options.step.call( this.elem, this.now, this );
5732 }
5733
5734 (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
5735
5736 // Set display property to block for height/width animations
5737 if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
5738 this.elem.style.display = "block";
5739 }
5740 },
5741
5742 // Get the current size
5743 cur: function( force ) {
5744 if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
5745 return this.elem[ this.prop ];
5746 }
5747
5748 var r = parseFloat(jQuery.css(this.elem, this.prop, force));
5749 return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
5750 },
5751
5752 // Start an animation from one number to another
5753 custom: function( from, to, unit ) {
5754 this.startTime = now();
5755 this.start = from;
5756 this.end = to;
5757 this.unit = unit || this.unit || "px";
5758 this.now = this.start;
5759 this.pos = this.state = 0;
5760
5761 var self = this;
5762 function t( gotoEnd ) {
5763 return self.step(gotoEnd);
5764 }
5765
5766 t.elem = this.elem;
5767
5768 if ( t() && jQuery.timers.push(t) && !timerId ) {
5769 timerId = setInterval(jQuery.fx.tick, 13);
5770 }
5771 },
5772
5773 // Simple 'show' function
5774 show: function() {
5775 // Remember where we started, so that we can go back to it later
5776 this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
5777 this.options.show = true;
5778
5779 // Begin the animation
5780 // Make sure that we start at a small width/height to avoid any
5781 // flash of content
5782 this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
5783
5784 // Start by showing the element
5785 jQuery( this.elem ).show();
5786 },
5787
5788 // Simple 'hide' function
5789 hide: function() {
5790 // Remember where we started, so that we can go back to it later
5791 this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
5792 this.options.hide = true;
5793
5794 // Begin the animation
5795 this.custom(this.cur(), 0);
5796 },
5797
5798 // Each step of an animation
5799 step: function( gotoEnd ) {
5800 var t = now(), done = true;
5801
5802 if ( gotoEnd || t >= this.options.duration + this.startTime ) {
5803 this.now = this.end;
5804 this.pos = this.state = 1;
5805 this.update();
5806
5807 this.options.curAnim[ this.prop ] = true;
5808
5809 for ( var i in this.options.curAnim ) {
5810 if ( this.options.curAnim[i] !== true ) {
5811 done = false;
5812 }
5813 }
5814
5815 if ( done ) {
5816 if ( this.options.display != null ) {
5817 // Reset the overflow
5818 this.elem.style.overflow = this.options.overflow;
5819
5820 // Reset the display
5821 var old = jQuery.data(this.elem, "olddisplay");
5822 this.elem.style.display = old ? old : this.options.display;
5823
5824 if ( jQuery.css(this.elem, "display") === "none" ) {
5825 this.elem.style.display = "block";
5826 }
5827 }
5828
5829 // Hide the element if the "hide" operation was done
5830 if ( this.options.hide ) {
5831 jQuery(this.elem).hide();
5832 }
5833
5834 // Reset the properties, if the item has been hidden or shown
5835 if ( this.options.hide || this.options.show ) {
5836 for ( var p in this.options.curAnim ) {
5837 jQuery.style(this.elem, p, this.options.orig[p]);
5838 }
5839 }
5840
5841 // Execute the complete function
5842 this.options.complete.call( this.elem );
5843 }
5844
5845 return false;
5846
5847 } else {
5848 var n = t - this.startTime;
5849 this.state = n / this.options.duration;
5850
5851 // Perform the easing function, defaults to swing
5852 var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
5853 var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
5854 this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
5855 this.now = this.start + ((this.end - this.start) * this.pos);
5856
5857 // Perform the next step of the animation
5858 this.update();
5859 }
5860
5861 return true;
5862 }
5863};
5864
5865jQuery.extend( jQuery.fx, {
5866 tick: function() {
5867 var timers = jQuery.timers;
5868
5869 for ( var i = 0; i < timers.length; i++ ) {
5870 if ( !timers[i]() ) {
5871 timers.splice(i--, 1);
5872 }
5873 }
5874
5875 if ( !timers.length ) {
5876 jQuery.fx.stop();
5877 }
5878 },
5879
5880 stop: function() {
5881 clearInterval( timerId );
5882 timerId = null;
5883 },
5884
5885 speeds: {
5886 slow: 600,
5887 fast: 200,
5888 // Default speed
5889 _default: 400
5890 },
5891
5892 step: {
5893 opacity: function( fx ) {
5894 jQuery.style(fx.elem, "opacity", fx.now);
5895 },
5896
5897 _default: function( fx ) {
5898 if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
5899 fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
5900 } else {
5901 fx.elem[ fx.prop ] = fx.now;
5902 }
5903 }
5904 }
5905});
5906
5907if ( jQuery.expr && jQuery.expr.filters ) {
5908 jQuery.expr.filters.animated = function( elem ) {
5909 return jQuery.grep(jQuery.timers, function( fn ) {
5910 return elem === fn.elem;
5911 }).length;
5912 };
5913}
5914
5915function genFx( type, num ) {
5916 var obj = {};
5917
5918 jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
5919 obj[ this ] = type;
5920 });
5921
5922 return obj;
5923}
5924if ( "getBoundingClientRect" in document.documentElement ) {
5925 jQuery.fn.offset = function( options ) {
5926 var elem = this[0];
5927
5928 if ( options ) {
5929 return this.each(function( i ) {
5930 jQuery.offset.setOffset( this, options, i );
5931 });
5932 }
5933
5934 if ( !elem || !elem.ownerDocument ) {
5935 return null;
5936 }
5937
5938 if ( elem === elem.ownerDocument.body ) {
5939 return jQuery.offset.bodyOffset( elem );
5940 }
5941
5942 var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
5943 clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
5944 top = box.top + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
5945 left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
5946
5947 return { top: top, left: left };
5948 };
5949
5950} else {
5951 jQuery.fn.offset = function( options ) {
5952 var elem = this[0];
5953
5954 if ( options ) {
5955 return this.each(function( i ) {
5956 jQuery.offset.setOffset( this, options, i );
5957 });
5958 }
5959
5960 if ( !elem || !elem.ownerDocument ) {
5961 return null;
5962 }
5963
5964 if ( elem === elem.ownerDocument.body ) {
5965 return jQuery.offset.bodyOffset( elem );
5966 }
5967
5968 jQuery.offset.initialize();
5969
5970 var offsetParent = elem.offsetParent, prevOffsetParent = elem,
5971 doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
5972 body = doc.body, defaultView = doc.defaultView,
5973 prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
5974 top = elem.offsetTop, left = elem.offsetLeft;
5975
5976 while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
5977 if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
5978 break;
5979 }
5980
5981 computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
5982 top -= elem.scrollTop;
5983 left -= elem.scrollLeft;
5984
5985 if ( elem === offsetParent ) {
5986 top += elem.offsetTop;
5987 left += elem.offsetLeft;
5988
5989 if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
5990 top += parseFloat( computedStyle.borderTopWidth ) || 0;
5991 left += parseFloat( computedStyle.borderLeftWidth ) || 0;
5992 }
5993
5994 prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
5995 }
5996
5997 if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
5998 top += parseFloat( computedStyle.borderTopWidth ) || 0;
5999 left += parseFloat( computedStyle.borderLeftWidth ) || 0;
6000 }
6001
6002 prevComputedStyle = computedStyle;
6003 }
6004
6005 if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
6006 top += body.offsetTop;
6007 left += body.offsetLeft;
6008 }
6009
6010 if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
6011 top += Math.max( docElem.scrollTop, body.scrollTop );
6012 left += Math.max( docElem.scrollLeft, body.scrollLeft );
6013 }
6014
6015 return { top: top, left: left };
6016 };
6017}
6018
6019jQuery.offset = {
6020 initialize: function() {
6021 var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
6022 html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
6023
6024 jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
6025
6026 container.innerHTML = html;
6027 body.insertBefore( container, body.firstChild );
6028 innerDiv = container.firstChild;
6029 checkDiv = innerDiv.firstChild;
6030 td = innerDiv.nextSibling.firstChild.firstChild;
6031
6032 this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
6033 this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
6034
6035 checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
6036 // safari subtracts parent border width here which is 5px
6037 this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
6038 checkDiv.style.position = checkDiv.style.top = "";
6039
6040 innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
6041 this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
6042
6043 this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
6044
6045 body.removeChild( container );
6046 body = container = innerDiv = checkDiv = table = td = null;
6047 jQuery.offset.initialize = jQuery.noop;
6048 },
6049
6050 bodyOffset: function( body ) {
6051 var top = body.offsetTop, left = body.offsetLeft;
6052
6053 jQuery.offset.initialize();
6054
6055 if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
6056 top += parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0;
6057 left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
6058 }
6059
6060 return { top: top, left: left };
6061 },
6062
6063 setOffset: function( elem, options, i ) {
6064 // set position first, in-case top/left are set even on static elem
6065 if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
6066 elem.style.position = "relative";
6067 }
6068 var curElem = jQuery( elem ),
6069 curOffset = curElem.offset(),
6070 curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
6071 curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
6072
6073 if ( jQuery.isFunction( options ) ) {
6074 options = options.call( elem, i, curOffset );
6075 }
6076
6077 var props = {
6078 top: (options.top - curOffset.top) + curTop,
6079 left: (options.left - curOffset.left) + curLeft
6080 };
6081
6082 if ( "using" in options ) {
6083 options.using.call( elem, props );
6084 } else {
6085 curElem.css( props );
6086 }
6087 }
6088};
6089
6090
6091jQuery.fn.extend({
6092 position: function() {
6093 if ( !this[0] ) {
6094 return null;
6095 }
6096
6097 var elem = this[0],
6098
6099 // Get *real* offsetParent
6100 offsetParent = this.offsetParent(),
6101
6102 // Get correct offsets
6103 offset = this.offset(),
6104 parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
6105
6106 // Subtract element margins
6107 // note: when an element has margin: auto the offsetLeft and marginLeft
6108 // are the same in Safari causing offset.left to incorrectly be 0
6109 offset.top -= parseFloat( jQuery.curCSS(elem, "marginTop", true) ) || 0;
6110 offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
6111
6112 // Add offsetParent borders
6113 parentOffset.top += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth", true) ) || 0;
6114 parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
6115
6116 // Subtract the two offsets
6117 return {
6118 top: offset.top - parentOffset.top,
6119 left: offset.left - parentOffset.left
6120 };
6121 },
6122
6123 offsetParent: function() {
6124 return this.map(function() {
6125 var offsetParent = this.offsetParent || document.body;
6126 while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
6127 offsetParent = offsetParent.offsetParent;
6128 }
6129 return offsetParent;
6130 });
6131 }
6132});
6133
6134
6135// Create scrollLeft and scrollTop methods
6136jQuery.each( ["Left", "Top"], function( i, name ) {
6137 var method = "scroll" + name;
6138
6139 jQuery.fn[ method ] = function(val) {
6140 var elem = this[0], win;
6141
6142 if ( !elem ) {
6143 return null;
6144 }
6145
6146 if ( val !== undefined ) {
6147 // Set the scroll offset
6148 return this.each(function() {
6149 win = getWindow( this );
6150
6151 if ( win ) {
6152 win.scrollTo(
6153 !i ? val : jQuery(win).scrollLeft(),
6154 i ? val : jQuery(win).scrollTop()
6155 );
6156
6157 } else {
6158 this[ method ] = val;
6159 }
6160 });
6161 } else {
6162 win = getWindow( elem );
6163
6164 // Return the scroll offset
6165 return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
6166 jQuery.support.boxModel && win.document.documentElement[ method ] ||
6167 win.document.body[ method ] :
6168 elem[ method ];
6169 }
6170 };
6171});
6172
6173function getWindow( elem ) {
6174 return ("scrollTo" in elem && elem.document) ?
6175 elem :
6176 elem.nodeType === 9 ?
6177 elem.defaultView || elem.parentWindow :
6178 false;
6179}
6180// Create innerHeight, innerWidth, outerHeight and outerWidth methods
6181jQuery.each([ "Height", "Width" ], function( i, name ) {
6182
6183 var type = name.toLowerCase();
6184
6185 // innerHeight and innerWidth
6186 jQuery.fn["inner" + name] = function() {
6187 return this[0] ?
6188 jQuery.css( this[0], type, false, "padding" ) :
6189 null;
6190 };
6191
6192 // outerHeight and outerWidth
6193 jQuery.fn["outer" + name] = function( margin ) {
6194 return this[0] ?
6195 jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
6196 null;
6197 };
6198
6199 jQuery.fn[ type ] = function( size ) {
6200 // Get window width or height
6201 var elem = this[0];
6202 if ( !elem ) {
6203 return size == null ? null : this;
6204 }
6205
6206 if ( jQuery.isFunction( size ) ) {
6207 return this.each(function( i ) {
6208 var self = jQuery( this );
6209 self[ type ]( size.call( this, i, self[ type ]() ) );
6210 });
6211 }
6212
6213 return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
6214 // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
6215 elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
6216 elem.document.body[ "client" + name ] :
6217
6218 // Get document width or height
6219 (elem.nodeType === 9) ? // is it a document
6220 // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
6221 Math.max(
6222 elem.documentElement["client" + name],
6223 elem.body["scroll" + name], elem.documentElement["scroll" + name],
6224 elem.body["offset" + name], elem.documentElement["offset" + name]
6225 ) :
6226
6227 // Get or set width or height on the element
6228 size === undefined ?
6229 // Get width or height on the element
6230 jQuery.css( elem, type ) :
6231
6232 // Set the width or height on the element (default to pixels if value is unitless)
6233 this.css( type, typeof size === "string" ? size : size + "px" );
6234 };
6235
6236});
6237// Expose jQuery to the global object
6238window.jQuery = window.$ = jQuery;
6239
6240})(window); \ No newline at end of file
diff --git a/Blocks/syntax/tests/js/qunit.css b/Blocks/syntax/tests/js/qunit.css
new file mode 100644
index 0000000..cc54391
--- /dev/null
+++ b/Blocks/syntax/tests/js/qunit.css
@@ -0,0 +1,135 @@
1/**
2 * SyntaxHighlighter
3 * http://alexgorbatchev.com/SyntaxHighlighter
4 *
5 * SyntaxHighlighter is donationware. If you are using it, please donate.
6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 *
8 * @version
9 * 3.0.83 (July 02 2010)
10 *
11 * @copyright
12 * Copyright (C) 2004-2010 Alex Gorbatchev.
13 *
14 * @license
15 * Dual licensed under the MIT and GPL licenses.
16 */
17
18ol#qunit-tests {
19 font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
20 margin:0;
21 padding:0;
22 list-style-position:inside;
23
24 font-size: smaller;
25}
26ol#qunit-tests li{
27 padding:0.4em 0.5em 0.4em 2.5em;
28 border-bottom:1px solid #fff;
29 font-size:small;
30 list-style-position:inside;
31}
32ol#qunit-tests li ol{
33 box-shadow: inset 0px 2px 13px #999;
34 -moz-box-shadow: inset 0px 2px 13px #999;
35 -webkit-box-shadow: inset 0px 2px 13px #999;
36 margin-top:0.5em;
37 margin-left:0;
38 padding:0.5em;
39 background-color:#fff;
40 border-radius:15px;
41 -moz-border-radius: 15px;
42 -webkit-border-radius: 15px;
43}
44ol#qunit-tests li li{
45 border-bottom:none;
46 margin:0.5em;
47 background-color:#fff;
48 list-style-position: inside;
49 padding:0.4em 0.5em 0.4em 0.5em;
50}
51
52ol#qunit-tests li li.pass{
53 border-left:26px solid #C6E746;
54 background-color:#fff;
55 color:#5E740B;
56 }
57ol#qunit-tests li li.fail{
58 border-left:26px solid #EE5757;
59 background-color:#fff;
60 color:#710909;
61}
62ol#qunit-tests li.pass{
63 background-color:#D2E0E6;
64 color:#528CE0;
65}
66ol#qunit-tests li.fail{
67 background-color:#EE5757;
68 color:#000;
69}
70ol#qunit-tests li strong {
71 cursor:pointer;
72}
73h1#qunit-header{
74 background-color:#0d3349;
75 margin:0;
76 padding:0.5em 0 0.5em 1em;
77 color:#fff;
78 font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
79 border-top-right-radius:15px;
80 border-top-left-radius:15px;
81 -moz-border-radius-topright:15px;
82 -moz-border-radius-topleft:15px;
83 -webkit-border-top-right-radius:15px;
84 -webkit-border-top-left-radius:15px;
85 text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
86}
87h2#qunit-banner{
88 font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
89 height:5px;
90 margin:0;
91 padding:0;
92}
93h2#qunit-banner.qunit-pass{
94 background-color:#C6E746;
95}
96h2#qunit-banner.qunit-fail, #qunit-testrunner-toolbar {
97 background-color:#EE5757;
98}
99#qunit-testrunner-toolbar {
100 font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
101 padding:0;
102 /*width:80%;*/
103 padding:0em 0 0.5em 2em;
104 font-size: small;
105}
106h2#qunit-userAgent {
107 font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
108 background-color:#2b81af;
109 margin:0;
110 padding:0;
111 color:#fff;
112 font-size: small;
113 padding:0.5em 0 0.5em 2.5em;
114 text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
115}
116p#qunit-testresult{
117 font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
118 margin:0;
119 font-size: small;
120 color:#2b81af;
121 border-bottom-right-radius:15px;
122 border-bottom-left-radius:15px;
123 -moz-border-radius-bottomright:15px;
124 -moz-border-radius-bottomleft:15px;
125 -webkit-border-bottom-right-radius:15px;
126 -webkit-border-bottom-left-radius:15px;
127 background-color:#D2E0E6;
128 padding:0.5em 0.5em 0.5em 2.5em;
129}
130strong b.fail{
131 color:#710909;
132 }
133strong b.pass{
134 color:#5E740B;
135 }
diff --git a/Blocks/syntax/tests/js/qunit.js b/Blocks/syntax/tests/js/qunit.js
new file mode 100644
index 0000000..9ef5f8d
--- /dev/null
+++ b/Blocks/syntax/tests/js/qunit.js
@@ -0,0 +1,1069 @@
1/*
2 * QUnit - A JavaScript Unit Testing Framework
3 *
4 * http://docs.jquery.com/QUnit
5 *
6 * Copyright (c) 2009 John Resig, Jörn Zaefferer
7 * Dual licensed under the MIT (MIT-LICENSE.txt)
8 * and GPL (GPL-LICENSE.txt) licenses.
9 */
10
11(function(window) {
12
13var QUnit = {
14
15 // Initialize the configuration options
16 init: function() {
17 config = {
18 stats: { all: 0, bad: 0 },
19 moduleStats: { all: 0, bad: 0 },
20 started: +new Date,
21 updateRate: 1000,
22 blocking: false,
23 autorun: false,
24 assertions: [],
25 filters: [],
26 queue: []
27 };
28
29 var tests = id("qunit-tests"),
30 banner = id("qunit-banner"),
31 result = id("qunit-testresult");
32
33 if ( tests ) {
34 tests.innerHTML = "";
35 }
36
37 if ( banner ) {
38 banner.className = "";
39 }
40
41 if ( result ) {
42 result.parentNode.removeChild( result );
43 }
44 },
45
46 // call on start of module test to prepend name to all tests
47 module: function(name, testEnvironment) {
48 config.currentModule = name;
49
50 synchronize(function() {
51 if ( config.currentModule ) {
52 QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
53 }
54
55 config.currentModule = name;
56 config.moduleTestEnvironment = testEnvironment;
57 config.moduleStats = { all: 0, bad: 0 };
58
59 QUnit.moduleStart( name, testEnvironment );
60 });
61 },
62
63 asyncTest: function(testName, expected, callback) {
64 if ( arguments.length === 2 ) {
65 callback = expected;
66 expected = 0;
67 }
68
69 QUnit.test(testName, expected, callback, true);
70 },
71
72 test: function(testName, expected, callback, async) {
73 var name = testName, testEnvironment, testEnvironmentArg;
74
75 if ( arguments.length === 2 ) {
76 callback = expected;
77 expected = null;
78 }
79 // is 2nd argument a testEnvironment?
80 if ( expected && typeof expected === 'object') {
81 testEnvironmentArg = expected;
82 expected = null;
83 }
84
85 if ( config.currentModule ) {
86 name = config.currentModule + " module: " + name;
87 }
88
89 if ( !validTest(name) ) {
90 return;
91 }
92
93 synchronize(function() {
94 QUnit.testStart( testName );
95
96 testEnvironment = extend({
97 setup: function() {},
98 teardown: function() {}
99 }, config.moduleTestEnvironment);
100 if (testEnvironmentArg) {
101 extend(testEnvironment,testEnvironmentArg);
102 }
103
104 // allow utility functions to access the current test environment
105 QUnit.current_testEnvironment = testEnvironment;
106
107 config.assertions = [];
108 config.expected = expected;
109
110 try {
111 if ( !config.pollution ) {
112 saveGlobal();
113 }
114
115 testEnvironment.setup.call(testEnvironment);
116 } catch(e) {
117 QUnit.ok( false, "Setup failed on " + name + ": " + e.message );
118 }
119
120 if ( async ) {
121 QUnit.stop();
122 }
123
124 try {
125 callback.call(testEnvironment);
126 } catch(e) {
127 fail("Test " + name + " died, exception and test follows", e, callback);
128 QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message );
129 // else next test will carry the responsibility
130 saveGlobal();
131
132 // Restart the tests if they're blocking
133 if ( config.blocking ) {
134 start();
135 }
136 }
137 });
138
139 synchronize(function() {
140 try {
141 checkPollution();
142 testEnvironment.teardown.call(testEnvironment);
143 } catch(e) {
144 QUnit.ok( false, "Teardown failed on " + name + ": " + e.message );
145 }
146
147 try {
148 QUnit.reset();
149 } catch(e) {
150 fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset);
151 }
152
153 if ( config.expected && config.expected != config.assertions.length ) {
154 QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" );
155 }
156
157 var good = 0, bad = 0,
158 tests = id("qunit-tests");
159
160 config.stats.all += config.assertions.length;
161 config.moduleStats.all += config.assertions.length;
162
163 if ( tests ) {
164 var ol = document.createElement("ol");
165 ol.style.display = "none";
166
167 for ( var i = 0; i < config.assertions.length; i++ ) {
168 var assertion = config.assertions[i];
169
170 var li = document.createElement("li");
171 li.className = assertion.result ? "pass" : "fail";
172 li.appendChild(document.createTextNode(assertion.message || "(no message)"));
173 ol.appendChild( li );
174
175 if ( assertion.result ) {
176 good++;
177 } else {
178 bad++;
179 config.stats.bad++;
180 config.moduleStats.bad++;
181 }
182 }
183
184 var b = document.createElement("strong");
185 b.innerHTML = name + " <b style='color:black;'>(<b class='fail'>" + bad + "</b>, <b class='pass'>" + good + "</b>, " + config.assertions.length + ")</b>";
186
187 addEvent(b, "click", function() {
188 var next = b.nextSibling, display = next.style.display;
189 next.style.display = display === "none" ? "block" : "none";
190 });
191
192 addEvent(b, "dblclick", function(e) {
193 var target = e && e.target ? e.target : window.event.srcElement;
194 if ( target.nodeName.toLowerCase() === "strong" ) {
195 var text = "", node = target.firstChild;
196
197 while ( node.nodeType === 3 ) {
198 text += node.nodeValue;
199 node = node.nextSibling;
200 }
201
202 text = text.replace(/(^\s*|\s*$)/g, "");
203
204 if ( window.location ) {
205 window.location.href = window.location.href.match(/^(.+?)(\?.*)?$/)[1] + "?" + encodeURIComponent(text);
206 }
207 }
208 });
209
210 var li = document.createElement("li");
211 li.className = bad ? "fail" : "pass";
212 li.appendChild( b );
213 li.appendChild( ol );
214 tests.appendChild( li );
215
216 if ( bad ) {
217 var toolbar = id("qunit-testrunner-toolbar");
218 if ( toolbar ) {
219 toolbar.style.display = "block";
220 id("qunit-filter-pass").disabled = null;
221 id("qunit-filter-missing").disabled = null;
222 }
223 }
224
225 } else {
226 for ( var i = 0; i < config.assertions.length; i++ ) {
227 if ( !config.assertions[i].result ) {
228 bad++;
229 config.stats.bad++;
230 config.moduleStats.bad++;
231 }
232 }
233 }
234
235 QUnit.testDone( testName, bad, config.assertions.length );
236
237 if ( !window.setTimeout && !config.queue.length ) {
238 done();
239 }
240 });
241
242 if ( window.setTimeout && !config.doneTimer ) {
243 config.doneTimer = window.setTimeout(function(){
244 if ( !config.queue.length ) {
245 done();
246 } else {
247 synchronize( done );
248 }
249 }, 13);
250 }
251 },
252
253 /**
254 * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
255 */
256 expect: function(asserts) {
257 config.expected = asserts;
258 },
259
260 /**
261 * Asserts true.
262 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
263 */
264 ok: function(a, msg) {
265 QUnit.log(a, msg);
266
267 config.assertions.push({
268 result: !!a,
269 message: msg
270 });
271 },
272
273 /**
274 * Checks that the first two arguments are equal, with an optional message.
275 * Prints out both actual and expected values.
276 *
277 * Prefered to ok( actual == expected, message )
278 *
279 * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
280 *
281 * @param Object actual
282 * @param Object expected
283 * @param String message (optional)
284 */
285 equal: function(actual, expected, message) {
286 push(expected == actual, actual, expected, message);
287 },
288
289 notEqual: function(actual, expected, message) {
290 push(expected != actual, actual, expected, message);
291 },
292
293 deepEqual: function(a, b, message) {
294 push(QUnit.equiv(a, b), a, b, message);
295 },
296
297 notDeepEqual: function(a, b, message) {
298 push(!QUnit.equiv(a, b), a, b, message);
299 },
300
301 strictEqual: function(actual, expected, message) {
302 push(expected === actual, actual, expected, message);
303 },
304
305 notStrictEqual: function(actual, expected, message) {
306 push(expected !== actual, actual, expected, message);
307 },
308
309 start: function() {
310 // A slight delay, to avoid any current callbacks
311 if ( window.setTimeout ) {
312 window.setTimeout(function() {
313 if ( config.timeout ) {
314 clearTimeout(config.timeout);
315 }
316
317 config.blocking = false;
318 process();
319 }, 13);
320 } else {
321 config.blocking = false;
322 process();
323 }
324 },
325
326 stop: function(timeout) {
327 config.blocking = true;
328
329 if ( timeout && window.setTimeout ) {
330 config.timeout = window.setTimeout(function() {
331 QUnit.ok( false, "Test timed out" );
332 QUnit.start();
333 }, timeout);
334 }
335 },
336
337 /**
338 * Resets the test setup. Useful for tests that modify the DOM.
339 */
340 reset: function() {
341 if ( window.jQuery ) {
342 jQuery("#main").html( config.fixture );
343 jQuery.event.global = {};
344 jQuery.ajaxSettings = extend({}, config.ajaxSettings);
345 }
346 },
347
348 /**
349 * Trigger an event on an element.
350 *
351 * @example triggerEvent( document.body, "click" );
352 *
353 * @param DOMElement elem
354 * @param String type
355 */
356 triggerEvent: function( elem, type, event ) {
357 if ( document.createEvent ) {
358 event = document.createEvent("MouseEvents");
359 event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
360 0, 0, 0, 0, 0, false, false, false, false, 0, null);
361 elem.dispatchEvent( event );
362
363 } else if ( elem.fireEvent ) {
364 elem.fireEvent("on"+type);
365 }
366 },
367
368 // Safe object type checking
369 is: function( type, obj ) {
370 return Object.prototype.toString.call( obj ) === "[object "+ type +"]";
371 },
372
373 // Logging callbacks
374 done: function(failures, total) {},
375 log: function(result, message) {},
376 testStart: function(name) {},
377 testDone: function(name, failures, total) {},
378 moduleStart: function(name, testEnvironment) {},
379 moduleDone: function(name, failures, total) {}
380};
381
382// Backwards compatibility, deprecated
383QUnit.equals = QUnit.equal;
384QUnit.same = QUnit.deepEqual;
385
386// Maintain internal state
387var config = {
388 // The queue of tests to run
389 queue: [],
390
391 // block until document ready
392 blocking: true
393};
394
395// Load paramaters
396(function() {
397 var location = window.location || { search: "", protocol: "file:" },
398 GETParams = location.search.slice(1).split('&');
399
400 for ( var i = 0; i < GETParams.length; i++ ) {
401 GETParams[i] = decodeURIComponent( GETParams[i] );
402 if ( GETParams[i] === "noglobals" ) {
403 GETParams.splice( i, 1 );
404 i--;
405 config.noglobals = true;
406 } else if ( GETParams[i].search('=') > -1 ) {
407 GETParams.splice( i, 1 );
408 i--;
409 }
410 }
411
412 // restrict modules/tests by get parameters
413 config.filters = GETParams;
414
415 // Figure out if we're running the tests from a server or not
416 QUnit.isLocal = !!(location.protocol === 'file:');
417})();
418
419// Expose the API as global variables, unless an 'exports'
420// object exists, in that case we assume we're in CommonJS
421if ( typeof exports === "undefined" || typeof require === "undefined" ) {
422 extend(window, QUnit);
423 window.QUnit = QUnit;
424} else {
425 extend(exports, QUnit);
426 exports.QUnit = QUnit;
427}
428
429if ( typeof document === "undefined" || document.readyState === "complete" ) {
430 config.autorun = true;
431}
432
433addEvent(window, "load", function() {
434 // Initialize the config, saving the execution queue
435 var oldconfig = extend({}, config);
436 QUnit.init();
437 extend(config, oldconfig);
438
439 config.blocking = false;
440
441 var userAgent = id("qunit-userAgent");
442 if ( userAgent ) {
443 userAgent.innerHTML = navigator.userAgent;
444 }
445
446 var toolbar = id("qunit-testrunner-toolbar");
447 if ( toolbar ) {
448 toolbar.style.display = "none";
449
450 var filter = document.createElement("input");
451 filter.type = "checkbox";
452 filter.id = "qunit-filter-pass";
453 filter.disabled = true;
454 addEvent( filter, "click", function() {
455 var li = document.getElementsByTagName("li");
456 for ( var i = 0; i < li.length; i++ ) {
457 if ( li[i].className.indexOf("pass") > -1 ) {
458 li[i].style.display = filter.checked ? "none" : "";
459 }
460 }
461 });
462 toolbar.appendChild( filter );
463
464 var label = document.createElement("label");
465 label.setAttribute("for", "qunit-filter-pass");
466 label.innerHTML = "Hide passed tests";
467 toolbar.appendChild( label );
468
469 var missing = document.createElement("input");
470 missing.type = "checkbox";
471 missing.id = "qunit-filter-missing";
472 missing.disabled = true;
473 addEvent( missing, "click", function() {
474 var li = document.getElementsByTagName("li");
475 for ( var i = 0; i < li.length; i++ ) {
476 if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) {
477 li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block";
478 }
479 }
480 });
481 toolbar.appendChild( missing );
482
483 label = document.createElement("label");
484 label.setAttribute("for", "qunit-filter-missing");
485 label.innerHTML = "Hide missing tests (untested code is broken code)";
486 toolbar.appendChild( label );
487 }
488
489 var main = id('main');
490 if ( main ) {
491 config.fixture = main.innerHTML;
492 }
493
494 if ( window.jQuery ) {
495 config.ajaxSettings = window.jQuery.ajaxSettings;
496 }
497
498 QUnit.start();
499});
500
501function done() {
502 if ( config.doneTimer && window.clearTimeout ) {
503 window.clearTimeout( config.doneTimer );
504 config.doneTimer = null;
505 }
506
507 if ( config.queue.length ) {
508 config.doneTimer = window.setTimeout(function(){
509 if ( !config.queue.length ) {
510 done();
511 } else {
512 synchronize( done );
513 }
514 }, 13);
515
516 return;
517 }
518
519 config.autorun = true;
520
521 // Log the last module results
522 if ( config.currentModule ) {
523 QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
524 }
525
526 var banner = id("qunit-banner"),
527 tests = id("qunit-tests"),
528 html = ['Tests completed in ',
529 +new Date - config.started, ' milliseconds.<br/>',
530 '<span class="passed">', config.stats.all - config.stats.bad, '</span> tests of <span class="total">', config.stats.all, '</span> passed, <span class="failed">', config.stats.bad,'</span> failed.'].join('');
531
532 if ( banner ) {
533 banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
534 }
535
536 if ( tests ) {
537 var result = id("qunit-testresult");
538
539 if ( !result ) {
540 result = document.createElement("p");
541 result.id = "qunit-testresult";
542 result.className = "result";
543 tests.parentNode.insertBefore( result, tests.nextSibling );
544 }
545
546 result.innerHTML = html;
547 }
548
549 QUnit.done( config.stats.bad, config.stats.all );
550}
551
552function validTest( name ) {
553 var i = config.filters.length,
554 run = false;
555
556 if ( !i ) {
557 return true;
558 }
559
560 while ( i-- ) {
561 var filter = config.filters[i],
562 not = filter.charAt(0) == '!';
563
564 if ( not ) {
565 filter = filter.slice(1);
566 }
567
568 if ( name.indexOf(filter) !== -1 ) {
569 return !not;
570 }
571
572 if ( not ) {
573 run = true;
574 }
575 }
576
577 return run;
578}
579
580function push(result, actual, expected, message) {
581 message = message || (result ? "okay" : "failed");
582 QUnit.ok( result, result ? message + ": " + QUnit.jsDump.parse(expected) : message + ", expected: " + QUnit.jsDump.parse(expected) + " result: " + QUnit.jsDump.parse(actual) );
583}
584
585function synchronize( callback ) {
586 config.queue.push( callback );
587
588 if ( config.autorun && !config.blocking ) {
589 process();
590 }
591}
592
593function process() {
594 var start = (new Date()).getTime();
595
596 while ( config.queue.length && !config.blocking ) {
597 if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
598 config.queue.shift()();
599
600 } else {
601 setTimeout( process, 13 );
602 break;
603 }
604 }
605}
606
607function saveGlobal() {
608 config.pollution = [];
609
610 if ( config.noglobals ) {
611 for ( var key in window ) {
612 config.pollution.push( key );
613 }
614 }
615}
616
617function checkPollution( name ) {
618 var old = config.pollution;
619 saveGlobal();
620
621 var newGlobals = diff( old, config.pollution );
622 if ( newGlobals.length > 0 ) {
623 ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
624 config.expected++;
625 }
626
627 var deletedGlobals = diff( config.pollution, old );
628 if ( deletedGlobals.length > 0 ) {
629 ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
630 config.expected++;
631 }
632}
633
634// returns a new Array with the elements that are in a but not in b
635function diff( a, b ) {
636 var result = a.slice();
637 for ( var i = 0; i < result.length; i++ ) {
638 for ( var j = 0; j < b.length; j++ ) {
639 if ( result[i] === b[j] ) {
640 result.splice(i, 1);
641 i--;
642 break;
643 }
644 }
645 }
646 return result;
647}
648
649function fail(message, exception, callback) {
650 if ( typeof console !== "undefined" && console.error && console.warn ) {
651 console.error(message);
652 console.error(exception);
653 console.warn(callback.toString());
654
655 } else if ( window.opera && opera.postError ) {
656 opera.postError(message, exception, callback.toString);
657 }
658}
659
660function extend(a, b) {
661 for ( var prop in b ) {
662 a[prop] = b[prop];
663 }
664
665 return a;
666}
667
668function addEvent(elem, type, fn) {
669 if ( elem.addEventListener ) {
670 elem.addEventListener( type, fn, false );
671 } else if ( elem.attachEvent ) {
672 elem.attachEvent( "on" + type, fn );
673 } else {
674 fn();
675 }
676}
677
678function id(name) {
679 return !!(typeof document !== "undefined" && document && document.getElementById) &&
680 document.getElementById( name );
681}
682
683// Test for equality any JavaScript type.
684// Discussions and reference: http://philrathe.com/articles/equiv
685// Test suites: http://philrathe.com/tests/equiv
686// Author: Philippe Rathé <[email protected]>
687QUnit.equiv = function () {
688
689 var innerEquiv; // the real equiv function
690 var callers = []; // stack to decide between skip/abort functions
691 var parents = []; // stack to avoiding loops from circular referencing
692
693
694 // Determine what is o.
695 function hoozit(o) {
696 if (QUnit.is("String", o)) {
697 return "string";
698
699 } else if (QUnit.is("Boolean", o)) {
700 return "boolean";
701
702 } else if (QUnit.is("Number", o)) {
703
704 if (isNaN(o)) {
705 return "nan";
706 } else {
707 return "number";
708 }
709
710 } else if (typeof o === "undefined") {
711 return "undefined";
712
713 // consider: typeof null === object
714 } else if (o === null) {
715 return "null";
716
717 // consider: typeof [] === object
718 } else if (QUnit.is( "Array", o)) {
719 return "array";
720
721 // consider: typeof new Date() === object
722 } else if (QUnit.is( "Date", o)) {
723 return "date";
724
725 // consider: /./ instanceof Object;
726 // /./ instanceof RegExp;
727 // typeof /./ === "function"; // => false in IE and Opera,
728 // true in FF and Safari
729 } else if (QUnit.is( "RegExp", o)) {
730 return "regexp";
731
732 } else if (typeof o === "object") {
733 return "object";
734
735 } else if (QUnit.is( "Function", o)) {
736 return "function";
737 } else {
738 return undefined;
739 }
740 }
741
742 // Call the o related callback with the given arguments.
743 function bindCallbacks(o, callbacks, args) {
744 var prop = hoozit(o);
745 if (prop) {
746 if (hoozit(callbacks[prop]) === "function") {
747 return callbacks[prop].apply(callbacks, args);
748 } else {
749 return callbacks[prop]; // or undefined
750 }
751 }
752 }
753
754 var callbacks = function () {
755
756 // for string, boolean, number and null
757 function useStrictEquality(b, a) {
758 if (b instanceof a.constructor || a instanceof b.constructor) {
759 // to catch short annotaion VS 'new' annotation of a declaration
760 // e.g. var i = 1;
761 // var j = new Number(1);
762 return a == b;
763 } else {
764 return a === b;
765 }
766 }
767
768 return {
769 "string": useStrictEquality,
770 "boolean": useStrictEquality,
771 "number": useStrictEquality,
772 "null": useStrictEquality,
773 "undefined": useStrictEquality,
774
775 "nan": function (b) {
776 return isNaN(b);
777 },
778
779 "date": function (b, a) {
780 return hoozit(b) === "date" && a.valueOf() === b.valueOf();
781 },
782
783 "regexp": function (b, a) {
784 return hoozit(b) === "regexp" &&
785 a.source === b.source && // the regex itself
786 a.global === b.global && // and its modifers (gmi) ...
787 a.ignoreCase === b.ignoreCase &&
788 a.multiline === b.multiline;
789 },
790
791 // - skip when the property is a method of an instance (OOP)
792 // - abort otherwise,
793 // initial === would have catch identical references anyway
794 "function": function () {
795 var caller = callers[callers.length - 1];
796 return caller !== Object &&
797 typeof caller !== "undefined";
798 },
799
800 "array": function (b, a) {
801 var i, j, loop;
802 var len;
803
804 // b could be an object literal here
805 if ( ! (hoozit(b) === "array")) {
806 return false;
807 }
808
809 len = a.length;
810 if (len !== b.length) { // safe and faster
811 return false;
812 }
813
814 //track reference to avoid circular references
815 parents.push(a);
816 for (i = 0; i < len; i++) {
817 loop = false;
818 for(j=0;j<parents.length;j++){
819 if(parents[j] === a[i]){
820 loop = true;//dont rewalk array
821 }
822 }
823 if (!loop && ! innerEquiv(a[i], b[i])) {
824 parents.pop();
825 return false;
826 }
827 }
828 parents.pop();
829 return true;
830 },
831
832 "object": function (b, a) {
833 var i, j, loop;
834 var eq = true; // unless we can proove it
835 var aProperties = [], bProperties = []; // collection of strings
836
837 // comparing constructors is more strict than using instanceof
838 if ( a.constructor !== b.constructor) {
839 return false;
840 }
841
842 // stack constructor before traversing properties
843 callers.push(a.constructor);
844 //track reference to avoid circular references
845 parents.push(a);
846
847 for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
848 loop = false;
849 for(j=0;j<parents.length;j++){
850 if(parents[j] === a[i])
851 loop = true; //don't go down the same path twice
852 }
853 aProperties.push(i); // collect a's properties
854
855 if (!loop && ! innerEquiv(a[i], b[i])) {
856 eq = false;
857 break;
858 }
859 }
860
861 callers.pop(); // unstack, we are done
862 parents.pop();
863
864 for (i in b) {
865 bProperties.push(i); // collect b's properties
866 }
867
868 // Ensures identical properties name
869 return eq && innerEquiv(aProperties.sort(), bProperties.sort());
870 }
871 };
872 }();
873
874 innerEquiv = function () { // can take multiple arguments
875 var args = Array.prototype.slice.apply(arguments);
876 if (args.length < 2) {
877 return true; // end transition
878 }
879
880 return (function (a, b) {
881 if (a === b) {
882 return true; // catch the most you can
883 } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || hoozit(a) !== hoozit(b)) {
884 return false; // don't lose time with error prone cases
885 } else {
886 return bindCallbacks(a, callbacks, [b, a]);
887 }
888
889 // apply transition with (1..n) arguments
890 })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
891 };
892
893 return innerEquiv;
894
895}();
896
897/**
898 * jsDump
899 * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
900 * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
901 * Date: 5/15/2008
902 * @projectDescription Advanced and extensible data dumping for Javascript.
903 * @version 1.0.0
904 * @author Ariel Flesler
905 * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
906 */
907QUnit.jsDump = (function() {
908 function quote( str ) {
909 return '"' + str.toString().replace(/"/g, '\\"') + '"';
910 };
911 function literal( o ) {
912 return o + '';
913 };
914 function join( pre, arr, post ) {
915 var s = jsDump.separator(),
916 base = jsDump.indent(),
917 inner = jsDump.indent(1);
918 if ( arr.join )
919 arr = arr.join( ',' + s + inner );
920 if ( !arr )
921 return pre + post;
922 return [ pre, inner + arr, base + post ].join(s);
923 };
924 function array( arr ) {
925 var i = arr.length, ret = Array(i);
926 this.up();
927 while ( i-- )
928 ret[i] = this.parse( arr[i] );
929 this.down();
930 return join( '[', ret, ']' );
931 };
932
933 var reName = /^function (\w+)/;
934
935 var jsDump = {
936 parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
937 var parser = this.parsers[ type || this.typeOf(obj) ];
938 type = typeof parser;
939
940 return type == 'function' ? parser.call( this, obj ) :
941 type == 'string' ? parser :
942 this.parsers.error;
943 },
944 typeOf:function( obj ) {
945 var type;
946 if ( obj === null ) {
947 type = "null";
948 } else if (typeof obj === "undefined") {
949 type = "undefined";
950 } else if (QUnit.is("RegExp", obj)) {
951 type = "regexp";
952 } else if (QUnit.is("Date", obj)) {
953 type = "date";
954 } else if (QUnit.is("Function", obj)) {
955 type = "function";
956 } else if (obj.setInterval && obj.document && !obj.nodeType) {
957 type = "window";
958 } else if (obj.nodeType === 9) {
959 type = "document";
960 } else if (obj.nodeType) {
961 type = "node";
962 } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
963 type = "array";
964 } else {
965 type = typeof obj;
966 }
967 return type;
968 },
969 separator:function() {
970 return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
971 },
972 indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
973 if ( !this.multiline )
974 return '';
975 var chr = this.indentChar;
976 if ( this.HTML )
977 chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
978 return Array( this._depth_ + (extra||0) ).join(chr);
979 },
980 up:function( a ) {
981 this._depth_ += a || 1;
982 },
983 down:function( a ) {
984 this._depth_ -= a || 1;
985 },
986 setParser:function( name, parser ) {
987 this.parsers[name] = parser;
988 },
989 // The next 3 are exposed so you can use them
990 quote:quote,
991 literal:literal,
992 join:join,
993 //
994 _depth_: 1,
995 // This is the list of parsers, to modify them, use jsDump.setParser
996 parsers:{
997 window: '[Window]',
998 document: '[Document]',
999 error:'[ERROR]', //when no parser is found, shouldn't happen
1000 unknown: '[Unknown]',
1001 'null':'null',
1002 undefined:'undefined',
1003 'function':function( fn ) {
1004 var ret = 'function',
1005 name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
1006 if ( name )
1007 ret += ' ' + name;
1008 ret += '(';
1009
1010 ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join('');
1011 return join( ret, this.parse(fn,'functionCode'), '}' );
1012 },
1013 array: array,
1014 nodelist: array,
1015 arguments: array,
1016 object:function( map ) {
1017 var ret = [ ];
1018 this.up();
1019 for ( var key in map )
1020 ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) );
1021 this.down();
1022 return join( '{', ret, '}' );
1023 },
1024 node:function( node ) {
1025 var open = this.HTML ? '&lt;' : '<',
1026 close = this.HTML ? '&gt;' : '>';
1027
1028 var tag = node.nodeName.toLowerCase(),
1029 ret = open + tag;
1030
1031 for ( var a in this.DOMAttrs ) {
1032 var val = node[this.DOMAttrs[a]];
1033 if ( val )
1034 ret += ' ' + a + '=' + this.parse( val, 'attribute' );
1035 }
1036 return ret + close + open + '/' + tag + close;
1037 },
1038 functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
1039 var l = fn.length;
1040 if ( !l ) return '';
1041
1042 var args = Array(l);
1043 while ( l-- )
1044 args[l] = String.fromCharCode(97+l);//97 is 'a'
1045 return ' ' + args.join(', ') + ' ';
1046 },
1047 key:quote, //object calls it internally, the key part of an item in a map
1048 functionCode:'[code]', //function calls it internally, it's the content of the function
1049 attribute:quote, //node calls it internally, it's an html attribute value
1050 string:quote,
1051 date:quote,
1052 regexp:literal, //regex
1053 number:literal,
1054 'boolean':literal
1055 },
1056 DOMAttrs:{//attributes to dump from nodes, name=>realName
1057 id:'id',
1058 name:'name',
1059 'class':'className'
1060 },
1061 HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
1062 indentChar:' ',//indentation unit
1063 multiline:false //if true, items in a collection, are separated by a \n, else just a space.
1064 };
1065
1066 return jsDump;
1067})();
1068
1069})(this);
diff --git a/Blocks/syntax/tests/syntaxhighlighter_tests.html b/Blocks/syntax/tests/syntaxhighlighter_tests.html
new file mode 100644
index 0000000..58e963f
--- /dev/null
+++ b/Blocks/syntax/tests/syntaxhighlighter_tests.html
@@ -0,0 +1,249 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3<head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5 <title>SyntaxHighlighter Highlight Tests</title>
6
7 <!-- jQuery & QUnit -->
8 <script type="text/javascript" src="js/jquery-1.4.2.js"></script>
9 <script type="text/javascript" src="js/qunit.js"></script>
10 <link type="text/css" rel="stylesheet" href="js/qunit.css"/>
11
12 <!-- SyntaxHighlighter -->
13 <script type="text/javascript" src="/sh/scripts/XRegExp.js"></script> <!-- XRegExp is bundled with the final shCore.js during build -->
14 <script type="text/javascript" src="/sh/scripts/shCore.js"></script>
15 <script type="text/javascript" src="/sh/scripts/shLegacy.js"></script>
16 <script type="text/javascript" src="/sh/scripts/shBrushAppleScript.js"></script>
17 <script type="text/javascript" src="/sh/scripts/shBrushAS3.js"></script>
18 <script type="text/javascript" src="/sh/scripts/shBrushBash.js"></script>
19 <script type="text/javascript" src="/sh/scripts/shBrushColdFusion.js"></script>
20 <script type="text/javascript" src="/sh/scripts/shBrushCpp.js"></script>
21 <script type="text/javascript" src="/sh/scripts/shBrushCSharp.js"></script>
22 <script type="text/javascript" src="/sh/scripts/shBrushCss.js"></script>
23 <script type="text/javascript" src="/sh/scripts/shBrushDelphi.js"></script>
24 <script type="text/javascript" src="/sh/scripts/shBrushDiff.js"></script>
25 <script type="text/javascript" src="/sh/scripts/shBrushErlang.js"></script>
26 <script type="text/javascript" src="/sh/scripts/shBrushGroovy.js"></script>
27 <script type="text/javascript" src="/sh/scripts/shBrushJava.js"></script>
28 <script type="text/javascript" src="/sh/scripts/shBrushJavaFx.js"></script>
29 <script type="text/javascript" src="/sh/scripts/shBrushJScript.js"></script>
30 <script type="text/javascript" src="/sh/scripts/shBrushPerl.js"></script>
31 <script type="text/javascript" src="/sh/scripts/shBrushPhp.js"></script>
32 <script type="text/javascript" src="/sh/scripts/shBrushPlain.js"></script>
33 <script type="text/javascript" src="/sh/scripts/shBrushPowerShell.js"></script>
34 <script type="text/javascript" src="/sh/scripts/shBrushPython.js"></script>
35 <script type="text/javascript" src="/sh/scripts/shBrushRuby.js"></script>
36 <script type="text/javascript" src="/sh/scripts/shBrushSass.js"></script>
37 <script type="text/javascript" src="/sh/scripts/shBrushScala.js"></script>
38 <script type="text/javascript" src="/sh/scripts/shBrushSql.js"></script>
39 <script type="text/javascript" src="/sh/scripts/shBrushVb.js"></script>
40 <script type="text/javascript" src="/sh/scripts/shBrushXml.js"></script>
41
42 <link type="text/css" rel="stylesheet" href="/sh/styles/shCoreDefault.css"/>
43</head>
44
45<body>
46
47<h1 id="qunit-header">SyntaxHighlighter Highlight Lines Test</h1>
48<h2 id="qunit-banner"></h2>
49<div id="qunit-testrunner-toolbar"></div>
50<h2 id="qunit-userAgent"></h2>
51<ol id="qunit-tests"></ol>
52
53<button id="interaction">Run interaction tests</button>
54
55<div id="output">
56</div>
57
58<style>
59body {
60 background: white;
61}
62
63#interaction {
64 margin-top: 1em;
65 padding: 1em;
66 font-size: 1.5em;
67}
68
69.test-wrap {
70 width: 45%;
71 height: 400px;
72 overflow: auto;
73 float: left;
74 margin: 1em 1em 0 0;
75 border: 5px solid silver;
76 background: gray;
77 font-family: Helvetica;
78}
79
80.test-wrap h3 {
81 margin: 1em 0 0 1em;
82 color: white;
83 font-size: 1em;
84 font-weight: normal;
85}
86</style>
87
88<script type="text/javascript">
89var testQueue = [],
90 renderTests = [
91 '001_basic',
92 '002_brushes',
93 '003_script_tag',
94 '004_url_parsing',
95 '005_no_gutter',
96 '006_pad_line_numbers',
97 '007_collapse',
98 '008_first_line',
99 '009_class_name',
100 '010_highlight',
101 '011_smart_tabs',
102 '012_server_side',
103 '013_html_script',
104 '014_legacy'
105 ],
106 interactionTests = [
107 '007_collapse_interaction'
108 ]
109 ;
110
111function queue(func)
112{
113 testQueue.push(func);
114};
115
116function ok_sh($sh)
117{
118 ok($sh.length > 0, 'Element present');
119 ok($sh.is('div'), 'Element is DIV');
120 ok($sh.find('> div').is('.syntaxhighlighter'), 'Nested DIV is a .syntaxhighlighter');
121};
122
123function ok_toolbar($sh)
124{
125 var $target = $sh.find('> .syntaxhighlighter > .toolbar');
126 ok($target.length > 0, 'Toolbar present');
127 ok($target.is(':visible'), 'Toolbar visible');
128};
129
130function ok_caption($sh, value)
131{
132 var $target = $sh.find('> .syntaxhighlighter > table > caption');
133 ok($target.length > 0, 'Caption present');
134 ok($target.is(':visible'), 'Caption visible');
135
136 if (value != null)
137 equals($target.text(), value, 'Caption text');
138};
139
140function ok_gutter($sh)
141{
142 var $target = $sh.find('> .syntaxhighlighter > table > tbody > tr > .gutter');
143 ok($target.length > 0, 'Gutter present');
144 ok($target.is(':visible'), 'Gutter visible');
145};
146
147function ok_code($sh)
148{
149 var $target = $sh.find('> .syntaxhighlighter > table > tbody > tr > .code');
150 ok($target.length > 0, 'Code present');
151 ok($target.is(':visible'), 'Code visible');
152};
153
154function ok_collapsed($sh)
155{
156 ok($sh.find('> .syntaxhighlighter.collapsed').length == 1, '.collapsed present');
157};
158
159function loadTests(tests, addHtml)
160{
161 var html = '';
162
163 $.each(tests, function(index)
164 {
165 var name = this;
166
167 if (addHtml != false)
168 {
169 html += '<div class="test-wrap">\n'
170 html += '<h3>' + name + '</h3>\n';
171 }
172
173 $.ajax({
174 url: 'cases/' + name + '.html',
175 type: 'GET',
176 dataType: 'text',
177 async: false,
178 success: function(data)
179 {
180 html += data;
181 },
182 error: function()
183 {
184 html += '<p>Not found...</p>';
185 }
186 });
187
188 if (addHtml != false)
189 {
190 html += '</div>\n';
191
192 if (index % 2 != 0)
193 html += '<div style="clear:both"></div>\n';
194 }
195 });
196
197 //
198 // Looks like .html() is producing different results when it comes to
199 // content that has <script /> which type is NOT "text/javascript".
200 // $('#output').html(html);
201 //
202 $('#output')[0].innerHTML += html;
203
204 //
205 // However, if HTML assigned to to .innerHTML container <script/> tags,
206 // they are not executed, so we have to manually walk all of them and
207 // eval() the content.
208 //
209 $('#output script[type="text/javascript"][class!="executed"]').each(function()
210 {
211 eval($(this).text() || $(this).html());
212 $(this).addClass('executed')
213 });
214};
215
216function runTestQueue()
217{
218
219 $.each(testQueue, function()
220 {
221 this.apply(null);
222 });
223
224 testQueue = [];
225};
226
227$(document).ready(function()
228{
229 loadTests(renderTests);
230 SyntaxHighlighter.highlight();
231 runTestQueue();
232
233 $('#interaction').click(function()
234 {
235 loadTests(interactionTests, false /* addHtml */);
236 runTestQueue();
237 });
238});
239</script>
240
241
242<!-- jinwei.me Baidu tongji analytics -->
243<script type="text/javascript">
244var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
245document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
246</script>
247
248</body>
249</html>
diff --git a/Blocks/syntax/tests/theme_tests.html b/Blocks/syntax/tests/theme_tests.html
new file mode 100644
index 0000000..49ddd3a
--- /dev/null
+++ b/Blocks/syntax/tests/theme_tests.html
@@ -0,0 +1,141 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3<head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5 <title>SyntaxHighlighter Theme Tests</title>
6 <script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
7</head>
8
9<body>
10
11<div id="output"></div>
12
13<style>
14body {
15 background: white;
16 font-family: Helvetica;
17}
18
19.test-wrap {
20 width: 100%;
21 height: 800px;
22 overflow: auto;
23 border: none;
24}
25</style>
26
27<script id="sample" type="text/plain">
28 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
29 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
30 <head>
31 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
32 <title>SyntaxHighlighter Theme Tests</title>
33 </head>
34
35 <body>
36 &lt;script>
37 /**
38 * Looks for a child or parent node which has specified classname.
39 * Equivalent to jQuery's $(container).find(".className")
40 * @param {Element} target Target element.
41 * @param {String} search Class name or node name to look for.
42 * @param {Boolean} reverse If set to true, will go up the node tree instead of down.
43 * @return {Element} Returns found child or parent element on null.
44 */
45 function findElement(target, search, reverse /* optional */)
46 {
47 if (target == null)
48 return null;
49
50 var nodes = reverse != true ? target.childNodes : [ target.parentNode ],
51 propertyToFind = { '#' : 'id', '.' : 'className' }[search.substr(0, 1)] || 'nodeName',
52 expectedValue,
53 found
54 ;
55
56 // main return of the found node
57 if ((target[propertyToFind] || '').indexOf(expectedValue) != -1)
58 return target;
59
60 return found;
61 };
62 &lt;/script>
63
64
65<!-- jinwei.me Baidu tongji analytics -->
66<script type="text/javascript">
67var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
68document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
69</script>
70
71</body>
72 </html>
73</script>
74
75<script type="text/javascript">
76var themes = [
77 ['#fff', 'Default'],
78 ['#000', 'Django'],
79 ['#fff', 'Eclipse'],
80 ['#000', 'Emacs'],
81 ['#000', 'FadeToGrey'],
82 ['#000', 'MDUltra'],
83 ['#000', 'Midnight'],
84 ['#000', 'RDark']
85 ];
86
87$(document).ready(function()
88{
89 var sample = $('#sample').text().replace(/</g, '&lt;');
90
91 $.each(themes, function(index)
92 {
93 var $iframe = $('<iframe class="test-wrap" src="about:blank" />'),
94 background = this[0],
95 themeName = this[1]
96 ;
97
98 $('#output')
99 .append(''
100 + '<h1>'
101 + '<a href="#theme' + (index + 1) + '">next</a> '
102 + '<a name="theme' + index + '">'
103 + themeName
104 + '</a>'
105 + '</h1>'
106 )
107 .append($iframe)
108 ;
109
110 $iframe.ready(function()
111 {
112 var doc = $iframe[0].contentDocument;
113 $iframe.css('background', background);
114
115 doc.write(''
116 + '<scr' + 'ipt type="text/javascript" src="/sh/scripts/XRegExp.js"></scr' + 'ipt>'
117 + '<scr' + 'ipt type="text/javascript" src="/sh/scripts/shCore.js"></scr' + 'ipt>'
118 + '<scr' + 'ipt type="text/javascript" src="/sh/scripts/shBrushXml.js"></scr' + 'ipt>'
119 + '<scr' + 'ipt type="text/javascript" src="/sh/scripts/shBrushJScript.js"></scr' + 'ipt>'
120 + '<link type="text/css" rel="stylesheet" href="/sh/styles/shCore' + themeName + '.css"/>'
121 + '<pre type="syntaxhighlighter" class="brush: js; html-script: true; highlight: [5, 20]" title="This is SyntaxHighlighter theme ' + themeName + ' in action!">'
122 + sample
123 + '</pre>'
124 + '<pre type="syntaxhighlighter" class="brush: js; html-script: true; collapse: true">'
125 + sample
126 + '</pre>'
127 + '<scr' + 'ipt type="text/javascript">'
128 + 'SyntaxHighlighter.highlight();'
129 + '</scr' + 'ipt>'
130 );
131 doc.close();
132 });
133 });
134
135 $('#output a[name]:first').attr('name', 'top');
136 $('#output a[href]:last').attr('href', '#top').html('top');
137});
138</script>
139
140</body>
141</html>
diff --git a/Blocks/syntax/tests/webrick.rb b/Blocks/syntax/tests/webrick.rb
new file mode 100644
index 0000000..0b3c93c
--- /dev/null
+++ b/Blocks/syntax/tests/webrick.rb
@@ -0,0 +1,11 @@
1require 'webrick'
2include WEBrick
3
4s = HTTPServer.new(
5 :Port => 2010,
6 :DocumentRoot => Dir::pwd
7)
8s.mount('/sh/scripts', WEBrick::HTTPServlet::FileHandler, '../scripts')
9s.mount('/sh/styles', WEBrick::HTTPServlet::FileHandler, '../styles')
10trap('INT') { s.stop }
11s.start
diff --git a/Blocks/syntax/tests/webrick.sh b/Blocks/syntax/tests/webrick.sh
new file mode 100644
index 0000000..7e249f8
--- /dev/null
+++ b/Blocks/syntax/tests/webrick.sh
@@ -0,0 +1,2 @@
1#!/bin/sh
2ruby webrick.rb
diff --git a/Blocks/time/index.html b/Blocks/time/index.html
new file mode 100644
index 0000000..c363595
--- /dev/null
+++ b/Blocks/time/index.html
@@ -0,0 +1,55 @@
1<!DOCTYPE html>
2<html>
3 <head>
4 <script src="jquery.min.js"></script>
5
6 <meta charset="UTF-8" />
7 <title> Lexical Clock</title>
8 <link type="text/css" rel="stylesheet" href="style.css" />
9 <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
10 <script type="text/javascript" src="script.js"></script>
11 </head>
12
13 <body>
14 <div id="main">
15 <div class="row">
16 <div id="its">It is</div> <div id="half"> half</div> <div id="tenMod">ten</div>
17 </div>
18
19 <div class="row">
20 <div id="quarter">quarter</div> <div id="twenty">twenty</div>
21 </div>
22
23 <div class="row">
24 <div id="fiveMod">five</div> <div id="minutes">minutes</div> <div id="to">to</div>
25 </div>
26
27 <div class="row">
28 <div id="past">past</div> <div id="one">one</div> <div id="three">three</div>
29 </div>
30
31 <div class="row">
32 <div id="two">two</div> <div id="four">four</div> <div id="five">five</div>
33 </div>
34
35 <div class="row">
36 <div id="six">six</div> <div id="seven">seven</div> <div id="eight">eight</div>
37 </div>
38
39 <div class="row">
40 <div id="nine">nine</div> <div id="ten">ten</div> <div id="eleven">eleven</div>
41 </div>
42
43 <div class="row">
44 <div id="twelve">twelve</div> <div id="oclock">o'clock</div>
45 </div>
46 </div>
47
48<!-- jinwei.me Baidu tongji analytics -->
49<script type="text/javascript">
50var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
51document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
52</script>
53
54</body>
55</html> \ No newline at end of file
diff --git a/Blocks/time/jquery.min.js b/Blocks/time/jquery.min.js
new file mode 100644
index 0000000..dbbc602
--- /dev/null
+++ b/Blocks/time/jquery.min.js
@@ -0,0 +1,6 @@
1/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
2//@ sourceMappingURL=jquery.min.map
3*/
4(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}: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},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?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},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.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+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===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]||at.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]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.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"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
5}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
6u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},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)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window); \ No newline at end of file
diff --git a/Blocks/time/script.js b/Blocks/time/script.js
new file mode 100644
index 0000000..fb8ba69
--- /dev/null
+++ b/Blocks/time/script.js
@@ -0,0 +1,98 @@
1
2var update = function() {
3
4 // initialise screen
5 // selects all elements with class on and removes it
6 $('.on').removeClass("on");
7 $("#its").addClass('on');
8
9 // initialise date variables
10 current = new Date();
11 var hour = current.getHours();
12 if (hour > 12) {hour -= 12};
13 var minutes = current.getMinutes();
14
15 // set modifier
16 if (minutes < 3){
17 $("#oclock").addClass('on');
18 }else if (minutes < 33){
19 $("#past").addClass('on');
20 $("#minutes").addClass('on');
21 }else if (minutes <= 57){
22 $("#to").addClass('on');
23 $("#minutes").addClass('on');
24 hour === 12 ? hour = 1: hour += 1;
25 minutes = 60 - minutes;
26 }else{
27 $("#oclock").addClass('on');
28 hour === 12 ? hour = 1: hour += 1;
29 minutes = 60 - minutes;
30 }
31
32 //set minutes
33 if (minutes >= 3){
34 if(minutes < 7){
35 $("#fiveMod").addClass('on');
36 }else if (minutes < 13){
37 $("#tenMod").addClass('on');
38 }else if (minutes < 17){
39 $("#quarter").addClass('on');
40 $("#minutes").removeClass('on');
41 }else if (minutes < 23){
42 $("#twenty").addClass('on');
43 }else if (minutes < 27){
44 $("#twenty").addClass('on');
45 $("#fiveMod").addClass('on');
46 }else if (minutes < 33){
47 $("#half").addClass('on');
48 $("#minutes").removeClass('on');
49 }
50 }
51
52 //set hours
53 switch (hour){
54 case 1 :
55 $("#one").addClass('on');
56 break;
57 case 2 :
58 $("#two").addClass('on');
59 break;
60 case 3 :
61 $("#three").addClass('on');
62 break;
63 case 4 :
64 $("#four").addClass('on');
65 break;
66 case 5 :
67 $("#five").addClass('on');
68 break;
69 case 6 :
70 $("#six").addClass('on');
71 break;
72 case 7 :
73 $("#seven").addClass('on');
74 break;
75 case 8 :
76 $("#eight").addClass('on');
77 break;
78 case 9 :
79 $("#nine").addClass('on');
80 break;
81 case 10 :
82 $("#ten").addClass('on');
83 break;
84 case 11 :
85 $("#eleven").addClass('on');
86 break;
87 case 12 :
88 $("#twelve").addClass('on');
89 break;
90 }
91
92}
93
94// run update on load and repeat every 30 seconds afterwards
95$(document).ready(function(){
96 update();
97 setInterval(update,30000);
98}); \ No newline at end of file
diff --git a/Blocks/time/style.css b/Blocks/time/style.css
new file mode 100644
index 0000000..e51a68a
--- /dev/null
+++ b/Blocks/time/style.css
@@ -0,0 +1,33 @@
1#main{
2 margin:auto;
3 width:460px;
4 height:520px;
5 border: 5px solid gray;
6 background-color:black;
7 color:#303030;
8 padding:20px;
9 font-family:"Arial","Sans";
10 text-transform:uppercase;
11}
12
13.row>div{
14 display:inline-block;
15 margin: 10px 20px;
16 font-size:40px;
17 text-align:center;
18}
19
20.row>div:first-child{
21 float:left;
22 text-align:left;
23}
24
25.row>div:last-child{
26 float:right;
27 text-align:right;
28}
29
30.on{
31 color:white;
32}
33
diff --git a/Blocks/welcome.html b/Blocks/welcome.html
new file mode 100644
index 0000000..d7765d7
--- /dev/null
+++ b/Blocks/welcome.html
@@ -0,0 +1,132 @@
1<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
2 <title>For U</title>
3
4 <meta charset="UTF-8">
5
6 <link rel="shortcut icon" href="./pi1.png">
7
8 <link rel="stylesheet" href="./main.css">
9 <style type="text/css">
10 #yddContainer{display:block;font-family:Segoe Script;position:relative;width:100%;height:100%;top:-4px;left:-4px;font-size:12px;border:1px solid}#yddTop{display:block;height:22px}#yddTopBorderlr{display:block;position:static;height:17px;padding:2px 28px;line-height:17px;font-size:12px;color:#5079bb;font-weight:bold;border-style:none solid;border-width:1px}#yddTopBorderlr .ydd-sp{position:absolute;top:2px;height:0;overflow:hidden}.ydd-icon{left:5px;width:17px;padding:0px 0px 0px 0px;padding-top:17px;background-position:-16px -44px}.ydd-close{right:5px;width:16px;padding-top:16px;background-position:left -44px}#yddKeyTitle{float:left;text-decoration:none}#yddMiddle{display:block;margin-bottom:10px}.ydd-tabs{display:block;margin:5px 0;padding:0 5px;height:18px;border-bottom:1px solid}.ydd-tab{display:block;float:left;height:18px;margin:0 5px -1px 0;padding:0 4px;line-height:18px;border:1px solid;border-bottom:none}.ydd-trans-container{display:block;line-height:160%}.ydd-trans-container a{text-decoration:none;}#yddBottom{position:absolute;bottom:0;left:0;width:100%;height:22px;line-height:22px;overflow:hidden;background-position:left -22px}.ydd-padding010{padding:0 10px}#yddWrapper{color:#252525;z-index:10001;background:url(chrome-extension://eopjamdnofihpioajgfdikhhbobonhbb/ab20.png);}#yddContainer{background:#fff;border-color:#4b7598}#yddTopBorderlr{border-color:#f0f8fc}#yddWrapper .ydd-sp{background-image:url(chrome-extension://eopjamdnofihpioajgfdikhhbobonhbb/ydd-sprite.png)}#yddWrapper a,#yddWrapper a:hover,#yddWrapper a:visited{color:#50799b}#yddWrapper .ydd-tabs{color:#959595}.ydd-tabs,.ydd-tab{background:#fff;border-color:#d5e7f3}#yddBottom{color:#363636}#yddWrapper{min-width:250px;max-width:400px;}body {
11 background-repeat: repeat;
12 background-color: #CEE3F6;
13 background-image: url(72906-106.jpg);
14}
15 #apDiv1 {
16 position: absolute;
17 left: 918px;
18 top: 22px;
19 width: 285px;
20 height: 353px;
21 z-index: 1;
22}
23 </style></head>
24 <body>
25 <div id="card">
26 <div class="block" id="b1">
27 <div class="divin love">
28 <img src="./For U_files/love.png">
29 <h1><a href="code.html" target="_blank" style="text-decoration:none; color: white">爱情</a></h1>
30 </div>
31 <div class="inbox">
32 <p><a href="code.html" target="_blank" style="text-decoration:none; color: white">关于你的每件事</a></p>
33 </div>
34 </div>
35 <div class="block" id="b2">
36 <div class="divin">
37 <img src="./For U_files/life.png">
38 <h1><a href="life.html" target="_blank" style="text-decoration:none; color: white">生命</a></h1>
39 </div>
40 <div class="inbox">
41 <p><a href="life.html" target="_blank" style="text-decoration:none; color: white">一直在前行</a></p>
42 </div>
43 </div>
44 <div class="block" id="b3">
45 <div class="divin">
46 <img src="./For U_files/train.png">
47 <h1><a href="Flipboard/index.html" target="_blank" style="text-decoration:none; color:white">未来</a></h1>
48 </div>
49 <div class="inbox">
50 <p><a href="Flipboard/index.html" target="_blank" style="text-decoration:none; color:white">说好的约定</a></p>
51 </div>
52 </div>
53 <div class="block" id="b4">
54 <div class="divin">
55 <img src="./For U_files/world.png">
56 <h1><a href="post/index.html" target="_blank" style="text-decoration: none;color:white">世界</a></h1>
57 </div>
58 <div class="inbox">
59 <p><a href="post/index.html" target="_blank" style="text-decoration: none;color:white">将会慢慢老去</a></p><p>
60 </p></div>
61 </div>
62 <div class="block" id="b5">
63 <div class="divin time5">
64 <img src="./For U_files/time.png">
65 <h1><a href="time/index.html" target="_blank" style="text-decoration:none; color: white">时间</a></h1>
66 </div>
67 <div class="inbox time">
68 <li class="list">
69 星<br>
70 期<br>
71
72 </li>
73 <li class="list">
74 星<br>
75 期<br>
76
77 </li>
78 <li class="list">
79 星<br>
80 期<br>
81
82 </li>
83 <li class="list">
84 星<br>
85 期<br>
86
87 </li>
88 <li class="list">
89 星<br>
90 期<br>
91
92 </li>
93 <li class="list">
94 星<br>
95 期<br>
96
97 </li>
98 <li class="list">
99 星<br>
100 期<br>
101
102 </li>
103 <span id="loveu"><a href="time/index.html" target="_blank" style="text-decoration:none; color: white">每一句晚安</a></span>
104 </div>
105 </div>
106 <div class="block" id="b6">
107 <div class="divin">
108 <img src="./For U_files/python.png">
109 <h1><a href="http://blog.jinwei.me" target="_blank" style="text-decoration:none; color: white">你</a></h1>
110 </div>
111 <div class="inbox">
112 <p><a href="http://blog.jinwei.me" target="_blank" style="text-decoration:none; color: white">我的世界</a></p>
113 </div>
114 </div>
115 </div>
116 <audio src="audiojs/Richard .mp3" preload="auto" autoplay="true" loop="true"></audio>
117 <div style="display:none"><script type="text/javascript" >
118var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
119document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
120</script></div>
121
122<script>
123 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
124 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
125 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
126 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
127
128 ga('create', 'UA-46099659-1', 'jinwei.me');
129 ga('send', 'pageview');
130
131</script>
132</body></html> \ No newline at end of file
Powered by cgit v1.2.3 (git 2.41.0)