Commit 05c5f7f14953d5da4b80d60abc847cff941bd331

Authored by liuqimichale
1 parent 3ecec48b

init

Showing 44 changed files with 6140 additions and 0 deletions
amWiki/css/amWiki.css 0 → 100644
  1 +@charset "utf-8";
  2 +
  3 +
  4 +/* ---------- markdown custom ---------- */
  5 +.markdown-body{font-size:14px;}
  6 +.markdown-body h1{margin-top:50px;font-size:38px;border-bottom:#d5d5d5 1px solid;}
  7 +.markdown-body h2{margin-top:50px;font-size:32px;border-bottom:#ddd 1px solid;}
  8 +.markdown-body h3{margin-top:32px;margin-bottom:14px;}
  9 +.markdown-body h2 + h3{margin-top:24px;}
  10 +.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin-bottom:12px;}
  11 +.markdown-body .anchor{margin-left:-24px;}
  12 +.markdown-body blockquote{padding:8px 15px;background-color:#fafafa;}
  13 +.markdown-body .anchor{padding-top:10px;margin-top:-10px;}
  14 +.markdown-body .anchor svg{visibility:hidden;width:20px;height:20px;color:#828282;}
  15 +.markdown-body h3 .anchor{position:relative;top:2px;}
  16 +.markdown-body h1:hover .anchor svg,.markdown-body h2:hover .anchor svg,.markdown-body h3:hover .anchor svg{visibility:visible;}
  17 +.markdown-body img:hover{outline:rgba(0,0,0,.05) 1px solid;box-shadow:1px 1px 1px rgba(0,0,0,.1);cursor:pointer;}
  18 +.markdown-body img[align="center"]{display:block;margin:0 auto;}
  19 +.markdown-body tbody{word-break:initial;}
  20 +.markdown-body input[type="checkbox"]{margin-right:5px;vertical-align:middle;cursor:pointer;}
  21 +.markdown-body input[type="checkbox"]+label{vertical-align:middle;margin-right:7px;cursor:pointer;}
  22 +.markdown-body pre{position:relative;}
  23 +.markdown-body pre code{padding-top:0.15em;padding-bottom:0.15em;margin:0 1px;font-size:90%;color:#000;word-wrap:break-word;white-space:pre-wrap;}
  24 +.markdown-body pre code.hljs{color:#333;}
  25 +.markdown-body .hljs-string{color:#183691;}
  26 +.markdown-body .hljs-built_in{color:#0086b3;}
  27 +.markdown-body code.lang-flow svg{margin-top:-10px;}
  28 +.markdown-body .lang-off-js-comment{display:none;position:absolute;top:0;right:0;width:27px;height:27px;color:#ccc;text-align:center;line-height:27px;background:#f0f0f0;cursor:pointer}
  29 +.markdown-body pre:hover .lang-off-js-comment{display:block;}
  30 +.markdown-body .lang-off-js-comment i{position:absolute;top:0;left:0;width:27px;height:27px;font-size:22px;color:#ddd;text-align:center;line-height:27px;}
  31 +.markdown-body .lang-off-js-comment:hover{color:#999;background:#ddd;}
  32 +.markdown-body .lang-off-js-comment:hover i{color:#999;}
  33 +.markdown-body .lang-off-js-comment.on{display:block;color:#333;background:#ccc;}
  34 +.markdown-body .lang-off-js-comment.on i{color:#f00;}
  35 +.markdown-body mark{color:#e61e1e;background:transparent;}
  36 +
  37 +/* ---------- base ---------- */
  38 +html{height:100%;}
  39 +body{position:relative;height:100%;background:#e7e8eb;}
  40 +.hidden{display:none !important;}
  41 +
  42 +/* ---------- header ---------- */
  43 +.header{width:100%;height:70px;font-family:Microsoft YaHei,STXihei,STHeiti,Verdana,Arial,Helvetica,sans-serif;;background:#fff;border-top:#0373e4 6px solid;border-bottom:#c3c4c6 1px solid;}
  44 +.header .header-inner{margin:0 30px;}
  45 +.header .logo{float:left;padding-top:15px;}
  46 +.header .logo img{float:left;margin-left:5px;max-height:32px;}
  47 +.header .logo i{float:left;display:block;width:5px;height:5px;margin:16px 0 0 3px;background:#666666;border-radius:50%;}
  48 +.header .logo b{float:left;max-width:470px;height:32px;padding-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:24px;font-weight:normal;color:#666;}
  49 +.header .logo span{float:left;padding:0 3px;margin:1px 0 0 2px;font-size:xx-small;color:#fff;background:#bbbbbb;}
  50 +.header .menu-icon{display:none;}
  51 +
  52 +/* ---------- container ---------- */
  53 +.container{position:relative;margin:20px 18px 0;background:url(../images/menubar_bg.png) repeat-y #fff;border:#c3c4c6 1px solid;border-top:#4296eb 2px solid;}
  54 +
  55 +/* ---------- menu ---------- */
  56 +.container .nav{position:absolute;left:0px;top:0px;width:250px;height:100%;}
  57 +/* filter */
  58 +.menu-filter{box-sizing:content-box;position:absolute;top:0;left:0;z-index:10;width:176px;height:37px;padding-left:35px;border-bottom:1px solid #D9D9D9;}
  59 +.menu-filter svg{position:absolute;top:12px;left:12px;width:16px;height:16px;color:#4296eb;}
  60 +.menu-filter input{display:block;box-sizing:content-box;width:140px;height:22px;padding:0 25px 0 2px;margin-top:8px;line-height:20px;font-size:14px;background:none;border:none;border-bottom:#e0e0e0 1px dashed;}
  61 +.menu-filter input:focus{outline:none;border-bottom:#aaa 1px solid;}
  62 +.menu-filter:hover input{border-bottom:#aaa 1px solid;}
  63 +.menu-filter ::-webkit-input-placeholder{color:#ccc;font-size:13px;}
  64 +.menu-filter :-ms-input-placeholder{color:#ccc;font-size:13px;}
  65 +.menu-filter :-moz-placeholder{color:#ccc;font-size:13px;}
  66 +.menu-filter ::-moz-placeholder{color:#ccc;font-size:13px;}
  67 +.menu-filter ::-ms-clear{display:none !important;width:0;height:0;}
  68 +.menu-filter i{display:block;box-sizing:content-box;position:absolute;top:0px;right:0px;width:23px;padding:2px 10px 0;font-size:25px;text-align:center;color:#ccc;cursor:pointer;}
  69 +.menu-filter i:hover{color:#e6660d;}
  70 +.menu-filter i.off{display:none;}
  71 +/* search */
  72 +.menu-search{display:block;position:absolute;top:0;right:1px;z-index:11;width:39px;height:38px;border-left:1px solid #D9D9D9;border-bottom:1px solid #D9D9D9;cursor:pointer;}
  73 +.menu-search:hover{background-color:#f4f5f9;}
  74 +.menu-search svg{position:absolute;top:12px;left:12px;width:16px;height:16px;color:#4296eb;}
  75 +/* menubar */
  76 +.menubar{position:relative;z-index:0;width:250px;height:100%;padding-top:38px;font-family:Microsoft YaHei,STXihei,STHeiti,Verdana,Arial,Helvetica,sans-serif;border-right:1px solid #e7e7eb;}
  77 +.menubar h4,.menubar h5{display:block;position:relative;height:37px;margin:-1px 0 0;padding:0 10px 0 30px;font-size:14px;font-weight:normal;color:#333;line-height:37px;text-shadow:#666 1px 0 0;border:1px solid #D9D9D9;border-width:1px 0;cursor:pointer;}
  78 +.menubar h4:hover{background-color:#f4f5f9;}
  79 +.menubar h5.off{display:none;}
  80 +.menubar h5.on{display:block;}
  81 +.menubar h4 svg{position:absolute;top:12px;left:12px;width:13px;height:13px;color:#acacac;}
  82 +.menubar h4.on svg{color:#4296eb;}
  83 +.menubar h4 a{display:block;height:36px;color:#333;text-decoration:none;}
  84 +.menubar h4.on a{color:#0373e4;}
  85 +.menubar h5 svg{position:absolute;top:12px;left:12px;width:13px;height:13px;color:#acacac;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);}
  86 +.menubar h5.on svg{color:#4296eb;-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}
  87 +.menubar ul{display:none;margin:0;padding:0;list-style:none;}
  88 +.menubar ul li{padding-left:23px;}
  89 +.menubar .scroller-content > ul > li{padding-left:45px;}
  90 +.menubar ul li.off{display:none;}
  91 +.menubar ul li > a,.menubar ul li > strong{display:block;height:30px;padding:0 55px 0 0;font-weight:normal;white-space:nowrap;line-height:30px;font-size:12px;color:#333;text-decoration:none;cursor:pointer;}
  92 +.menubar ul li > a:after,.menubar ul li > strong:after{display:block;position:absolute;left:0;right:0;height:30px;content:" ";-webkit-transition-duration:.3s;-moz-transition-duration:.3s;-ms-transition-duration:.3s;transition-duration:.3s;}
  93 +.menubar ul li > a:hover:after,.menubar ul li > strong:hover:after{background:#f5f5f5;-webkit-transition-duration:0s;-moz-transition-duration:0s;-ms-transition-duration:0s;transition-duration:0s;}
  94 +.menubar ul li > a > span,.menubar ul li strong > span{float:left;position:relative;z-index:1;}
  95 +.menubar ul li > a.on{color:#0373e4;}
  96 +.menubar ul li > a.on:before{display:block;position:absolute;left:0px;z-index:1;width:2px;height:30px;content:" ";background:#4296eb;}
  97 +.menubar ul li > a.on:after{background:#f5f5f5;}
  98 +.menubar ul li > strong.on{text-shadow:#666 1px 0 0;}
  99 +.menubar ul li > strong:before{position:absolute;z-index:1;width:6px;height:6px;margin:12px 0 0 -12px;background:#acacac;border-radius:50%;content:" ";}
  100 +.menubar ul li > strong.on:before{background:#4296eb;}
  101 +.menubar mark{color:red;background:#f5f5f5;}
  102 +
  103 +/* ---------- scroller ---------- */
  104 +body[onselectstart]{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;user-select:none;}
  105 +.scroller{height:100%;overflow:hidden;}
  106 +.scroller .scroller-inner{box-sizing:content-box;width:100%;height:100%;-webkit-overflow-scrolling:touch;overflow-scrolling:touch;}
  107 +.scroller .scroller-inner.on{overflow-y:scroll;}
  108 +.scroller .scrollbar{position:absolute;opacity:0;transition-duration:.5s;-moz-user-select:none;-webkit-user-select:none;user-select:none;cursor:pointer;}
  109 +.scroller:hover .scrollbar{opacity:1;transition-duration:.3s;}
  110 +.scroller .scrollbar.active{opacity:1;}
  111 +.scroller .scrollbar.off{opacity:0;}
  112 +.scroller .scrollbar div{position:relative;transition-duration:.1s;}
  113 +.scroller .scrollbar i{position:absolute;background:rgba(50,50,50,.25);border-radius:2px;transition-duration:.1s;}
  114 +.scroller .scrollbar:active{padding:0;}
  115 +.scroller .scrollbar:active div{background:rgba(50,50,50,.07);}
  116 +.scroller .scrollbar:active i{border-radius:0;}
  117 +/* scrollbar-y */
  118 +.container .nav .scrollbar.scrollbar-y,.container .nav .scrollbar.scrollbar-y:active{padding-top:38px;padding-bottom:10px;}
  119 +.scroller .scrollbar.scrollbar-y{top:0;right:0;width:10px;height:100%;}
  120 +.scroller .scrollbar.scrollbar-y div{height:100%;}
  121 +.scroller .scrollbar.scrollbar-y i{top:0;left:4px;width:3px;height:100%;}
  122 +.scroller .scrollbar.scrollbar-y:active i{left:0;width:10px;}
  123 +/* scrollbar-x */
  124 +.scroller[data-x-rolling="true"] .scroller-inner.on{overflow-x:scroll;}
  125 +.scroller[data-x-rolling="true"] .scroller-content{display:inline-block;position:relative;padding-bottom:10px;white-space:nowrap;min-width:250px;}
  126 +.scroller .scrollbar.scrollbar-x{bottom:0;left:0;width:100%;height:10px;padding-right:10px;}
  127 +.scroller .scrollbar.scrollbar-x div{width:100%;height:100%;}
  128 +.scroller .scrollbar.scrollbar-x i{bottom:0;top:4px;height:3px;width:100%;}
  129 +.scroller .scrollbar.scrollbar-x:active i{top:0;height:10px;}
  130 +
  131 +/* ---------- main ---------- */
  132 +.main{position:relative;height:100%;margin-left:250px;}
  133 +.main .markdown-body{padding:45px;}
  134 +/* footnote */
  135 +.main .footnote{position:relative;padding-top:35px;border-top:#ddd 1px solid;}
  136 +.main .footnote i{position:absolute;top:5px;left:10px;font-size:15px;font-style:normal;color:#999;}
  137 +.main .footnote li:focus{background:#EAFFEA;}
  138 +.main .footnote svg{display:inline-block;width:14px;height:14px;margin-bottom:-1px;}
  139 +.main .footnote-none{width:0;height:0;overflow:hidden;}
  140 +/* sibling */
  141 +.main-sibling{display:none;width:100%;padding:30px 45px 20px;font-size:14px;border-top:1px solid #e7e7eb;}
  142 +.main-sibling.on{display:block;}
  143 +.main-sibling p{position:relative;height:22px;}
  144 +.main-sibling span{position:absolute;left:0;top:0;}
  145 +.main-sibling a{display:inline-block;width:100%;height:19px;padding-left:60px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  146 +.main-sibling a:not([href]){color:#333;}
  147 +.main-sibling a:not([href]):hover{text-decoration:none;}
  148 +
  149 +/* ---------- imgsView ---------- */
  150 +.imgsv{display:none;position:fixed;top:0;left:0;z-index:999999;width:100%;height:100%;}
  151 +.imgsv-background{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.1);cursor:pointer;}
  152 +.imgsv-view img{position:absolute;top:48%;left:50%;opacity:0;box-shadow:rgba(0,0,0,.2) 1px 2px 5px;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition-duration:.5s;-moz-transition-duration:.5s;-ms-transition-duration:.5s;transition-duration:.5s;/*cursor:move;*/
  153 +}
  154 +.imgsv.on .imgsv-view img{opacity:1;}
  155 +.imgsv-panel{position:absolute;left:50%;bottom:-50px;padding:0 10px;line-height:50px;list-style:none;white-space:nowrap;background:rgba(255,255,255,.8);border-top-left-radius:5px;border-top-right-radius:5px;box-shadow:rgba(0,0,0,.2) 0 -1px 5px;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);-webkit-transition-duration:.5s;-moz-transition-duration:.5s;-ms-transition-duration:.5s;transition-duration:.5s;}
  156 +.imgsv.on .imgsv-panel{bottom:0px;}
  157 +.imgsv-panel li{display:inline-block;min-width:50px;padding:0 10px;text-align:center;cursor:pointer;}
  158 +.imgsv-panel li.off{color:#999;cursor:default;}
  159 +.imgsv-panel li:hover{background:rgba(225,225,225,1);}
  160 +.imgsv-panel li.off:hover{background:none;}
  161 +
  162 +/* ---------- contents ---------- */
  163 +aside .contents{position:fixed;bottom:137px;right:7px;z-index:9900;height:38px;width:38px;background:#f4f5f9;border:1px solid #ccc;}
  164 +aside .contents .btn{cursor:pointer;}
  165 +aside .contents .btn svg{position:absolute;top:7px;left:7px;width:22px;height:22px;color:#aaa;}
  166 +aside .contents.hover .btn svg,aside .contents.on .btn svg{display:none;}
  167 +aside .contents .btn span{display:none;padding:12px 0;font-family:Microsoft YaHei,STXihei,STHeiti,Verdana,Arial,Helvetica,sans-serif;line-height:14px;text-align:center;color:#aaa;}
  168 +aside .contents.hover .btn span,aside .contents.on .btn span{display:block;}
  169 +aside .contents-list{display:none;position:absolute;right:36px;bottom:-1px;width:270px;max-height:500px;padding:18px;overflow:hidden;overflow-y:scroll;background:#f4f5f9;border:1px solid #ccc;}
  170 +aside .contents.hover .contents-list,aside .contents.on .contents-list{display:block;}
  171 +aside .contents-list p{padding-bottom:5px;margin-bottom:8px;border-bottom:#ccc 1px solid;}
  172 +blockquote.markdown-contents{padding-left:20px;}
  173 +.markdown-contents ol{padding-left:0;list-style:none;}
  174 +.markdown-contents ol ol{padding-left:2em;}
  175 +.markdown-contents ol li>i{font-style:normal;margin-right:4px;color:#4078c0;}
  176 +
  177 +/* ---------- aside-backTop ---------- */
  178 +aside .back-top{position:fixed;bottom:100px;right:7px;z-index: 9900;height:38px;width:38px;background:#f4f5f9;border:1px solid #ccc;}
  179 +aside .back-icon{display:block;position:relative;width:32px;margin:2px auto;}
  180 +aside .back-icon svg{position:absolute;top:6px;left:5px;width:22px;height:22px;color:#aaa;}
  181 +aside .back-text{display:none;position:absolute;top:0;left:0;z-index:99;padding:4px;font-family:Microsoft YaHei,STXihei,STHeiti,Verdana,Arial,Helvetica,sans-serif;font-size:11px;text-align:center;letter-spacing:2px;line-height:14px;background-color:#f4f5f9;cursor:pointer;}
  182 +aside .back-text:hover{text-decoration:none;}
  183 +aside .back-top:hover .back-icon{border:none;}
  184 +aside .back-top:hover .back-text{display:block;color:#aaa;}
  185 +
  186 +/* ---------- footer ---------- */
  187 +footer{position:absolute;left:0;bottom:0;width:100%;}
  188 +footer .signature{position:absolute;right:20px;bottom:8px;color:#999;}
  189 +
  190 +/* ---------- lowBrowser ---------- */
  191 +#lowBrowser{position:fixed;top:0;left:0;z-index:9999999;width:100%;height:100%;}
  192 +#lowBrowser div{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000000;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";zoom:1;}
  193 +#lowBrowser p{position:absolute;top:0;left:0;width:100%;text-align:center;}
  194 +#lowBrowser p span{display:inline-block;padding:0 30px;color:#8a6d3b;line-height:50px;background:#fcf8e3;border:#faebcc 1px solid;}
  195 +
  196 +/* ---------- response ---------- */
  197 +@media screen and (max-width:720px){
  198 + body{min-width:320px;width:100%;}
  199 +
  200 + /* ---------- markdown custom ---------- */
  201 + .markdown-body h1:hover .anchor img,.markdown-body h2:hover .anchor img,.markdown-body h3:hover .anchor img{visibility:hidden;}
  202 + .markdown-body h1:active .anchor img,.markdown-body h2:active .anchor img,.markdown-body h3:active .anchor img{visibility:visible;}
  203 + .markdown-body pre code{word-wrap:normal;white-space:pre;}
  204 +
  205 + /* ---------- header ---------- */
  206 + .header{position:fixed;left:0;top:0;z-index:9999;height:50px;border-top:#0373e4 3px solid;}
  207 + .header .header-inner{height:50px;}
  208 + .header .logo{width:100%;padding-top:13px;}
  209 + .header .logo img{height:18px;}
  210 + .header .logo i{width:3px;height:3px;margin:9px 0 0 3px;}
  211 + .header .logo b{max-width:40%;height:auto;padding-left:7px;font-size:14px;background-size:4px 4px;}
  212 + .header .logo span{margin:-5px 0 0 0;-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-ms-transform:scale(0.8);transform:scale(0.8);}
  213 + .header .menu-icon{display:block;position:absolute;right:0;top:0;z-index:1;width:40px;height:47px;}
  214 + .header .menu-icon svg{position:absolute;top:9px;left:5px;width:28px;height:28px;color:#acacac;}
  215 + .header .menu-icon.close svg{top:14px;left:10px;width:18px;height:18px;}
  216 +
  217 + .container{position:relative;margin:50px auto 0;background:#fff;border:none;}
  218 +
  219 + /* ---------- menu ---------- */
  220 + .container .nav{display:none;position:fixed;left:0;top:50px;z-index:9999;width:100%;height:100%;padding-bottom:30px;background:rgba(0,0,0,0.92);overflow-y:scroll;}
  221 + .container .nav.on{display:block;}
  222 + .menu-filter{width:100%;padding-right:39px;background-color:none;box-sizing:border-box;}
  223 + .menu-filter input{width:90%;width:-webkit-calc(100% - 39px);width:-moz-calc(100% - 39px);width:-ms-calc(100% - 39px);width:calc(100% - 39px);color:#fff;background:none;border:none;border-bottom:#999 1px dashed;}
  224 + .menu-filter i{right:50px;padding:2px 0 0 10px;}
  225 + .menu-search{height:37px;}
  226 + .menu-search:hover{background-color:transparent;}
  227 + .menu-search:active{background-color:#f4f5f9;}
  228 +
  229 + .menubar{width:100%;height:auto;padding-bottom:50px;border-right:none;}
  230 + .menubar i{border-top:1px solid #999;}
  231 + .menubar i:hover{background-color:transparent;}
  232 + .menubar i:active{background-color:#8c8888;}
  233 + .menubar h4,.menubar h5{color:#f5f5f5;border-top:1px solid #999999;border-bottom:none;cursor:pointer;}
  234 + .menubar h4,.menubar h5,.menubar ul{max-width:none;}
  235 + .menubar h4:hover{background-color:#8c8888;}
  236 + .menubar h4 a{color:#f5f5f5;}
  237 + .menubar h4.on a{color:#fff;}
  238 + .menubar ul li a{color:#f5f5f5;}
  239 + .menubar ul li > a.on{color:#fff;}
  240 + .menubar ul li > a:hover{color:#fff;}
  241 + .menubar ul li > a.on:before{width:3px;}
  242 + .menubar ul li > a.on:after{background:#8c8888;}
  243 + .menubar ul li > a:hover:after,.menubar ul li > strong:hover:after{background:none;}
  244 + .menubar ul li > strong{color:#fff;}
  245 + .menubar ul li > strong:hover{background:none;}
  246 + .scroller .scroller-inner{overflow-x:scroll;}
  247 + .scroller[data-x-rolling="true"] .scroller-content{min-width:100%;}
  248 + .scroller .scrollbar{display:none;}
  249 +
  250 + .main{width:100%;height:auto;margin-left:0;overflow:visible;box-sizing:border-box;}
  251 + .main article.markdown-body{padding:25px;}
  252 + .main article iframe{border:0;}
  253 + .main .search-results{height:auto !important;}
  254 + .main-sibling{padding:30px 25px 25px;}
  255 + .main-sibling p{height:22px;}
  256 + .main-sibling a{padding-right:20px;}
  257 +
  258 + /* ---------- contents ---------- */
  259 + aside .contents{bottom:75px;border-radius:50%;}
  260 + aside .contents-list{right:40px;width:255px;max-height:310px;}
  261 +
  262 + /* ---------- backTop ---------- */
  263 + aside .back-top{border-radius:50%;bottom:32px;}
  264 + aside .back-top:hover .back-text{display:none;}
  265 +
  266 + /* ---------- footer ---------- */
  267 + footer{position:relative;left:0;bottom:0;width:100%;height:0;}
  268 + footer .signature{position:absolute;right:12px;bottom:6px;color:#ccc;}
  269 + footer .signature a{color:#aaa;}
  270 +
  271 +}
  272 +
  273 +
  274 +
  275 +
  276 +
  277 +
  278 +/* ---------- print ---------- */
  279 +@media print and (color) {
  280 + *{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  281 +}
  282 +@media print {
  283 + @page{margin:2cm;size:A4 portrait;}
  284 +}
  285 +@media print {
  286 +
  287 + /* ---------- main ---------- */
  288 + body{color:black;background:#fff;}
  289 + .header{display:none;}
  290 + .container{margin:0 auto;background:none;border:none;}
  291 + .container .nav{display:none;}
  292 + .main{margin-left:0;padding:0;font-size:14px;}
  293 + .main .markdown-body{display:block !important;font-family:Microsoft YaHei,Tahoma;font-weight:300;;}
  294 + .main h1{padding-top:300px;font-size:32px;text-align:center;font-weight:600;border:none;page-break-after:always;}
  295 + .main h1 .anchor{display:none;}
  296 + .main h2{font-size:24px;font-weight:500;border-bottom:#ccc 1px solid;page-break-after:avoid;}
  297 + .main h3{font-size:18px;font-weight:500;page-break-after:avoid;}
  298 + .main h4{font-size:16px;font-weight:400;}
  299 + .main h1:hover .anchor svg,.main h2:hover .anchor svg,.main h3:hover .anchor svg{visibility:hidden;}
  300 + .main img{max-width:100% !important;page-break-inside:avoid;}
  301 + .main table th{font-weight:500;}
  302 + .main .testing-show{display:none;}
  303 + .main .testing-box{display:none !important;}
  304 + .main .markdown-body h2:first-of-type{page-break-before:always;}
  305 + .main .markdown-body h1 + h2{page-break-before:auto !important;}
  306 + .main .main-sibling{display:none;}
  307 + .back-top{display:none;}
  308 + .signature{display:none;}
  309 +
  310 + /* ---------- increment ---------- */
  311 + .main{counter-reset:chapternum1;}
  312 + h2{counter-reset:chapternum2;}
  313 + h2:before{counter-increment:chapternum1;content:counter(chapternum1) " ";}
  314 + h3:before{counter-increment:chapternum2;content:counter(chapternum1) "." counter(chapternum2) " ";}
  315 +
  316 +}
  317 +
  318 +@charset "utf-8";
  319 +
  320 +/* ---------- box ---------- */
  321 +.search-box *{font-family:Microsoft YaHei,STXihei,STHeiti,Verdana,Arial,Helvetica,sans-serif;}
  322 +.search-box{display:none;position:absolute;top:0;right:0;z-index:10;width:100%;height:100%;padding:45px;background-color:#fff;}
  323 +
  324 +/* ---------- search-update ---------- */
  325 +.search-update{float:right;width:350px;max-width:100%;}
  326 +.search-update .text{position:relative;width:100%;padding-right:140px;text-align:right;font-size:12px;line-height:20px;}
  327 +.search-update .text:after{position:absolute;right:122px;top:9px;width:1px;height:24px;background:#ccc;content:' ';}
  328 +.search-update .text p{margin:0;}
  329 +.search-update .text time{display:inline-block;white-space:nowrap;}
  330 +.search-update .text b{margin-right:5px;}
  331 +.search-update .text span{display:inline-block;margin-left:5px;white-space:nowrap;}
  332 +.search-update .text i{font-style:normal;}
  333 +.search-update input{position:relative;z-index:10;float:right;margin-top:6px;padding:4px 12px;}
  334 +.search-update input[disabled]{padding:5px 13px;color:#ccc;background:#f2f2f2;border:#aaa 1px solid;border-radius:1px;}
  335 +.search-update.off .text:after,.search-update.off .text span,.search-update.off .text i,.search-update.off input{display:none;}
  336 +.search-update.off .text b {margin-right:0;}
  337 +.search-update.off .text{padding-right:5px;}
  338 +
  339 +.search-box h2{height:65px;color:#666;font-size:24px;font-weight:normal;}
  340 +
  341 +/* ---------- search-input ---------- */
  342 +.search-input{position:relative;padding-right:110px;padding-bottom:30px;}
  343 +.search-input input[type="text"]{display:inline-block;width:100%;padding:10px;font-size:16px;border:#ccc 1px solid;outline:none;}
  344 +.search-input input[type="text"]:focus{border:#81b9f2 1px solid;box-shadow:#81b9f2 0px 0px 2px;}
  345 +.search-input input[type="button"]{position:absolute;top:0;right:0;width:106px;height:44px;text-align:center;line-height:38px;font-size:18px;}
  346 +.search-input input[type="button"][disabled]{color:#ccc;background:#f2f2f2;border:#aaa 1px solid;border-radius:1px;}
  347 +
  348 +/* ---------- search-results ---------- */
  349 +.search-results{overflow-y:scroll;background:#eee;border-top:#eee 1px solid;border-bottom:#eee 1px solid;}
  350 +.search-result-message{display:none;padding-top:50px;text-align:center;color:#777;font-size:22px;line-height:35px;}
  351 +.search-list{list-style:none;padding:18px 16px 5px;}
  352 +.search-item{margin-bottom:14px;background:#fff;border:#e6e6e6 1px solid;}
  353 +.search-item:hover{border:#d9d9d9 1px solid;box-shadow:rgba(0,0,0,.1) 0 0 2px;}
  354 +.search-item a:hover{text-decoration:none;}
  355 +.search-item .content{padding:12px 14px 6px;}
  356 +.search-item .content strong{display:block;padding:2px 0 5px 0;font-size:16px;color:#333;line-height:23px;font-weight:normal;}
  357 +.search-item .content p{margin:0 0 6px;color:#666;font-size:14px;}
  358 +.search-item .content p.p1{margin:1px 0 7px;overflow:hidden;line-height:24px;white-space:nowrap;text-overflow:ellipsis;background:#f8f8f8;border-radius:2px;}
  359 +.search-item .content em{float:left;padding:0 5px;margin:1px 5px 0 1px;line-height:22px;font-style:normal;font-size:12px;color:#fff;background:#ccc;border-top-left-radius:2px;border-bottom-left-radius:2px;}
  360 +.search-item .content mark{color:red;background:none;}
  361 +.search-item .bottom{position:relative;padding:0 14px;line-height:30px;color:#999;border-top:#e6e6e6 1px solid;background:#fafafa;}
  362 +.search-item .bottom p{margin:0;padding-right:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
  363 +.search-item .bottom .time{position:absolute;top:0;right:14px;}
  364 +.search-result-more{display:none;margin:0 16px 18px;color:#999;text-align:center;line-height:40px;font-size:16px;letter-spacing:1px;background:#fafafa;border:#e6e6e6 1px solid;cursor:pointer;}
  365 +.search-result-more:active{padding-top:1px;line-height:39px;}
  366 +
  367 +/* ---------- search response ---------- */
  368 +@media screen and (max-width:950px){
  369 + .search-box h2{clear:both;height:90px;padding-top:30px;}
  370 + .search-item .bottom p{padding-right:0;line-height:32px;}
  371 + .search-item .bottom .time{position:static;right:auto;padding-bottom:8px;line-height:16px;}
  372 +}
  373 +@media screen and (max-width:375px){
  374 + .search-box h2{height:100px;padding-top:40px;}
  375 + .search-update .text{clear:both;padding-right:0;padding-top:10px;}
  376 + .search-update .text:after{display:none;content:'';}
  377 + .search-input{padding-right:90px;}
  378 + .search-input input[type="button"]{width:86px;}
  379 +}
  380 +@media screen and (max-width:720px){
  381 + .search-box{height:auto;min-height:100%;}
  382 +}
0 \ No newline at end of file 383 \ No newline at end of file
amWiki/css/lhjs.github-gist.css 0 → 100644
  1 +/**
  2 + * GitHub Gist Theme
  3 + * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro
  4 + */
  5 +
  6 +.hljs {
  7 + display: block;
  8 + background: white;
  9 + padding: 0.5em;
  10 + color: #333333;
  11 + overflow-x: auto;
  12 +}
  13 +
  14 +.hljs-comment,
  15 +.hljs-meta {
  16 + color: #969896;
  17 +}
  18 +
  19 +.hljs-string,
  20 +.hljs-variable,
  21 +.hljs-template-variable,
  22 +.hljs-strong,
  23 +.hljs-emphasis,
  24 +.hljs-quote {
  25 + color: #df5000;
  26 +}
  27 +
  28 +.hljs-keyword,
  29 +.hljs-selector-tag,
  30 +.hljs-type {
  31 + color: #a71d5d;
  32 +}
  33 +
  34 +.hljs-literal,
  35 +.hljs-symbol,
  36 +.hljs-bullet,
  37 +.hljs-attribute {
  38 + color: #0086b3;
  39 +}
  40 +
  41 +.hljs-section,
  42 +.hljs-name {
  43 + color: #63a35c;
  44 +}
  45 +
  46 +.hljs-tag {
  47 + color: #333333;
  48 +}
  49 +
  50 +.hljs-title,
  51 +.hljs-attr,
  52 +.hljs-selector-id,
  53 +.hljs-selector-class,
  54 +.hljs-selector-attr,
  55 +.hljs-selector-pseudo {
  56 + color: #795da3;
  57 +}
  58 +
  59 +.hljs-addition {
  60 + color: #55a532;
  61 + background-color: #eaffea;
  62 +}
  63 +
  64 +.hljs-deletion {
  65 + color: #bd2c00;
  66 + background-color: #ffecec;
  67 +}
  68 +
  69 +.hljs-link {
  70 + text-decoration: underline;
  71 +}
amWiki/css/markdownbody.github.css 0 → 100644
  1 +html{font-family:sans-serif;-webkit-text-size-adjust:100%;text-size-adjust:100%}
  2 +body{margin:0}
  3 +article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}
  4 +audio,canvas,progress,video{display:inline-block;vertical-align:baseline}
  5 +audio:not([controls]){display:none;height:0}
  6 +[hidden],template{display:none}
  7 +a{background-color:transparent}
  8 +a:active,a:hover{outline:0}
  9 +abbr[title]{border-bottom:1px dotted}
  10 +b,strong{font-weight:bold}
  11 +dfn{font-style:italic}
  12 +h1{font-size:2em;margin:0.67em 0}
  13 +mark{background:#ff0;color:#000}
  14 +small{font-size:80%}
  15 +sub,sup{line-height:0;position:relative;vertical-align:baseline}
  16 +sup{top:-0.5em}
  17 +sub{bottom:-0.25em}
  18 +img{border:0}
  19 +svg:not(:root){overflow:hidden}
  20 +figure{margin:1em 40px}
  21 +hr{box-sizing:content-box;height:0}
  22 +pre{overflow:auto}
  23 +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}
  24 +button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}
  25 +button{overflow:visible}
  26 +button,select{text-transform:none}
  27 +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
  28 +button[disabled],html input[disabled]{cursor:default}
  29 +button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
  30 +input{line-height:normal}
  31 +input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
  32 +input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}
  33 +input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}
  34 +input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
  35 +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}
  36 +legend{border:0;padding:0}
  37 +textarea{overflow:auto}
  38 +optgroup{font-weight:bold}
  39 +table{border-collapse:collapse;border-spacing:0}
  40 +td,th{padding:0}
  41 +*{box-sizing:border-box}
  42 +input,select,textarea,button{font:13px / 1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}
  43 +body{font:13px / 1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";color:#333;background-color:#fff}
  44 +a{color:#4078c0;text-decoration:none}
  45 +a:hover,a:active{text-decoration:underline}
  46 +hr,.rule{height:0;margin:15px 0;overflow:hidden;background:transparent;border:0;border-bottom:1px solid #ddd}
  47 +hr::before,.rule::before{display:table;content:""}
  48 +hr::after,.rule::after{display:table;clear:both;content:""}
  49 +h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0;line-height:1.5}
  50 +h1{font-size:30px}
  51 +h2{font-size:21px}
  52 +h3{font-size:16px}
  53 +h4{font-size:14px}
  54 +h5{font-size:12px}
  55 +h6{font-size:11px}
  56 +p{margin-top:0;margin-bottom:10px}
  57 +small{font-size:90%}
  58 +blockquote{margin:0}
  59 +.lead{margin-bottom:30px;font-size:20px;font-weight:300;color:#555}
  60 +.text-emphasized{font-weight:bold;color:#333}
  61 +ul,ol{padding-left:0;margin-top:0;margin-bottom:0}
  62 +ol ol,ul ol{list-style-type:lower-roman}
  63 +ul ul ol,ul ol ol,ol ul ol,ol ol ol{list-style-type:lower-alpha}
  64 +dd{margin-left:0}
  65 +tt,code{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}
  66 +pre{margin-top:0;margin-bottom:0;font:12px Consolas,"Liberation Mono",Menlo,Courier,monospace}
  67 +.markdown-body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;line-height:1.6;word-wrap:break-word}
  68 +.markdown-body:before{display:table;content:""}
  69 +.markdown-body:after{display:table;clear:both;content:""}
  70 +.markdown-body>*:first-child{margin-top:0 !important}
  71 +.markdown-body>*:last-child{margin-bottom:0 !important}
  72 +.markdown-body a:not([href]){color:inherit;text-decoration:none}
  73 +.markdown-body .absent{color:#c00}
  74 +.markdown-body .anchor{display:inline-block;padding-right:2px;margin-left:-18px}
  75 +.markdown-body .anchor:focus{outline:none}
  76 +.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1em;margin-bottom:16px;font-weight:bold;line-height:1.4}
  77 +.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}
  78 +.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}
  79 +.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}
  80 +.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit}
  81 +.markdown-body h1{padding-bottom:0.3em;font-size:2.25em;line-height:1.2;border-bottom:1px solid #eee}
  82 +.markdown-body h1 .anchor{line-height:1}
  83 +.markdown-body h2{padding-bottom:0.3em;font-size:1.75em;line-height:1.225;border-bottom:1px solid #eee}
  84 +.markdown-body h2 .anchor{line-height:1}
  85 +.markdown-body h3{font-size:1.5em;line-height:1.43}
  86 +.markdown-body h3 .anchor{line-height:1.2}
  87 +.markdown-body h4{font-size:1.25em}
  88 +.markdown-body h4 .anchor{line-height:1.2}
  89 +.markdown-body h5{font-size:1em}
  90 +.markdown-body h5 .anchor{line-height:1.1}
  91 +.markdown-body h6{font-size:1em;color:#777}
  92 +.markdown-body h6 .anchor{line-height:1.1}
  93 +.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin-top:0;margin-bottom:16px}
  94 +.markdown-body hr{height:4px;padding:0;margin:16px 0;background-color:#e7e7e7;border:0 none}
  95 +.markdown-body ul,.markdown-body ol{padding-left:2em}
  96 +.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}
  97 +.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}
  98 +.markdown-body li>p{margin-top:16px}
  99 +.markdown-body dl{padding:0}
  100 +.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}
  101 +.markdown-body dl dd{padding:0 16px;margin-bottom:16px}
  102 +.markdown-body blockquote{padding:0 15px;color:#777;border-left:4px solid #ddd}
  103 +.markdown-body blockquote>:first-child{margin-top:0}
  104 +.markdown-body blockquote>:last-child{margin-bottom:0}
  105 +.markdown-body table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}
  106 +.markdown-body table th{font-weight:bold}
  107 +.markdown-body table th,.markdown-body table td{padding:6px 13px;border:1px solid #ddd}
  108 +.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}
  109 +.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}
  110 +.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}
  111 +.markdown-body img[align=right]{padding-left:20px}
  112 +.markdown-body img[align=left]{padding-right:20px}
  113 +.markdown-body .emoji{max-width:none;background-color:transparent}
  114 +.markdown-body span.frame{display:block;overflow:hidden}
  115 +.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid #ddd}
  116 +.markdown-body span.frame span img{display:block;float:left}
  117 +.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:#333}
  118 +.markdown-body span.align-center{display:block;overflow:hidden;clear:both}
  119 +.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}
  120 +.markdown-body span.align-center span img{margin:0 auto;text-align:center}
  121 +.markdown-body span.align-right{display:block;overflow:hidden;clear:both}
  122 +.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}
  123 +.markdown-body span.align-right span img{margin:0;text-align:right}
  124 +.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}
  125 +.markdown-body span.float-left span{margin:13px 0 0}
  126 +.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}
  127 +.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}
  128 +.markdown-body code,.markdown-body tt{padding:0;padding-top:0.2em;padding-bottom:0.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,0.04);border-radius:3px}
  129 +.markdown-body code:before,.markdown-body code:after,.markdown-body tt:before,.markdown-body tt:after{letter-spacing:-0.2em;content:"\00a0"}
  130 +.markdown-body code br,.markdown-body tt br{display:none}
  131 +.markdown-body del code{text-decoration:inherit}
  132 +.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}
  133 +.markdown-body .highlight{margin-bottom:16px}
  134 +.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}
  135 +.markdown-body .highlight pre{margin-bottom:0;word-break:normal}
  136 +.markdown-body pre{word-wrap:normal}
  137 +.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}
  138 +.markdown-body pre code:before,.markdown-body pre code:after,.markdown-body pre tt:before,.markdown-body pre tt:after{content:normal}
  139 +.markdown-body kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}
  140 +.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}
  141 +.markdown-body .csv-data .blob-num{padding:10px 8px 9px;text-align:right;background:#fff;border:0}
  142 +.markdown-body .csv-data tr{border-top:0}
  143 +.markdown-body .csv-data th{font-weight:bold;background:#f8f8f8;border-top:0}
amWiki/images/a/TB2wcipuXXXXXbUXXXXXXXXXXXX_!!0-jiyoujia.jpg 0 → 100644

467 KB

amWiki/images/icons.svg 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  3 + <symbol id="icon:navHome" viewBox="0 0 32 32" style="fill:currentColor">
  4 + <path d="m16 0l-16 16h4v16h24v-16h4l-16-16zm8 28h-6v-6h-4v6h-6v-14l8-6 8 5.7v14z"/>
  5 + </symbol>
  6 + <symbol id="icon:navFilter" viewBox="0 0 32 32" style="fill:currentColor">
  7 + <g transform="scale(0.03125, 0.03125)">
  8 + <path d="M400.627447 927.694607c-25.929556 0-46.966685-21.037129-46.966685-46.966685L353.660762 542.308283 74.339102 172.687014c-11.313673-14.065344-13.514805-33.45188-5.748934-49.719378 7.828292-16.267499 24.339338-26.663266 42.380226-26.663266l801.437042 0c17.673521 0 33.879622 9.968026 41.891086 25.746384s6.482645 34.736129-3.975545 48.985668L669.540036 541.14683l0 211.700563c0 25.929556-21.037129 46.966685-46.966685 46.966685-25.929556 0-46.966685-21.037129-46.966685-46.966685L575.606667 525.796214c0-9.968026 3.180436-19.691481 9.051143-27.764344l235.101529-307.793108L208.94173 190.238762l228.317009 306.142515c6.665817 8.317433 10.335393 18.7132 10.335393 29.41596l0 354.931708C447.594131 906.657478 426.557002 927.694607 400.627447 927.694607z"></path>
  9 + </g>
  10 + </symbol>
  11 + <symbol id="icon:navArrow" viewBox="0 0 32 32" style="fill:currentColor">
  12 + <g transform="scale(0.03125, 0.03125)">
  13 + <path d="M959.391517 255.877715 511.696078 703.573153 64.00064 255.877715Z"></path>
  14 + </g>
  15 + </symbol>
  16 + <symbol id="icon:backTop" viewBox="0 0 32 32" style="fill:currentColor">
  17 + <g transform="scale(0.03125, 0.03125)">
  18 + <path d="M849.513502 524.698207l-308.405045-310.430168c-6.833639-6.867408-15.761985-10.1645-24.656563-10.095939-1.201361-0.103354-2.231831-0.686638-3.432169-0.686638-5.015224 0-9.68457 1.167592-13.978363 3.090385-4.325515 1.647523-8.445346 4.155646-11.948123 7.658424l-278.290167 277.807167c-13.426801 13.392008-13.46057 35.130102-0.034792 48.556902 6.695492 6.729262 15.487739 10.096962 24.312732 10.096962 8.7902 0 17.546631-3.367701 24.27794-10.028401l221.320665-220.97581 0 604.927459c0 18.99154 15.384385 34.340109 34.340109 34.340109 18.952654 0 34.340109-15.34857 34.340109-34.340109L547.359834 318.007751l253.460666 255.111259c6.696516 6.730285 15.557324 10.129708 24.347524 10.129708s17.512862-3.331885 24.208355-9.994632C862.872764 559.897893 862.90551 538.123984 849.513502 524.698207zM890.757858 134.805242 135.282614 134.805242c-18.954701 0-34.340109-15.384385-34.340109-34.340109s15.384385-34.340109 34.340109-34.340109l755.475244 0c18.98847 0 34.339086 15.384385 34.339086 34.340109S909.745305 134.805242 890.757858 134.805242z"></path>
  19 + </g>
  20 + </symbol>
  21 + <symbol id="icon:navStart" viewBox="0 0 32 32" style="fill:currentColor">
  22 + <g transform="scale(0.03125, 0.03125)">
  23 + <path d="M102.548584 218.264049l818.644959 0 0 102.33062-818.644959 0 0-102.33062ZM102.548584 461.299271l818.644959 0 0 102.33062-818.644959 0 0-102.33062ZM102.548584 704.334493l818.644959 0 0 102.33062-818.644959 0 0-102.33062Z"></path>
  24 + </g>
  25 + </symbol>
  26 + <symbol id="icon:navClose" viewBox="0 0 32 32" style="fill:currentColor">
  27 + <g transform="scale(0.03125, 0.03125)">
  28 + <path d="M588.99845 509.618605l412.775194-412.775194c19.051163-19.051163 19.051163-57.153488 0-82.555039-19.051163-19.051163-57.153488-19.051163-82.555039 0L512.793798 427.063566 100.018605 20.63876c-19.051163-19.051163-57.153488-19.051163-82.555039 0-19.051163 19.051163-19.051163 57.153488 0 82.555039L430.23876 509.618605l-412.775194 412.775194c-19.051163 19.051163-19.051163 57.153488 0 82.555039C30.164341 1011.299225 49.215504 1017.649612 61.916279 1017.649612s31.751938-6.350388 38.102326-19.051163L512.793798 592.173643l412.775194 412.775194c12.700775 12.700775 25.40155 19.051163 38.102326 19.051163 12.700775 0 31.751938-6.350388 38.102326-19.051163 19.051163-19.051163 19.051163-57.153488 0-82.555039L588.99845 509.618605z"></path>
  29 + </g>
  30 + </symbol>
  31 + <symbol id="icon:linkAnchor" viewBox="0 0 32 32" style="fill:currentColor">
  32 + <g transform="scale(0.03125, 0.03125)">
  33 + <path d="M616.601336 477.134935c0-96.148827-76.528977-174.34477-170.628122-174.34477l-138.339742 0.027629c-98.788957 0.007163-179.177845 78.195943-179.177845 174.330444l0.017396 69.698408c-0.024559 96.15292 80.406285 174.359097 179.205475 174.359097l38.696324 0.00307c19.815301-0.024559 35.851533-15.624862 35.848463-34.882462 0.00307-19.250436-16.032138-34.853809-35.823903-34.853809l-38.749536 0c-59.268872-0.007163-109.451808-46.925752-109.465111-104.604406l0-69.733201c0-57.668421 50.154283-104.58394 109.462041-104.594173l138.329509-0.024559c56.472176 0.024559 100.867292 46.911426 100.890828 104.618732l1.496074 34.872229c0 9.627265 3.810792 18.365276 9.969049 24.65554 6.178723 6.310729 14.728446 10.209526 24.153096 10.206456 18.84623 0.00307 34.118052-15.600303 34.118052-34.860972L616.601336 477.134935zM895.526977 477.152331c0.024559-96.148827-80.406285-174.355003-179.205475-174.359097l-38.696324-0.00307c-19.815301 0.024559-35.851533 15.627932-35.851533 34.882462 0 19.254529 16.036231 34.853809 35.826973 34.857902l38.745443 0c59.268872 0.00307 109.451808 46.922682 109.469204 104.604406l0 69.733201c0 57.668421-50.154283 104.58394-109.462041 104.591103l-138.329509 0.027629c-56.472176-0.024559-100.867292-46.911426-100.890828-104.618732l-1.496074-34.872229c0-9.630335-3.810792-18.365276-9.969049-24.65554-6.181793-6.314823-14.728446-10.209526-24.153096-10.205433-18.84623-0.007163-34.119075 15.600303-34.119075 34.860972l0 34.872229c0 96.145757 76.532047 174.340677 170.631192 174.340677l138.339742-0.024559c98.788957-0.007163 179.177845-78.199013 179.173752-174.330444L895.526977 477.152331z"></path>
  34 + </g>
  35 + </symbol>
  36 + <symbol id="icon:loading" viewBox="0 0 32 32" style="fill:currentColor">
  37 + <g transform="scale(0.03125, 0.03125)">
  38 + <path d="M955.733333 765.866667c0 0 0 2.133333 0 2.133333-12.8 21.333333-38.4 27.733333-57.6 14.933333-19.2-10.666667-27.733333-36.266667-17.066667-57.6l0 0c36.266667-64 57.6-136.533333 57.6-213.333333s-21.333333-151.466667-57.6-213.333333l0 0c-10.666667-19.2-4.266667-44.8 17.066667-57.6 21.333333-12.8 46.933333-4.266667 57.6 14.933333 0 0 0 2.133333 0 2.133333 42.666667 74.666667 68.266667 162.133333 68.266667 253.866667S998.4 691.2 955.733333 765.866667zM768 955.733333C768 955.733333 765.866667 955.733333 768 955.733333c-76.8 42.666667-164.266667 68.266667-256 68.266667s-179.2-25.6-253.866667-68.266667c0 0-2.133333 0-2.133333 0-21.333333-12.8-27.733333-38.4-14.933333-57.6 12.8-21.333333 38.4-27.733333 57.6-14.933333 0 0 0 0 2.133333 0l0 0C362.666667 917.333333 435.2 938.666667 512 938.666667s149.333333-21.333333 211.2-57.6l0 0c0 0 0 0 2.133333 0 21.333333-12.8 46.933333-4.266667 57.6 14.933333C795.733333 917.333333 789.333333 942.933333 768 955.733333zM727.466667 142.933333 727.466667 142.933333C663.466667 106.666667 590.933333 85.333333 512 85.333333s-151.466667 21.333333-213.333333 57.6l0 0c-19.2 10.666667-44.8 4.266667-57.6-17.066667C228.266667 106.666667 234.666667 81.066667 256 68.266667c0 0 2.133333 0 2.133333 0C332.8 25.6 420.266667 0 512 0s179.2 25.6 253.866667 68.266667c0 0 2.133333 0 2.133333 0 21.333333 12.8 27.733333 38.4 14.933333 57.6C772.266667 147.2 746.666667 153.6 727.466667 142.933333zM125.866667 782.933333C106.666667 795.733333 81.066667 789.333333 68.266667 768c0 0 0-2.133333 0-2.133333C25.6 691.2 0 603.733333 0 512s25.6-179.2 68.266667-253.866667c0 0 0-2.133333 0-2.133333 12.8-21.333333 38.4-27.733333 57.6-14.933333 21.333333 12.8 27.733333 38.4 14.933333 57.6 0 0 0 0 0 2.133333l0 0C106.666667 362.666667 85.333333 435.2 85.333333 512s21.333333 149.333333 57.6 211.2l0 0c0 0 0 0 0 2.133333C153.6 746.666667 147.2 772.266667 125.866667 782.933333z"></path>
  39 + </g>
  40 + </symbol>
  41 + <symbol id="icon:search" viewBox="0 0 32 32" style="fill:currentColor">
  42 + <g transform="scale(0.03125, 0.03125)">
  43 + <path d="M941.427376 910.59516c-16.080234 16.010649-69.712735 18.382673-85.792968 2.378164L631.709429 684.444491c61.748343-50.087768 70.796416-148.074454 70.796416-199.626573 0-148.759045-109.305475-260.410961-257.868045-260.410961-148.56871 0-256.612449 109.908202-256.612449 258.673387 0 148.752906 102.096283 261.730003 250.664993 261.730003 30.759561 0 44.760436 0.037862 72.293513-9.466606l0.38681 1.483794c7.000438-3.544733 77.435627-12.098549 77.435627 60.962443 0 20.455891-15.623839 41.425482-34.932604 48.178279-32.66905 11.420097-75.431993 16.936741-108.60144 16.936741-211.592093 0-381.180536-169.367409-381.180536-380.807029 0-211.370035 169.589466-382.79122 381.180536-382.79122 211.667817 0 381.180536 171.421184 381.180536 382.79122 0 65.812915-12.979616 127.682008-40.201607 179.176822l157.154249 159.189605C959.423239 836.475046 957.439048 894.660236 941.427376 910.59516L941.427376 910.59516zM941.427376 910.59516"></path>
  44 + </g>
  45 + </symbol>
  46 + <symbol id="icon:contents" viewBox="0 0 32 32" style="fill:currentColor">
  47 + <g transform="scale(0.03125, 0.03125)">
  48 + <path d="M173.311 317.051l677.38 0c20.782 0 37.632-22.186 37.632-49.552 0-27.363-16.85-49.551-37.632-49.551l-677.38 0c-20.782 0-37.633 22.188-37.633 49.551C135.678 294.865 152.528 317.051 173.311 317.051zM850.69 482.948l-677.38 0c-20.782 0-37.633 22.188-37.633 49.551 0 27.366 16.851 49.553 37.633 49.553l677.38 0c20.782 0 37.632-22.187 37.632-49.553C888.322 505.136 871.473 482.948 850.69 482.948zM865.307 706.948l-414.29 0c-12.71 0-23.017 22.188-23.017 49.551 0 27.366 10.307 49.553 23.017 49.553l414.29 0c12.71 0 23.016-22.187 23.016-49.553C888.322 729.136 878.017 706.948 865.307 706.948z"></path>
  49 + </g>
  50 + </symbol>
  51 + <symbol id="icon:footnoteBack" viewBox="0 0 32 32" style="fill:currentColor">
  52 + <g transform="scale(0.03125, 0.03125)">
  53 + <path transform="rotate(-118.97699737548828 544.0010986328125,517.0001831054688)" d="m679.72461,226.14308l0,-218.14282l271.44708,290.8571l-271.44708,290.85712l0,-218.14285c0,0 -407.17047,0 -407.17047,218.14285s339.30872,290.85706 339.30872,290.85706l0,145.42859c0,0 -475.03235,-72.71429 -475.03235,-436.28564c0.00006,-290.85712 339.30887,-363.5714 542.8941,-363.5714z"/>
  54 + </g>
  55 + </symbol>
  56 +</svg>
0 \ No newline at end of file 57 \ No newline at end of file
amWiki/images/logo.png 0 → 100644

4.6 KB

amWiki/images/menubar_bg.png 0 → 100644

958 Bytes

amWiki/js/amWiki.docs.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 文档加载与渲染模块
  3 + * @author Tevin
  4 + */
  5 +
  6 +;
  7 +(function (win, doc, $) {
  8 +
  9 + 'use strict';
  10 +
  11 + var hljs = win.hljs;
  12 + var marked = win.marked;
  13 + var URL_ENCODE_NAME = 'AMWikiUrlEncode'; //记录url编码的键名
  14 +
  15 + /**
  16 + * 文档管理
  17 + * @constructor
  18 + */
  19 + var Docs = function () {
  20 + this.$e = {
  21 + win: $(win),
  22 + //markdown 文档内容容器
  23 + view: $('#view'),
  24 + //网页 title 标签
  25 + title: $('title'),
  26 + //目录悬浮窗标题
  27 + contentsTitle: $('#contentsTitle')
  28 + };
  29 + this.data = {
  30 + //记录页面宽度
  31 + pageWidth: 0
  32 + };
  33 + this._initUrlEncode();
  34 + this._initHashEvent();
  35 + };
  36 +
  37 + /**
  38 + * 初始化url编码类型标记
  39 + * @private
  40 + */
  41 + Docs.prototype._initUrlEncode = function () {
  42 + /*
  43 + * 由于win与linux采用不同编码保存中文文件名
  44 + * 记录浏览器打开当前域名的wiki时服务器中文文件名的编码类型
  45 + */
  46 + if (!localStorage[URL_ENCODE_NAME]) {
  47 + localStorage[URL_ENCODE_NAME] = 'utf8';
  48 + } else if (localStorage[URL_ENCODE_NAME] != 'utf8' && localStorage[URL_ENCODE_NAME] != 'gbk') {
  49 + localStorage[URL_ENCODE_NAME] = 'utf8';
  50 + }
  51 + //旧版本记录移除
  52 + delete localStorage.urlEcode
  53 + };
  54 +
  55 + /**
  56 + * 修正移动端hash变化时滚动位置
  57 + * @private
  58 + */
  59 + Docs.prototype._initHashEvent = function () {
  60 + var that = this;
  61 + this.data.pageWidth = this.$e.win.width();
  62 + this.$e.win.on('resize', function () {
  63 + that.data.pageWidth = that.$e.win.width();
  64 + });
  65 + this.$e.win.on('hashchange', function (e) {
  66 + var hash = location.hash.split('#')[1];
  67 + if (that.data.pageWidth <= 720) {
  68 + that.$e.view.find('h1,h2,h3').each(function (index, element) {
  69 + var $title = $(element);
  70 + var text = $title.text().replace(/\s+/g, '');
  71 + if (hash == text) {
  72 + that.$e.win.scrollTop($title.offset().top - 55);
  73 + }
  74 + });
  75 + }
  76 + });
  77 + };
  78 +
  79 + /**
  80 + * 转换链接文本
  81 + * @param {String} str
  82 + * @returns {String}
  83 + * @private
  84 + */
  85 + Docs.prototype._tramsformLinkText = function (str) {
  86 + return str
  87 + .replace(/^\s+|\s+$/g, '') //去除首尾空格
  88 + .replace(/'/g, '&#39;') //转义单引号
  89 + .replace(/"/g, '&#34;') //转义双引号,由于双引号无法正确传递给html属性,当作为hash时将删除处理
  90 + .replace(/\(/g, '&#40;') //转义左圆括号
  91 + .replace(/\)/g, '&#41;') //转义右圆括号
  92 + .replace(/\[/g, '&#91;') //转义左中括号
  93 + .replace(/\]/g, '&#93;'); //转义右中括号
  94 + };
  95 +
  96 + /**
  97 + * 设置文档h1、h2、h3描记
  98 + * @returns {string}
  99 + * @private
  100 + */
  101 + Docs.prototype._setTitlesAnchor = function () {
  102 + var that = this;
  103 + var $titles = null;
  104 + var hash = '';
  105 + var contentsMd = ''; //提取目录为markdown字符串
  106 + if (location.hash && location.hash.length > 1) {
  107 + hash = location.hash.split('#')[1];
  108 + }
  109 + var anchorHtml = '<a class="anchor" href="#{title}" name="{title}">' +
  110 + '<svg><use xlink:href="#icon:linkAnchor"></use></svg></a>';
  111 + $titles = that.$e.view.find('h1,h2,h3');
  112 + $titles.each(function (index, element) {
  113 + var $this = $(element);
  114 + var text1 = that._tramsformLinkText($this.text());
  115 + var text2 = text1.replace(/&#34;/g, ''); //删除双引号
  116 + //提取目录
  117 + if ($this.is('h2')) {
  118 + contentsMd += '1. [' + text1 + '](#' + text2 + ' "' + text2 + '")\n';
  119 + } else if ($this.is('h3')) {
  120 + contentsMd += '\t1. [' + text1 + '](#' + text2 + ' "' + text2 + '")\n';
  121 + }
  122 + //设置描记
  123 + $this.prepend(anchorHtml.replace(/{title}/g, text2));
  124 + //首次打开页面滚动位置修正
  125 + if (hash == $this.text().replace(/"/g, '')) {
  126 + if (that.data.pageWidth <= 720) {
  127 + that.$e.win.scrollTop($this.offset().top - 55);
  128 + } else {
  129 + that.$e.win.scrollTop($this.offset().top);
  130 + }
  131 + }
  132 + });
  133 + if (contentsMd.indexOf('\t') == 0) {
  134 + contentsMd = '1. &#12288;\n' + contentsMd;
  135 + }
  136 + return contentsMd;
  137 + };
  138 +
  139 + /**
  140 + * 创建脚注
  141 + * @param {String} text
  142 + * @returns {String}
  143 + * @private
  144 + */
  145 + Docs.prototype._setFootnote = function (text) {
  146 + var footnotes = [];
  147 + var noteReg = /\[\^([ a-zA-Z\d]+)]/g;
  148 + var footReg = /\[\^([ a-zA-Z\d]+)]: ?([\S\s]+?)(?=\[\^(?:[ a-zA-Z\d]+)]|\n\n|$)/g;
  149 + var templates = $.trim($('#template\\:footnote').text()).split(/[\r\n]+\s*/g);
  150 + templates[4] += templates[5] + templates[6] + templates[7] + templates[8];
  151 + var html = '';
  152 + //提取脚注内容
  153 + text = text.replace(footReg, function (match, s1, s2, index) {
  154 + var title = '';
  155 + s2 = s2.replace(/"(.*?)"\s*$/, function (m, ss1) {
  156 + title = ss1;
  157 + return '';
  158 + });
  159 + footnotes.push({
  160 + index: index,
  161 + note: s1,
  162 + content: s2,
  163 + title: title,
  164 + used: false
  165 + });
  166 + //从页面上删除底部脚注内容
  167 + return '';
  168 + });
  169 + //将脚注的标记转为序号
  170 + text = text.replace(noteReg, function (match, s1) {
  171 + for (var i = 0, foot; foot = footnotes[i]; i++) {
  172 + if (foot.note == s1) {
  173 + foot.used = true;
  174 + return templates[0].replace(/{{index}}/g, i + 1 + '').replace('{{title}}', foot.title);
  175 + }
  176 + }
  177 + //当脚注的正文不存在,视标记文本为正文
  178 + var length = footnotes.push({
  179 + index: 0,
  180 + note: s1,
  181 + content: s1,
  182 + used: true
  183 + });
  184 + return templates[0].replace(/{{index}}/g, length + '');
  185 + });
  186 + //生成底部脚注html
  187 + if (footnotes.length >= 1) {
  188 + for (var i = 0, foot; foot = footnotes[i]; i++) {
  189 + if (foot.used) {
  190 + html += templates[2]
  191 + .replace('{{index}}', i + 1)
  192 + .replace('{{content}}', foot.content)
  193 + .replace('{{back}}', templates[4].replace('{{index}}', i + 1));
  194 + } else {
  195 + html += templates[3].replace('{{content}}', foot.content);
  196 + }
  197 + }
  198 + html = templates[1].replace('{{list}}', html);
  199 + }
  200 + return text + '\n<br>' + html;
  201 + };
  202 +
  203 + /**
  204 + * 设置js代码块注释显示隐藏
  205 + * @param {Object} $elm
  206 + * @private
  207 + */
  208 + Docs.prototype._setJSCommentDisable = function ($elm) {
  209 + var $disBtn = $('<div class="lang-off-js-comment">注<i>/</i></div>');
  210 + $disBtn.on('click', function () {
  211 + var $this = $(this);
  212 + if ($this.hasClass('on')) {
  213 + $this.removeClass('on');
  214 + $elm.find('.hljs-comment').show();
  215 + } else {
  216 + $this.addClass('on');
  217 + $elm.find('.hljs-comment').hide();
  218 + }
  219 + });
  220 + $elm.prepend($disBtn);
  221 + };
  222 +
  223 + /**
  224 + * 解析流程图
  225 + * @param {Object} $elm
  226 + * @private
  227 + */
  228 + Docs.prototype._createFlowChart = function ($elm) {
  229 + var code = $elm.text();
  230 + $elm.text('');
  231 + var id = 'flowChart' + parseInt(Math.random() * 500);
  232 + $elm.attr('id', id);
  233 + var chart = flowchart.parse(code);
  234 + chart.drawSVG(id, {
  235 + 'line-width': 1.3,
  236 + 'line-length': 56,
  237 + 'line-color': '#666',
  238 + 'text-margin': 10,
  239 + 'font-size': 12,
  240 + 'font': 'normal',
  241 + 'font-family': 'Helvetica',
  242 + 'font-weight': 'normal',
  243 + 'font-color': 'black',
  244 + 'element-color': '#888',
  245 + 'fill': '#fff',
  246 + 'yes-text': '是',
  247 + 'no-text': '否',
  248 + 'arrow-end': 'block-wide-long',
  249 + 'symbols': {},
  250 + 'flowstate': {}
  251 + });
  252 + };
  253 +
  254 + /**
  255 + * 解析 Markdown 目录
  256 + * @param {String} html
  257 + * @returns {String}
  258 + * @private
  259 + */
  260 + Docs.prototype._setTOC = function (html) {
  261 + return html.replace(/\[(TOC|MENU)]/g, '<blockquote class="markdown-contents"></blockquote>');
  262 + };
  263 +
  264 + /**
  265 + * 解析 Markdown 自定义图片大小与对齐方式
  266 + * @param {String} html
  267 + * @returns {String}
  268 + * @private
  269 + */
  270 + Docs.prototype._setImgResize = function (html) {
  271 + return html.replace(/<img(.*?)src="(.*?)=(\d*[-x×]\d*)(-[lrc])?"/g, function (m, s1, s2, s3, s4) {
  272 + var imgHtml = '<img' + s1 + 'src="' + s2 + '"';
  273 + var imgSize = s3.split(/[-x×]/);
  274 + var align = ({'-l': 'left', '-r': 'right', '-c': 'center'})[s4];
  275 + if (imgSize[0]) {
  276 + imgHtml += ' width="' + imgSize[0] + '"';
  277 + }
  278 + if (imgSize[1]) {
  279 + imgHtml += ' height="' + imgSize[1] + '"';
  280 + }
  281 + if (align) {
  282 + imgHtml += ' align="' + align + '"';
  283 + }
  284 + return imgHtml;
  285 + });
  286 + };
  287 +
  288 + /**
  289 + * 解析 markdown 复选框
  290 + * @param {String} html
  291 + * @returns {String}
  292 + * @private
  293 + */
  294 + Docs.prototype._setCheckbox = function (html) {
  295 + return html.replace(/\[([√×Xx\s\-_])\]\s(.*?)([<\n\r])/g, function (m, s1, s2, s3, index) {
  296 + var checkboxHtml = '<input type="checkbox" id="checkbox' + index + '"';
  297 + checkboxHtml += /\s/.test(s1) ? '>' : 'checked="true">';
  298 + checkboxHtml += '<label for="checkbox' + index + '">' + s2 + '</label>';
  299 + return checkboxHtml + s3;
  300 + });
  301 + };
  302 +
  303 + /**
  304 + * 解析 markdown 文字飘红
  305 + * @param {String} html
  306 + * @returns {String}
  307 + * @private
  308 + */
  309 + Docs.prototype._setRedText = function (html) {
  310 + return html.replace(/==(.*?)==/g, function (m, s1) {
  311 + return '<mark>' + s1 + '</mark>';
  312 + });
  313 + };
  314 +
  315 + /**
  316 + * 创建目录
  317 + * @param {String} contents - markdown 目录
  318 + * @private
  319 + */
  320 + Docs.prototype._createContents = function (contents) {
  321 + var $contents = $('.markdown-contents').html(marked(contents));
  322 + $('blockquote').each(function () {
  323 + var $this = $(this);
  324 + var $links = $this.find('ol>li>a');
  325 + //至少2条链接才视为目录
  326 + if ($links.length > 1) {
  327 + $this.addClass('markdown-contents');
  328 + $contents = $contents.add($this);
  329 + }
  330 + });
  331 + //自带序号的目录,不再额外显示一层序号
  332 + $contents.find('ol').each(function () {
  333 + var $this = $(this);
  334 + var $links = $this.children('li').children('a');
  335 + var text1 = $links.eq(0).text(),
  336 + text2 = $links.eq(1).text();
  337 + var conditions = [
  338 + //普通数字类型
  339 + /^[\((]?(\d+\.?)+[^\d]{2,}/,
  340 + //汉字序号类型
  341 + /^[\((【第]?[一二三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+/,
  342 + //英文序号类型
  343 + /^(chapter)|(section)|(part)|(step)/i,
  344 + //罗马序号类型
  345 + /^[ⅠⅡⅢⅣIⅤⅥⅦⅧⅨⅩⅪⅫLCDM]+\.?/
  346 + ];
  347 + for (var i = 0, cond; cond = conditions[i]; i++) {
  348 + if (cond.test(text1) && cond.test(text2)) {
  349 + $this.addClass('unindex');
  350 + break;
  351 + }
  352 + }
  353 + });
  354 + //没写序号的目录,创建序号
  355 + var setIndex = function ($elm, index1) {
  356 + if ($elm.length == 0) {
  357 + return;
  358 + }
  359 + $elm.children('li').each(function (index2) {
  360 + var $this = $(this);
  361 + if (!$elm.hasClass('unindex')) {
  362 + var index = typeof index1 == 'number' ? (index1 + 1) + '.' + (index2 + 1): (index2 + 1) + '.';
  363 + $this.prepend('<i>' + index + '</i>');
  364 + }
  365 + setIndex($this.children('ol'), index2);
  366 + });
  367 + };
  368 + $contents.children('ol').each(function () {
  369 + setIndex($(this));
  370 + });
  371 + };
  372 +
  373 + /**
  374 + * 编码 url
  375 + * 由于服务器可能存在 GBK 或 UTF-8 两种编码,中文路径编码不对需要切换才能访问
  376 + * @param {String} path
  377 + * @param {String} type - 是否需要编码类型反转, GBK、UTF-8切换
  378 + * @returns {String}
  379 + * @private
  380 + */
  381 + Docs.prototype._encodeUrl = function (path, type) {
  382 + var url = 'library/';
  383 + if (typeof AWConfig.libraryPrefix == 'string' && AWConfig.libraryPrefix.length > 0) {
  384 + url = AWConfig.libraryPrefix.replace(/\\/g, '/').replace(/\/?&/, '/');
  385 + }
  386 + var paths = [];
  387 + //正常编码
  388 + if (type == 'normal') {
  389 + if (localStorage[URL_ENCODE_NAME] == 'utf8') {
  390 + url += encodeURI(path);
  391 + } else if (localStorage[URL_ENCODE_NAME] == 'gbk') {
  392 + paths = path.split('/').map(function (path) {
  393 + return GBK.encode(path);
  394 + });
  395 + url += paths.join('/');
  396 + }
  397 + }
  398 + //反转编码
  399 + else if (type == 'reverse') {
  400 + if (localStorage[URL_ENCODE_NAME] == 'utf8') {
  401 + paths = path.split('/').map(function (path) {
  402 + return GBK.encode(path);
  403 + });
  404 + url += paths.join('/');
  405 + } else if (localStorage[URL_ENCODE_NAME] == 'gbk') {
  406 + url += encodeURI(path);
  407 + }
  408 + }
  409 + url += '.md?t=' + (new Date()).getTime();
  410 + return url;
  411 + };
  412 +
  413 + /**
  414 + * 渲染文档
  415 + * @param {String} content - 需要渲染的文档内容
  416 + * @public
  417 + */
  418 + Docs.prototype.renderDoc = function (content) {
  419 + var that = this;
  420 + var html = '';
  421 + this.cleanView();
  422 + //创建脚注
  423 + content = this._setFootnote(content);
  424 + //编译 markdown
  425 + html = marked(content);
  426 + //创建目录标记,和悬浮窗格式统一
  427 + html = this._setTOC(html);
  428 + //自定义图片大小与对齐方式
  429 + html = this._setImgResize(html);
  430 + //复选框
  431 + html = this._setCheckbox(html);
  432 + //文字飘红
  433 + html = this._setRedText(html);
  434 + //填充到页面
  435 + this.$e.view.html(html);
  436 + //功能化代码块
  437 + this.$e.view.find('pre code').each(function (i, element) {
  438 + var $elm = $(element);
  439 + var className = $elm.attr('class') || '';
  440 + //创建流程图
  441 + if (className.indexOf('lang-flow') >= 0) {
  442 + that._createFlowChart($elm);
  443 + }
  444 + //创建语法高亮
  445 + else if (className.indexOf('lang') >= 0) {
  446 + hljs.highlightBlock(element);
  447 + }
  448 + //创建js注释开关
  449 + className = $elm.attr('class') || '';
  450 + if (className.indexOf('javascript') >= 0) {
  451 + that._setJSCommentDisable($elm);
  452 + }
  453 + });
  454 + //设置网页title
  455 + var title = this.$e.view.find('h1').eq(0).text();
  456 + this.$e.title.text(title);
  457 + this.$e.contentsTitle.text(title).attr('href', '#' + title.replace(/"/g, ''));
  458 + //创建描点
  459 + var contents = this._setTitlesAnchor();
  460 + //创建目录
  461 + this._createContents(contents);
  462 + };
  463 +
  464 + /**
  465 + * 读取文档
  466 + * @param {String} url
  467 + * @param {Function} callback
  468 + * @public
  469 + */
  470 + Docs.prototype.getDoc = function (url, callback) {
  471 + var that = this;
  472 + var ajaxData = {
  473 + type: 'get',
  474 + url: url,
  475 + dataType: 'text'
  476 + };
  477 + $.ajax(ajaxData)
  478 + .done(function (data) {
  479 + //如果请求响应包含html,视为报错
  480 + if (/^\s*<!(DOCTYPE|doctype)/.test(data)) {
  481 + return callback('fail');
  482 + }
  483 + //成功回调
  484 + callback('done', data);
  485 + })
  486 + //请求失败
  487 + .fail(function () {
  488 + callback('fail');
  489 + });
  490 + };
  491 +
  492 + /**
  493 + * 加载指定页面
  494 + * @param {String} path - 页面资源地址
  495 + * @param {Function} callback - 加载完成后的回调,包含参数:
  496 + * type - 加载页面最终状态,success、error 两种
  497 + * content - 加载页面成功时,传递加载的内容
  498 + * @public
  499 + */
  500 + Docs.prototype.loadPage = function (path, callback) {
  501 + //console.log(path);
  502 + var that = this;
  503 + var url = this._encodeUrl(path, 'normal');
  504 + this.getDoc(url, function (type, data) {
  505 + if (type == 'fail') {
  506 + //如果第一失败,转换url编码类型后发送第二次请求
  507 + var url = that._encodeUrl(path, 'reverse');
  508 + that.getDoc(url, function (type) {
  509 + //第二次仍然失败,视为打开文档失败
  510 + if (type == 'fail') {
  511 + callback && callback('error');
  512 + }
  513 + //如果第二次才成功,转换保存的编码类型标记
  514 + else if (type == 'done') {
  515 + localStorage[URL_ENCODE_NAME] = localStorage[URL_ENCODE_NAME] == 'utf8' ? 'gbk' : 'utf8';
  516 + callback && callback('success', data);
  517 + }
  518 + });
  519 + } else if (type == 'done') {
  520 + callback && callback('success', data);
  521 + }
  522 + });
  523 + };
  524 +
  525 + /**
  526 + * 清理页面
  527 + * @public
  528 + */
  529 + Docs.prototype.cleanView = function () {
  530 + this.$e.view.find('.lang-off-js-comment').off('click');
  531 + this.$e.view.html('');
  532 + };
  533 +
  534 + return win.AWDocs = Docs;
  535 +
  536 +})(window, document, jQuery);
0 \ No newline at end of file 537 \ No newline at end of file
amWiki/js/amWiki.imgsView.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 图片查看模块
  3 + * @author Tevin
  4 + */
  5 +
  6 +;(function (win, $) {
  7 +
  8 + 'use strict';
  9 +
  10 + /**
  11 + * 图片查看器
  12 + * @param {Element} _this
  13 + * @constructor
  14 + */
  15 + var ImgsView = function (_this) {
  16 + this.$e = {
  17 + container: $(_this), //文档主容器
  18 + imgList: null, //页面图片列表
  19 + imgsView: $('#imgsView'), //图片弹窗层
  20 + imgsViewInner: null, //图片容器
  21 + btnPrev: null,
  22 + btnNext: null
  23 + };
  24 + this._data = {
  25 + winW: 0,
  26 + winH: 0,
  27 + curIndex: -1
  28 + };
  29 + this._init();
  30 + };
  31 +
  32 + /**
  33 + * 初始化
  34 + * @private
  35 + */
  36 + ImgsView.prototype._init = function () {
  37 + var that = this;
  38 + this.$e.imgsViewInner = this.$e.imgsView.find('#imgsViewInner');
  39 + this.$e.btnPrev = this.$e.imgsView.find('.prev');
  40 + this.$e.btnNext = this.$e.imgsView.find('.next');
  41 + this._data.winW = $(win).width();
  42 + this._data.winH = $(win).height();
  43 + this.$e.container.on('click', function (e) {
  44 + if (e.target.tagName.toLowerCase() == 'img') {
  45 + //抓取图片列表
  46 + that.$e.imgList = that.$e.container.find('img');
  47 + that._data.curIndex = that.$e.imgList.index(e.target);
  48 + that.open();
  49 + }
  50 + });
  51 + this.$e.imgsView.children('.imgsv-background').on('click', function () {
  52 + that.close();
  53 + });
  54 + this.$e.imgsView.find('.original').on('click', function () {
  55 + that.resizeAs('org');
  56 + });
  57 + this.$e.imgsView.find('.suit').on('click', function () {
  58 + that.resizeAs('suit');
  59 + });
  60 + this.$e.imgsView.find('.prev').on('click', function () {
  61 + var $this = $(this);
  62 + if (!$this.hasClass('off')) {
  63 + that.playTo(that._data.curIndex - 1);
  64 + }
  65 + });
  66 + this.$e.imgsView.find('.next').on('click', function () {
  67 + var $this = $(this);
  68 + if (!$this.hasClass('off')) {
  69 + that.playTo(that._data.curIndex + 1);
  70 + }
  71 + });
  72 + };
  73 +
  74 + /**
  75 + * 显示图片浏览弹层
  76 + * @public
  77 + */
  78 + ImgsView.prototype.open = function () {
  79 + var that = this;
  80 + this.playTo(this._data.curIndex);
  81 + this.$e.imgsView.fadeIn(80);
  82 + setTimeout(function () {
  83 + that.$e.imgsView.addClass('on');
  84 + }, 50);
  85 + };
  86 +
  87 + /**
  88 + * 关闭图片浏览弹层
  89 + * @public
  90 + */
  91 + ImgsView.prototype.close = function () {
  92 + var that = this;
  93 + this.$e.imgsView.removeClass('on');
  94 + setTimeout(function () {
  95 + that.$e.imgsView.fadeOut(50);
  96 + }, 200);
  97 + that.$e.imgList = null;
  98 + that._data.curIndex = -1;
  99 + };
  100 +
  101 + /**
  102 + * 切换图片
  103 + * @param {Number} index
  104 + * @public
  105 + */
  106 + ImgsView.prototype.playTo = function (index) {
  107 + if (index == 0) {
  108 + this.$e.btnPrev.addClass('off');
  109 + } else {
  110 + this.$e.btnPrev.removeClass('off');
  111 + }
  112 + if (index == this.$e.imgList.length - 1) {
  113 + this.$e.btnNext.addClass('off');
  114 + } else {
  115 + this.$e.btnNext.removeClass('off');
  116 + }
  117 + this.$e.imgCur = this.$e.imgList.eq(index).clone().removeAttr('align');
  118 + this.resizeAs('suit');
  119 + this.$e.imgsViewInner.html(this.$e.imgCur);
  120 + this._data.curIndex = index;
  121 + };
  122 +
  123 + /**
  124 + * 设置图片尺寸
  125 + * @param {String} type - 尺寸模式:suit 适合 / org 原大小
  126 + * @public
  127 + */
  128 + ImgsView.prototype.resizeAs = function (type) {
  129 + if (type == 'suit') {
  130 + this.$e.imgCur.removeAttr('width').removeAttr('height');
  131 + if (this.$e.imgCur[0].naturalWidth > this._data.winW - 60) {
  132 + this.$e.imgCur.css('max-width', this._data.winW - 60);
  133 + }
  134 + if (this.$e.imgCur[0].naturalHeight > this._data.winH - 60) {
  135 + this.$e.imgCur.css('max-height', this._data.winH - 60);
  136 + }
  137 + } else if (type == 'org') {
  138 + this.$e.imgCur.removeAttr('style');
  139 + this.$e.imgCur.attr({
  140 + 'width': this.$e.imgCur[0].naturalWidth,
  141 + 'height': this.$e.imgCur[0].naturalHeight
  142 + });
  143 + }
  144 + };
  145 +
  146 + //注册到 jQuery
  147 + $.extend($.fn, {
  148 + imgsView: function () {
  149 + return this.each(function () {
  150 + return new ImgsView(this);
  151 + });
  152 + }
  153 + });
  154 +
  155 +})(window, jQuery);
0 \ No newline at end of file 156 \ No newline at end of file
amWiki/js/amWiki.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 入口模块
  3 + * @author Tevin
  4 + * @see {@link https://github.com/TevinLi/amWiki}
  5 + * @license MIT - Released under the MIT license.
  6 + */
  7 +
  8 +$(function () {
  9 +
  10 + 'use strict';
  11 +
  12 + /*
  13 + 引入
  14 + */
  15 +
  16 + //工具集
  17 + var tools = window.tools;
  18 + //文档管理器
  19 + var docs = new AWDocs();
  20 + //本地存储
  21 + var storage = new AWStorage();
  22 + //全文库搜索
  23 + var search = new AWSearch(storage);
  24 + //启用接口ajax测试
  25 + if (window.AWTesting) {
  26 + var testing = new AWTesting();
  27 + }
  28 + //是否支持history.state的API (IE9不支持)
  29 + var HISTORY_STATE = 'pushState' in history;
  30 +
  31 + /*
  32 + 页面基本
  33 + */
  34 +
  35 + //页面元素
  36 + var $win = $(window),
  37 + $body = $('body'),
  38 + $menuIcon = $('#menuIcon'), //顶部折叠显示导航按钮
  39 + $container = $('#container'), //页面主容器
  40 + $nav = $('#nav'), //左侧导航
  41 + $menuBar = $('#menuBar'), //左侧导航内容
  42 + $filter = $('#menuFilter'),
  43 + $filterClean = $filter.next('i'),
  44 + $main = $('#main'),
  45 + $mainInner = $main.children('.main-inner'),
  46 + $mainSibling = $('#mainSibling'), //其他文章
  47 + $contents = $('#contents'); //目录
  48 +
  49 + //是否为移动端
  50 + var isMobi = window.isMobi = (function () {
  51 + var winW = $win.width();
  52 + var threshold = 720;
  53 + var onResize = function () {
  54 + winW = $win.width();
  55 + if (winW <= threshold) {
  56 + $container.removeAttr('style');
  57 + } else {
  58 + $container.height($win.height() - 70 - 15 - 20 * 2);
  59 + }
  60 + };
  61 + onResize();
  62 + $win.on('resize', onResize);
  63 + return function () {
  64 + return winW <= threshold;
  65 + };
  66 + })();
  67 +
  68 + //页面基本显示与操作
  69 + (function () {
  70 + //菜单折叠
  71 + $menuBar.on('click', 'h4', function () {
  72 + var $this = $(this);
  73 + if (!$this.hasClass('on')) {
  74 + $this.addClass('on');
  75 + $menuBar.find('a').removeClass('on');
  76 + }
  77 + $menuBar.find('h5').removeClass('on').next('ul').hide();
  78 + });
  79 + $menuBar.on('click', 'h5', function () {
  80 + var $this = $(this),
  81 + $next = $this.next('ul');
  82 + if ($this.hasClass('on')) {
  83 + $this.removeClass('on');
  84 + $next.slideUp(200, function () {
  85 + $menuBar.trigger('scrollbar');
  86 + });
  87 + } else {
  88 + $this.addClass('on');
  89 + $next.slideDown(200, function () {
  90 + $menuBar.trigger('scrollbar');
  91 + });
  92 + }
  93 + });
  94 + $menuBar.on('click', 'strong', function () {
  95 + var $this = $(this),
  96 + $next = $this.next('ul');
  97 + if ($this.hasClass('on')) {
  98 + $this.removeClass('on');
  99 + $next.slideUp(200, function () {
  100 + $menuBar.trigger('scrollbar');
  101 + });
  102 + } else {
  103 + $this.addClass('on');
  104 + $next.slideDown(200, function () {
  105 + $menuBar.trigger('scrollbar');
  106 + });
  107 + }
  108 + });
  109 + //响应式菜单
  110 + $menuIcon.on('click', function () {
  111 + var $this = $(this);
  112 + if ($this.hasClass('close')) {
  113 + $this.removeClass('close')
  114 + .find('use').attr('xlink:href', '#icon:navStart');
  115 + $nav.removeClass('on');
  116 + } else {
  117 + $this.addClass('close')
  118 + .find('use').attr('xlink:href', '#icon:navClose');
  119 + $nav.addClass('on');
  120 + }
  121 + });
  122 + $nav.on('navchange searchon searchoff', function (e) {
  123 + $menuIcon.removeClass('close')
  124 + .find('use').attr('xlink:href', '#icon:navStart');
  125 + $nav.removeClass('on');
  126 + });
  127 + //筛选操作
  128 + $filter.on('input propertychange input2', function () {
  129 + var value = $filter.val().replace(/([\(\)\[\]\^\$\+])/g, '\\$1');
  130 + var valReg = new RegExp('(' + $.trim($filter.val()).split(/[ ,]/).join('|') + ')', 'ig');
  131 + if (value != '' && !/^\s$/g.test(value)) {
  132 + $filterClean.removeClass('off');
  133 + $menuBar.find('h5').each(function () {
  134 + filterNav('filter', valReg, $(this));
  135 + });
  136 + storage.setStates('navFilterKey', value);
  137 + } else {
  138 + $filterClean.addClass('off');
  139 + $menuBar.find('h5').each(function () {
  140 + filterNav('open', null, $(this));
  141 + });
  142 + storage.setStates('navFilterKey');
  143 + }
  144 + $menuBar.trigger('scrollbar');
  145 + });
  146 + //清空筛选
  147 + $filterClean.on('click', function () {
  148 + $filter.val('').trigger('input2');
  149 + });
  150 + //显示svg图标
  151 + if (sessionStorage['AMWikiIconsSvg']) {
  152 + $('#svgSymbols').append(sessionStorage['AMWikiIconsSvg']);
  153 + } else {
  154 + $.get('amWiki/images/icons.svg', function (svg) {
  155 + sessionStorage['AMWikiIconsSvg'] = svg;
  156 + $('#svgSymbols').append(svg);
  157 + }, 'text').fail(function () {
  158 + if (typeof AWPageMounts != 'undefined') {
  159 + sessionStorage['AMWikiIconsSvg'] = AWPageMounts['icon'].content;
  160 + $('#svgSymbols').append(AWPageMounts['icon'].content);
  161 + }
  162 + });
  163 + }
  164 + //目录悬浮窗展开折叠
  165 + $contents.children('.btn').on('click', function (e) {
  166 + $contents.toggleClass('on').removeClass('hover');
  167 + });
  168 + $contents.hover(function () {
  169 + $contents.addClass('hover');
  170 + }, function () {
  171 + $contents.removeClass('hover');
  172 + });
  173 + //开启滚动条
  174 + $('.scroller').scrollbar();
  175 + $('#backTop').on('click', function () {
  176 + $mainInner.scrollTop(0);
  177 + });
  178 + //图片放大
  179 + $main.imgsView();
  180 + //全局点击
  181 + $(document).on('click', function (e) {
  182 + var $tag = $(e.target);
  183 + //移动端
  184 + if (isMobi()) {
  185 + //折叠目录悬浮窗
  186 + if ($tag.closest('#contents').length == 0) {
  187 + $contents.removeClass('on').removeClass('on');
  188 + }
  189 + }
  190 + });
  191 + })();
  192 +
  193 + /*
  194 + 业务操作函数
  195 + */
  196 +
  197 + /**
  198 + * 向下递归进行导航筛选
  199 + * 当类型为筛选时,必定有正则
  200 + * 当文件夹匹配时,其所属链接和所有子级全部显示且显示匹配
  201 + * 当文件夹不匹配时,其所属链接和当前子级仅显示匹配,隐藏不匹配的项,下一级继续筛选
  202 + * 当类型为打开时,所属链接和子级一律全部显示不隐藏
  203 + * 如果有正则,显示当前匹配
  204 + * 如果无正则,清除匹配
  205 + * @param {String} type - 筛选类型,有 filter / open 两个值
  206 + * @param {regexp} valReg - 过滤筛选的正则
  207 + * @param {Object} $title - jquery 对象,“标题-列表”DOM结构中的标题
  208 + */
  209 + var filterNav = function (type, valReg, $title) {
  210 + var $ul = $title.next('ul');
  211 + //因为一级文件夹和子级文件夹DOM结构不同,所以区分对待
  212 + // 显示上,strong 带 on 加粗显示,h5 加 off 隐藏
  213 + // 文本操作使用变量 $span,其他操作使用变量 $title
  214 + var $span = $title.find('span');
  215 + //当类型为筛选时
  216 + if (type == 'filter' && valReg) {
  217 + //当文件夹标题匹配时
  218 + if (valReg.test($span.text())) {
  219 + $span.html($span.text().replace(valReg, '<mark>$1</mark>'));
  220 + $title.addClass('on').removeClass('off');
  221 + //所属链接全部显示,且显示匹配
  222 + $ul.show().find('> li > a').each(function () {
  223 + var $this = $(this);
  224 + var $span2 = $this.find('span');
  225 + $span2.html($span2.text().replace(valReg, '<mark>$1</mark>'));
  226 + $this.parent().removeClass('off');
  227 + });
  228 + //父级显示
  229 + showNavParents($title);
  230 + //下一级筛选类型更改,文件和文件夹全部显示,且显示匹配
  231 + $ul.find('> li > strong').each(function () {
  232 + filterNav('open', valReg, $(this));
  233 + });
  234 + }
  235 + //当文件夹标题不匹配时
  236 + else {
  237 + $span.text($span.text());
  238 + $title.removeClass('on');
  239 + //隐藏父级或隐藏h5
  240 + if ($title.is('h5')) {
  241 + $title.parent().addClass('off');
  242 + } else {
  243 + $title.addClass('off');
  244 + }
  245 + //所属链接仅显示匹配的
  246 + $ul.hide().find('> li > a').each(function () {
  247 + var $this = $(this);
  248 + var $span2 = $this.find('span');
  249 + if (valReg.test($this.text())) {
  250 + $span2.html($span2.text().replace(valReg, '<mark>$1</mark>'));
  251 + $this.parent().removeClass('off');
  252 + //存在匹配时父级才显示
  253 + showNavParents($ul.show().prev());
  254 + } else {
  255 + $span2.text($span2.text());
  256 + $this.parent().addClass('off');
  257 + }
  258 + });
  259 + //下一级继续完全筛选
  260 + $ul.find('> li > strong').each(function () {
  261 + filterNav('filter', valReg, $(this));
  262 + });
  263 + }
  264 + }
  265 + //当类型为打开,显示全部链接和文件夹
  266 + else if (type == 'open') {
  267 + $title.removeClass('off');
  268 + if ($title.hasClass('on')) {
  269 + $ul.show();
  270 + } else {
  271 + $ul.hide();
  272 + }
  273 + //当存在正则时,显示匹配
  274 + if (!!valReg) {
  275 + $span.html($span.text().replace(valReg, '<mark>$1</mark>'));
  276 + if (valReg.test($span.text())) {
  277 + $ul.show(); //当文件夹名称命中,展开文件夹
  278 + }
  279 + $ul.find('> li > a').each(function () {
  280 + var $this = $(this);
  281 + var $span2 = $this.find('span');
  282 + $span2.html($span2.text().replace(valReg, '<mark>$1</mark>'));
  283 + if (valReg.test($this.text())) {
  284 + $ul.show(); //当链接名称命中,展开文件夹
  285 + }
  286 + $this.parent().removeClass('off');
  287 + });
  288 + //父级显示
  289 + showNavParents($title);
  290 + //下一级继续以相同类型显示
  291 + $ul.find('> li > strong').each(function () {
  292 + filterNav('open', valReg, $(this));
  293 + });
  294 + }
  295 + //当正则不存在,显示所有本级和子级、清除匹配
  296 + else {
  297 + $span.text($span.text());
  298 + $ul.find('> li > a').each(function () {
  299 + var $span2 = $(this).find('span');
  300 + $span2.text($span2.text());
  301 + });
  302 + $ul.children('li').removeClass('off').children('strong').each(function () {
  303 + filterNav('open', null, $(this));
  304 + });
  305 + }
  306 + }
  307 + };
  308 + //向上递归显示父级
  309 + var showNavParents = function ($title) {
  310 + $title.addClass('on').removeClass('off');
  311 + //向上显示直到一级目录
  312 + if (!$title.is('h5')) {
  313 + var $prev2 = $title.parent().removeClass('off').parent().show().prev();
  314 + showNavParents($prev2);
  315 + }
  316 + };
  317 +
  318 + //改变底部上下篇目
  319 + var changeSibling = function ($item) {
  320 + //如果未传导航项进来,隐藏上下篇目栏位
  321 + if (!$item) {
  322 + $mainSibling.removeClass('on');
  323 + return;
  324 + }
  325 + //获取平级文档链接
  326 + var getDocLink = function (type, $elm) {
  327 + var $other = $elm[type]();
  328 + if ($other.length == 0) {
  329 + return null;
  330 + }
  331 + if ($other.children('ul').length > 0) {
  332 + return getDocLink(type, $other);
  333 + } else {
  334 + return $other.children('a');
  335 + }
  336 + };
  337 + //设置上下篇目导航
  338 + var setSiblingNav = function (num, $other) {
  339 + if ($other) {
  340 + $mainSibling.find('a').eq(num)
  341 + .attr('href', $other.attr('href'))
  342 + .text($other.text());
  343 + } else {
  344 + $mainSibling.find('a').eq(num)
  345 + .removeAttr('href')
  346 + .text('没有了');
  347 + }
  348 + };
  349 + setSiblingNav(0, getDocLink('prev', $item));
  350 + setSiblingNav(1, getDocLink('next', $item));
  351 + if (testing && !testing.isOpen()) {
  352 + $mainSibling.addClass('on');
  353 + }
  354 + };
  355 +
  356 + //改变导航显示
  357 + var changeNav = function (path) {
  358 + if (/^home[-_].*?/.test(path) || path == '首页') {
  359 + $menuBar.find('h4').addClass('on');
  360 + $menuBar.find('a').removeClass('on');
  361 + changeSibling(null);
  362 + } else {
  363 + var hsLink = false;
  364 + $menuBar.find('a').each(function () {
  365 + var $this = $(this);
  366 + var path2 = $this.attr('href').split('file=')[1];
  367 + if (path2 == path) {
  368 + hsLink = true;
  369 + //本层加高亮
  370 + var $prev = $this.addClass('on').parent().parent().show().prev().addClass('on');
  371 + //父级高亮
  372 + showNavParents($prev);
  373 + //改变上下篇切换
  374 + changeSibling($this.parent());
  375 + } else {
  376 + $this.removeClass('on');
  377 + }
  378 + });
  379 + if (hsLink) {
  380 + $menuBar.find('h4').removeClass('on');
  381 + }
  382 + }
  383 + curPath = path;
  384 + $menuBar.trigger('scrollbar');
  385 + };
  386 +
  387 + //返回首页
  388 + var backHome = function () {
  389 + docs.loadPage(homePage.path, function (state, content) {
  390 + if (state == 'success') {
  391 + changeNav(homePage.path);
  392 + docs.renderDoc(content);
  393 + storage.saveDoc(homePage.path, content);
  394 + $main.trigger('scrollbar');
  395 + }
  396 + });
  397 + if (HISTORY_STATE) {
  398 + history.replaceState({path: homePage.path}, '', homePage.url);
  399 + }
  400 + };
  401 +
  402 + //改变页面
  403 + var changePage = function (path, withOutPushState, callback) {
  404 + //第一步,从本地缓存读取并渲染页面
  405 + var localDoc = storage.read(path);
  406 + docs.renderDoc(localDoc);
  407 + testing && testing.crawlContent();
  408 + $main.trigger('scrollbar');
  409 + $mainInner.scrollTop(0); //返回顶部
  410 + //更新history记录
  411 + if (!withOutPushState && HISTORY_STATE) {
  412 + var path2 = path.replace(/&/g, '%26'); //对带 & 符号的地址特殊处理
  413 + history.pushState({path: path}, '', '?file=' + path2);
  414 + }
  415 + //第二步,加载服务器上的文档资源,如果有更新重新渲染
  416 + docs.loadPage(path, function (state, content) {
  417 + //读取服务器文档失败时
  418 + if (state == 'error') {
  419 + //如果本地缓存为空
  420 + if (localDoc == '') {
  421 + backHome();
  422 + }
  423 + //如果本地缓存不为空
  424 + else {
  425 + //记录文档打开数
  426 + storage.increaseOpenedCount(path);
  427 + callback && callback();
  428 + }
  429 + }
  430 + //读取服务器文档成功时
  431 + else if (state == 'success') {
  432 + //如果服务器文档有更新,更新本地缓存、重新渲染页面、重新判断接口测试
  433 + if (content != localDoc) {
  434 + docs.renderDoc(content);
  435 + storage.saveDoc(path, content);
  436 + testing && testing.crawlContent();
  437 + $main.trigger('scrollbar');
  438 + }
  439 + //如果服务器文档与本地缓存一致,不进行任何操作
  440 + else {
  441 + }
  442 + //记录文档打开数
  443 + storage.increaseOpenedCount(path);
  444 + callback && callback();
  445 + }
  446 + });
  447 + };
  448 +
  449 + //读取目录导航
  450 + var homePage = {};
  451 + var loadNav = function (callback) {
  452 + var fillNav = function (data) {
  453 + $menuBar.find('.scroller-content').html(marked(data));
  454 + //首页
  455 + var menuBarHome = $menuBar.find('h4');
  456 + homePage.text = menuBarHome.text();
  457 + homePage.url = menuBarHome.find('a').attr('href');
  458 + homePage.path = homePage.url.split('file=')[1];
  459 + menuBarHome.prepend('<svg><use xlink:href="#icon:navHome"></use></svg>');
  460 + //列表
  461 + $menuBar.find('h5').each(function () {
  462 + var $this = $(this);
  463 + $this.html('<svg><use xlink:href="#icon:navArrow"></use></svg><span>' + $this.text() + '</span>')
  464 + });
  465 + $menuBar.trigger('scrollbar');
  466 + var pathList = [];
  467 + //支持history api时,改变默认事件,导航不再跳转页面
  468 + $menuBar.find('a').each(function () {
  469 + var $this = $(this);
  470 + $this.html('<span>' + $this.text() + '</span>');
  471 + if (HISTORY_STATE) {
  472 + var path = $this.attr('href').split('file=')[1];
  473 + pathList.push(path);
  474 + $this.on('click', function () {
  475 + search.displayBox('off'); //关闭搜索面板
  476 + changeNav(path);
  477 + changePage(path);
  478 + $this.trigger('navchange');
  479 + return false;
  480 + });
  481 + }
  482 + });
  483 + //上下翻页不再跳页面
  484 + $mainSibling.find('a').on('click', function () {
  485 + if (HISTORY_STATE) {
  486 + var $this = $(this);
  487 + var href = $this.attr('href');
  488 + if (typeof href != 'undefined' && href != '') {
  489 + var path = href.split('file=')[1];
  490 + changeNav(path);
  491 + changePage(path);
  492 + $this.trigger('navchange');
  493 + }
  494 + return false;
  495 + }
  496 + });
  497 + $menuBar.find('strong').each(function () {
  498 + var $this = $(this);
  499 + $this.html('<span>' + $this.text() + '</span>');
  500 + });
  501 + //搜索结果不再跳转页面
  502 + $('#results').on('click', 'a', function () {
  503 + if (HISTORY_STATE) {
  504 + var $this = $(this);
  505 + var href = $this.attr('href');
  506 + if (typeof href != 'undefined' && href != '') {
  507 + var path = href.split('file=')[1];
  508 + search.displayBox('off'); //关闭搜索面板
  509 + changeNav(path);
  510 + changePage(path);
  511 + $this.trigger('navchange');
  512 + }
  513 + return false;
  514 + }
  515 + });
  516 + //设置导航筛选初始值
  517 + var filterVal = storage.getStates('navFilterKey');
  518 + if (typeof filterVal != 'undefined' && filterVal != '') {
  519 + $filter.val(filterVal).trigger('input2');
  520 + }
  521 + //回调
  522 + callback && callback(pathList);
  523 + };
  524 + $.get('library/$navigation.md?t=' + Date.now(), fillNav, 'text').fail(function () {
  525 + if (typeof AWPageMounts != 'undefined') {
  526 + fillNav(AWPageMounts['nav'].content);
  527 + }
  528 + });
  529 + };
  530 +
  531 + //读取页面挂载数据文档部分
  532 + var loadPageMounts = function () {
  533 + if (typeof AWPageMounts == 'undefined') {
  534 + return;
  535 + }
  536 + //打开页面立即比较页面挂载数据时间与本地缓存更新时间
  537 + // 因为首页总是更新的,如果首页页面挂载数据时间大于本地缓存时间,则挂载数据一定已经经过重建
  538 + var homePath = AWPageMounts['home'].name.replace(/\.md$/, '');
  539 + var homeStorageTime = storage.readTime(homePath);
  540 + //如果页面挂载数据经过了重建,开始更新,读取所有挂载数据插入到本地缓存,完成后删除释放资源占用
  541 + if (AWPageMounts['home'].timestamp > homeStorageTime) {
  542 + //首页
  543 + storage.saveDoc(homePath, AWPageMounts['home'].content);
  544 + delete AWPageMounts['home'];
  545 + //其他文档
  546 + for (var lv1 in AWPageMounts) {
  547 + if (!AWPageMounts.hasOwnProperty(lv1)) {
  548 + continue;
  549 + }
  550 + if (!/^m\d+/.test(lv1)) {
  551 + continue;
  552 + }
  553 + for (var i = 0, page; page = AWPageMounts[lv1][i]; i++) {
  554 + storage.saveDoc(page.path.replace(/\.md$/, ''), page.content);
  555 + }
  556 + delete AWPageMounts[lv1];
  557 + }
  558 + storage.saveRebuild();
  559 + }
  560 + //否则直接删除页面挂载数据的文档部分,释放内存资源占用
  561 + else {
  562 + delete AWPageMounts['home'];
  563 + for (var name in AWPageMounts) {
  564 + if (AWPageMounts.hasOwnProperty(name)) {
  565 + if (/^m\d+/.test(name)) {
  566 + delete AWPageMounts[name];
  567 + }
  568 + }
  569 + }
  570 + }
  571 + };
  572 +
  573 + //根据hash改变滚动位置
  574 + var changeScrollByHash = function () {
  575 + var hash = location.hash.split('#')[1];
  576 + //当不存在hash
  577 + if (!hash || hash.length == '') {
  578 + //检测是否在顶部,不在顶部滚动至顶部
  579 + if ($mainInner.scrollTop() != 0) {
  580 + $mainInner.scrollTop(0);
  581 + }
  582 + return;
  583 + }
  584 + //获取hash指向的元素
  585 + var $hash = $('.anchor[name="' + hash + '"]');
  586 + if ($hash.length == 0) {
  587 + return
  588 + }
  589 + //滚动至元素
  590 + $mainInner.scrollTop($hash.position().top + $mainInner.scrollTop() - 10);
  591 + };
  592 +
  593 + /*
  594 + 启动应用
  595 + */
  596 +
  597 + //解析地址参数
  598 + var curPath = tools.getURLParameter('file');
  599 + curPath = !curPath ? '首页' : decodeURI(curPath);
  600 + curPath = curPath.replace(/%26/g, '&');
  601 +
  602 + //加载导航
  603 + loadNav(function (list) {
  604 + //核对本地存储
  605 + storage.checkLibChange(list);
  606 + //读取页面挂载数据文档部分
  607 + loadPageMounts();
  608 + //首次打开改变导航
  609 + changeNav(curPath);
  610 + //首次打开改变页面
  611 + changePage(curPath, true, changeScrollByHash);
  612 + });
  613 +
  614 + //history api 浏览器前进后退操作响应
  615 + if (HISTORY_STATE) {
  616 + $win.on('popstate', function (e) {
  617 + var path;
  618 + //当有状态记录时,直接跳转
  619 + if (e.originalEvent.state) {
  620 + path = e.originalEvent.state.path;
  621 + path = path.replace(/%26/g, '&');
  622 + //改变导航
  623 + changeNav(path);
  624 + //改变页面
  625 + changePage(path, true, changeScrollByHash);
  626 + }
  627 + //当没有状态记录时
  628 + else {
  629 + path = tools.getURLParameter('file');
  630 + path = !path ? '首页' : decodeURI(path);
  631 + path = path.replace(/%26/g, '&');
  632 + //判断 url 路径是否和当前一样,不一样才跳转
  633 + if (path != curPath) {
  634 + //改变导航
  635 + changeNav(path);
  636 + //改变页面
  637 + changePage(path, true, changeScrollByHash);
  638 + }
  639 + //相同时不跳转,根据 hash 变化改变位置
  640 + else {
  641 + changeScrollByHash();
  642 + }
  643 + }
  644 + });
  645 + }
  646 +
  647 + /*
  648 + 回调中转
  649 + */
  650 +
  651 + //重建缓存
  652 + search.onNeedRebuildStorage = function (callback) {
  653 + storage.clearLibraries();
  654 + var list = storage.getIndexList();
  655 + var count = 0;
  656 + var load = function (path, i) {
  657 + //为避免重建缓存频率过高,人为增设每个请求时间间隔
  658 + setTimeout(function () {
  659 + docs.loadPage(path, function (state, content) {
  660 + //文档读取成功时保存到内存
  661 + if (state == 'success') {
  662 + storage.saveDocToDB(path, content);
  663 + }
  664 + //循环结束后完成重建
  665 + if (++count >= list.length) {
  666 + storage.saveRebuild();
  667 + callback && callback();
  668 + }
  669 + });
  670 + }, i * 100);
  671 + };
  672 + for (var i = 0, item; item = list[i]; i++) {
  673 + load(item, i);
  674 + }
  675 + };
  676 +
  677 +});
  678 +
  679 +
amWiki/js/amWiki.scrollbar.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 滚动条模块
  3 + * @author Tevin
  4 + */
  5 +
  6 +;
  7 +(function (win, $) {
  8 +
  9 + 'use strict';
  10 +
  11 + //定时检测内容高度作为补充
  12 + var list = [];
  13 + setInterval(function () {
  14 + for (var i = 0, item; item = list[i]; i++) {
  15 + item.checkHeightWidth();
  16 + }
  17 + }, 500);
  18 +
  19 + /**
  20 + * 页面滚动
  21 + * @param {Element} _this
  22 + * @constructor
  23 + */
  24 + var Scroller = function (_this) {
  25 + this.$e = {
  26 + container: $(_this), //主容器
  27 + inner: null, //正文内容
  28 + barY: null, //垂直滚动条外层
  29 + boxY: null, //垂直滚动条
  30 + sliderY: null, //垂直滑块
  31 + barX: null, //水平滚动条外层
  32 + boxX: null, //水平滚动条
  33 + sliderX: null //水平滑块
  34 + };
  35 + this._data = {
  36 + xRolling: this.$e.container.attr('data-x-rolling') == 'true',
  37 + maxTop: 0, //最大top值
  38 + barH: 0, //滚动条高度
  39 + sliderH: 0, //滑块高度
  40 + contentH: 0, //内容高度
  41 + containerH: 0, //容器高度
  42 + contentHLast: 0, //上次内容高度
  43 + barW: 0, //滚动条宽度
  44 + sliderW: 0, //滑块宽度
  45 + contentW: 0, //内容宽度
  46 + containerW: 0, //容器宽度
  47 + contentWLast: 0 //上次内容宽度
  48 + };
  49 + this._init();
  50 + };
  51 +
  52 + /**
  53 + * 初始化
  54 + * @private
  55 + */
  56 + Scroller.prototype._init = function () {
  57 + var that = this;
  58 + var barHtml = '<div class="scrollbar scrollbar-y" onselectstart="return false"><div><i></i></div></div>';
  59 + barHtml += this._data.xRolling ?
  60 + '<div class="scrollbar scrollbar-x" onselectstart="return false"><div><i></i></div></div>' : '';
  61 + this.$e.container.append(barHtml);
  62 + //获取元素
  63 + this.$e.barY = this.$e.container.find('.scrollbar-y');
  64 + this.$e.boxY = this.$e.barY.children('div');
  65 + this.$e.sliderY = this.$e.barY.find('i');
  66 + if (this._data.xRolling) {
  67 + this.$e.barX = this.$e.container.find('.scrollbar-x');
  68 + this.$e.boxX = this.$e.barX.children('div');
  69 + this.$e.sliderX = this.$e.barX.find('i');
  70 + }
  71 + this.$e.inner = this.$e.container.children('.scroller-inner');
  72 + //绑定事件
  73 + this._onWinResize();
  74 + $(win).on('resize', function () {
  75 + that._onWinResize();
  76 + that.checkHeightWidth();
  77 + });
  78 + this.$e.container.on('scrollbar', function () {
  79 + that.checkHeightWidth();
  80 + });
  81 + this.$e.inner.on({
  82 + 'click': function () {
  83 + that.checkHeightWidth();
  84 + },
  85 + 'scroll': function () {
  86 + that._reScroll();
  87 + }
  88 + });
  89 + this.checkHeightWidth();
  90 + this._bindAction();
  91 + };
  92 +
  93 + /**
  94 + * 滑块操作
  95 + * @private
  96 + */
  97 + Scroller.prototype._bindAction = function () {
  98 + var that = this;
  99 + var onDrag = false;
  100 + var _y = 0,
  101 + top = 0,
  102 + _x = 0,
  103 + left = 0;
  104 + this.$e.body = $('body');
  105 + this.$e.boxY.on({
  106 + 'mousedown': function (e) {
  107 + onDrag = 'y';
  108 + that.$e.body.attr('onselectstart', 'return false');
  109 + that.$e.barY.addClass('active');
  110 + _y = e.pageY;
  111 + top = parseFloat(that.$e.sliderY.css('top'));
  112 + if (that.$e.barY.parents('#main').length > 0) {
  113 + that.$e.body.children('aside').hide();
  114 + }
  115 + }
  116 + });
  117 + if (this._data.xRolling) {
  118 + this.$e.boxX.on({
  119 + 'mousedown': function (e) {
  120 + onDrag = 'x';
  121 + that.$e.body.attr('onselectstart', 'return false');
  122 + that.$e.barX.addClass('active');
  123 + _x = e.pageX;
  124 + left = parseFloat(that.$e.sliderX.css('left'));
  125 + }
  126 + });
  127 + }
  128 + $(win.document).on({
  129 + 'mousemove': function (e) {
  130 + if (onDrag == 'y') {
  131 + that.scrollYTo(top + e.pageY - _y);
  132 + } else if (onDrag == 'x') {
  133 + that.scrollXTo(left + e.pageX - _x);
  134 + }
  135 + },
  136 + 'mouseup': function () {
  137 + that.$e.body.removeAttr('onselectstart', 'return false')
  138 + .children('aside').show();
  139 + if (onDrag == 'y') {
  140 + that.$e.barY.removeClass('active');
  141 + } else if (onDrag == 'x') {
  142 + that.$e.barX.removeClass('active');
  143 + }
  144 + onDrag = false;
  145 + }
  146 + });
  147 + };
  148 +
  149 + /**
  150 + * 尺寸缩放
  151 + * @private
  152 + */
  153 + Scroller.prototype._onWinResize = function () {
  154 + if (isMobi()) {
  155 + this.$e.inner.removeAttr('style').removeClass('on');
  156 + } else {
  157 + this.$e.inner.css({
  158 + width: this.$e.container.width() + 30,
  159 + paddingRight: 13,
  160 + paddingBottom: 16
  161 + }).addClass('on');
  162 + }
  163 + };
  164 +
  165 + /**
  166 + * 重设滑块大小
  167 + * @private
  168 + */
  169 + Scroller.prototype._resize = function () {
  170 + var that = this;
  171 + this._data.containerH = this.$e.inner.height();
  172 + //当内容高度小于等于容器时,不显示滚动条
  173 + if (this._data.contentH <= this._data.containerH) {
  174 + this._data.contentH = this._data.containerH;
  175 + this.$e.barY.addClass('off');
  176 + } else {
  177 + this.$e.barY.removeClass('off');
  178 + }
  179 + //设置滑块大小
  180 + this._data.barH = this.$e.boxY.height();
  181 + this._data.sliderH = this._data.containerH / that._data.contentH * this._data.barH;
  182 + this.$e.sliderY.height(this._data.sliderH);
  183 + //计算最大高度
  184 + this._data.maxTop = (this._data.barH - this._data.sliderH) / this._data.barH * this._data.contentH + 1;
  185 + //水平方向
  186 + if (this._data.xRolling) {
  187 + this._data.containerW = this.$e.inner.width();
  188 + //当内容宽度不超过容器时,不显示滚动条
  189 + if (this._data.contentW <= this._data.containerW) {
  190 + this._data.contentW = this._data.containerW;
  191 + this.$e.barX.addClass('off');
  192 + } else {
  193 + this.$e.barX.removeClass('off');
  194 + }
  195 + //设置滑块大小
  196 + this._data.barW = this.$e.boxX.width();
  197 + this._data.sliderW = this._data.containerW / that._data.contentW * this._data.barW;
  198 + this.$e.sliderX.width(this._data.sliderW);
  199 + }
  200 + };
  201 +
  202 + /**
  203 + * 重设滑块顶部距离
  204 + * @private
  205 + */
  206 + Scroller.prototype._reScroll = function () {
  207 + var that = this;
  208 + var top1 = this.$e.inner.scrollTop();
  209 + var barTop = top1 / this._data.contentH * this._data.barH;
  210 + //限制滑动边界 (由事件触发的滚动不会向上过界)
  211 + if (barTop + this._data.sliderH >= this._data.barH) {
  212 + barTop = this._data.barH - this._data.sliderH;
  213 + this.$e.sliderY.css('top', barTop);
  214 + this.$e.inner.scrollTop(this._data.maxTop);
  215 + } else {
  216 + this.$e.sliderY.css('top', barTop);
  217 + }
  218 + //水平方向
  219 + if (this._data.xRolling) {
  220 + var barLeft = this.$e.inner.scrollLeft() / this._data.contentW * this._data.barW;
  221 + //水平方向没有鼠标滚动事件
  222 + this.$e.sliderX.css('left', barLeft);
  223 + }
  224 + };
  225 +
  226 + /**
  227 + * 垂直滚动到某位置
  228 + * @param {Number} num
  229 + * @public
  230 + */
  231 + Scroller.prototype.scrollYTo = function (num) {
  232 + var barTop = num;
  233 + barTop = barTop < 0 ? 0 : barTop;
  234 + barTop = barTop + this._data.sliderH > this._data.barH ? this._data.barH - this._data.sliderH : barTop;
  235 + this.$e.sliderY.css('top', barTop);
  236 + this.$e.inner.scrollTop(barTop / this._data.barH * this._data.contentH);
  237 + };
  238 +
  239 + /**
  240 + * 水平滚动到某位置
  241 + * @param {Number} num
  242 + * @public
  243 + */
  244 + Scroller.prototype.scrollXTo = function (num) {
  245 + var barLeft = num;
  246 + barLeft = barLeft < 0 ? 0 : barLeft;
  247 + barLeft = barLeft + this._data.sliderW > this._data.barW ? this._data.barW - this._data.sliderW : barLeft;
  248 + this.$e.sliderX.css('left', barLeft);
  249 + this.$e.inner.scrollLeft(barLeft / this._data.barW * this._data.contentW);
  250 + };
  251 +
  252 + /**
  253 + * 检查高度宽度
  254 + * @public
  255 + */
  256 + Scroller.prototype.checkHeightWidth = function () {
  257 + var that = this;
  258 + this._data.contentH = 0;
  259 + this._data.contentW = 0;
  260 + this.$e.inner.children('.scroller-content').each(function () {
  261 + that._data.contentH += $(this).outerHeight();
  262 + that._data.contentW += $(this).outerWidth();
  263 + });
  264 + //修正 webkit 中滚动条本身占位
  265 + if (/webkit/.test(navigator.userAgent.toLowerCase())) {
  266 + that._data.contentH += 15;
  267 + }
  268 + //如果高度未改变不进行操作
  269 + if (this._data.contentH == this._data.contentHLast && this._data.contentW == this._data.contentWLast) {
  270 + return;
  271 + } else {
  272 + this._data.contentHLast = this._data.contentH;
  273 + this._data.contentWLast = this._data.contentW;
  274 + }
  275 + this._resize();
  276 + this._reScroll();
  277 + };
  278 +
  279 + //注册到 jQuery
  280 + $.extend($.fn, {
  281 + scrollbar: function () {
  282 + return this.each(function () {
  283 + list.push(new Scroller(this));
  284 + });
  285 + }
  286 + });
  287 +
  288 +})(window, jQuery);
0 \ No newline at end of file 289 \ No newline at end of file
amWiki/js/amWiki.search.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 全库搜索模块
  3 + * @author Tevin
  4 + */
  5 +
  6 +;
  7 +(function (win) {
  8 +
  9 + 'use strict';
  10 +
  11 + /**
  12 + * 全局搜索
  13 + * @param {Storage} _storage
  14 + * @constructor
  15 + */
  16 + var Search = function (_storage) {
  17 + this._storage = _storage;
  18 + this.$e = {
  19 + //显示搜索面板按钮
  20 + searchShow: $('#searchShow'),
  21 + //更新全部缓存按钮
  22 + searchUpdate: this._storage.$e.searchUpdate,
  23 + //搜索面板
  24 + searchBox: $('#searchBox'),
  25 + //搜索结果列表
  26 + results: $('#results'),
  27 + //搜索结果信息提示
  28 + resultMsg: $('#resultMsg'),
  29 + //搜素结果显示更多
  30 + resultMore: $('#resultMore'),
  31 + //搜索按钮
  32 + search: $('#search'),
  33 + //搜索文本
  34 + searchText: $('#searchText')
  35 + };
  36 + this._data = {
  37 + //搜素结果
  38 + result: [],
  39 + //单条结果的模板
  40 + template: $('#template\\:searchResult').text(),
  41 + //每页结果数
  42 + pageSize: 15,
  43 + //当前页码
  44 + pagination: 0
  45 + };
  46 + this._bindCtrl();
  47 + //用户执行重建缓存的回调
  48 + this.onNeedRebuildStorage = null;
  49 + };
  50 +
  51 + /**
  52 + * 绑定用户操作
  53 + * @private
  54 + */
  55 + Search.prototype._bindCtrl = function () {
  56 + var that = this;
  57 + //展开折叠搜索面板
  58 + this.$e.searchShow.on('click', function () {
  59 + if (that.$e.searchBox.hasClass('on')) {
  60 + that.displayBox('off');
  61 + that.$e.searchShow.trigger('searchoff');
  62 + } else {
  63 + that.displayBox('on', function () {
  64 + resetResHeight();
  65 + });
  66 + that.$e.searchShow.trigger('searchon');
  67 + }
  68 + });
  69 + //设置结果区域高度
  70 + var resetResHeight = function () {
  71 + var hOut = that.$e.searchBox.height();
  72 + var dt = that.$e.results.offset().top - that.$e.searchUpdate.offset().top;
  73 + that.$e.results.height(hOut - dt);
  74 + };
  75 + $(win).on('resize', function () {
  76 + if (that.$e.searchBox.hasClass('on')) {
  77 + resetResHeight();
  78 + }
  79 + });
  80 + //当本地浏览且存在页面挂载数据时,隐藏重建缓存按钮
  81 + if (location.protocol == 'file:' && typeof AWPageMounts != 'undefined') {
  82 + this.$e.searchUpdate.parent().addClass('off');
  83 + }
  84 + //重建缓存
  85 + this.$e.searchUpdate.on('click', function () {
  86 + //开启重建缓存时,如果存在搜索子进程,则干掉子进程
  87 + if (that._worker) {
  88 + that._worker.terminate();
  89 + that._worker = null;
  90 + that.$e.resultMsg.hide();
  91 + }
  92 + that.$e.search.prop('disabled', true);
  93 + that.$e.searchUpdate.prop('disabled', true);
  94 + that.onNeedRebuildStorage(function () {
  95 + that.$e.search.prop('disabled', false);
  96 + that.$e.searchUpdate.val('请勿频繁使用');
  97 + });
  98 + });
  99 + //更新全部缓存按钮使用的时间限制:一小时内不允许重复使用
  100 + var lastBuild = this._storage.getLastBuildTs();
  101 + if (lastBuild) {
  102 + var lave = Date.now() - lastBuild;
  103 + if (lave < 60 * 60 * 1000) {
  104 + this.$e.searchUpdate.prop('disabled', true).val('请勿频繁使用');
  105 + }
  106 + }
  107 + //点击搜索
  108 + this.$e.search.on('click', function () {
  109 + that._search();
  110 + });
  111 + this.$e.searchText.on('keyup', function (e) {
  112 + if (e.keyCode == 13) {
  113 + that._search();
  114 + }
  115 + });
  116 + //结果翻页
  117 + this.$e.resultMore.on('click', function () {
  118 + that._nextResultPage();
  119 + });
  120 + };
  121 +
  122 + /**
  123 + * 显示隐藏搜索面板
  124 + * @param {String} type - on 显示 / off 隐藏
  125 + * @param {Function} callback
  126 + * @public
  127 + */
  128 + Search.prototype.displayBox = function (type, callback) {
  129 + var that = this;
  130 + var $box = this.$e.searchBox;
  131 + if (type == 'on' && !$box.hasClass('on')) {
  132 + $box
  133 + .addClass('on')
  134 + .css({
  135 + 'display': 'block',
  136 + 'width': '0',
  137 + 'opacity': 0
  138 + })
  139 + .animate({
  140 + 'width': '100%',
  141 + 'opacity': 1
  142 + }, 300, 'swing', function () {
  143 + callback && callback();
  144 + });
  145 + } else if (type == 'off' && $box.hasClass('on')) {
  146 + $box
  147 + .removeClass('on')
  148 + .animate({
  149 + 'width': '30%',
  150 + 'opacity': 0
  151 + }, 200, 'swing', function () {
  152 + $box.removeAttr('style');
  153 + callback && callback();
  154 + });
  155 + }
  156 + };
  157 +
  158 + /**
  159 + * 启动搜素
  160 + * @private
  161 + */
  162 + Search.prototype._search = function () {
  163 + var that = this;
  164 + if (this.$e.searchText.val() == '') {
  165 + this.$e.searchText.focus();
  166 + return;
  167 + }
  168 + var words = this.$e.searchText.val();
  169 + this.$e.resultMsg.show().text('创建搜索中...');
  170 + if (typeof win.Worker !== "undefined") {
  171 + //开启一次新搜索时,如果存在搜索子进程,则干掉子进程
  172 + if (this._worker) {
  173 + this._worker.terminate();
  174 + this._worker = null;
  175 + this.$e.resultMsg.hide();
  176 + }
  177 + try {
  178 + //创建搜素子进程搜素
  179 + this._worker = new win.Worker('amWiki/js/amWiki.search.worker.js');
  180 + this._searchByWorker(words);
  181 + } catch (e) {
  182 + //在当前环境搜索
  183 + this._searchByPresent(words);
  184 + }
  185 + } else {
  186 + //在当前环境搜索
  187 + this._searchByPresent(words);
  188 + }
  189 + };
  190 +
  191 + /**
  192 + * 搜索子进程通讯
  193 + * @param {String} words
  194 + * @private
  195 + */
  196 + Search.prototype._searchByWorker = function (words) {
  197 + var that = this;
  198 + //收到子进程搜素消息
  199 + this._worker.onmessage = function (event) {
  200 + var data = event.data;
  201 + //加载成功后发送文档数据
  202 + if (data.type == 'searcher:loaded') {
  203 + that._worker.postMessage({type: 'searcher:docs', docs: that._storage.getAllDocs()});
  204 + }
  205 + //文档预处理完成后开始搜索
  206 + else if (data.type == 'searcher:ready') {
  207 + that.$e.resultMsg.show().html('正在搜索,请稍后...');
  208 + that._worker.postMessage({type: 'searcher:search', words: words});
  209 + }
  210 + //搜索结果排行
  211 + else if (data.type == 'searcher:result') {
  212 + that._data.result = data.result;
  213 + that._showResultList();
  214 + that._worker.terminate();
  215 + that._worker = null;
  216 + }
  217 + };
  218 + //子进程出错
  219 + this._worker.onerror = function (e) {
  220 + console.error(e);
  221 + this.$e.resultMsg.show().text('Sorry,出错了!<br/>' + e.msg);
  222 + that._worker.terminate();
  223 + that._worker = null;
  224 + };
  225 + };
  226 +
  227 + /**
  228 + * 在当前环境搜索
  229 + * @param {String} words
  230 + * @private
  231 + */
  232 + Search.prototype._searchByPresent = function (words) {
  233 + var searcher = new AWSearcher();
  234 + searcher.initDocs(this._storage.getAllDocs());
  235 + this.$e.resultMsg.show().html('正在搜索,请稍后...');
  236 + searcher.matchWords(words);
  237 + this._data.result = searcher.getResult();
  238 + this._showResultList();
  239 + };
  240 +
  241 + /**
  242 + * 显示结果列表
  243 + * @private
  244 + */
  245 + Search.prototype._showResultList = function () {
  246 + this.$e.results.children('ul').children().remove();
  247 + this.$e.resultMsg.hide();
  248 + this._data.pagination = 0;
  249 + this._nextResultPage();
  250 + };
  251 +
  252 + /**
  253 + * 显示结果列表下一页
  254 + * @private
  255 + */
  256 + Search.prototype._nextResultPage = function () {
  257 + var html = '';
  258 + var count = 0;
  259 + for (var i = this._data.pagination * this._data.pageSize, item; item = this._data.result[i]; i++) {
  260 + html += this._renderRankItem(this._data.template, item);
  261 + //超过页码跳出
  262 + if (++count >= this._data.pageSize) {
  263 + break;
  264 + }
  265 + }
  266 + this.$e.results.children('ul').append(html);
  267 + this._data.pagination++;
  268 + //如果还有结果没显示完,显示显示更多按钮
  269 + if (this._data.pagination * this._data.pageSize >= this._data.result.length) {
  270 + this.$e.resultMore.hide();
  271 + } else {
  272 + this.$e.resultMore.show();
  273 + }
  274 + };
  275 +
  276 + /**
  277 + * 渲染单条模板
  278 + * @param {String} template
  279 + * @param {Object} data
  280 + * @returns {String}
  281 + * @private
  282 + */
  283 + Search.prototype._renderRankItem = function (template, data) {
  284 + var tmpl = template;
  285 + data.time = win.tools.formatTime(data.timestamp);
  286 + delete data.timestamp;
  287 + for (var p in data) {
  288 + if (data.hasOwnProperty(p)) {
  289 + tmpl = tmpl.replace(new RegExp('{{' + p + '}}', 'g'), data[p]);
  290 + }
  291 + }
  292 + return tmpl;
  293 + };
  294 +
  295 + return win.AWSearch = Search;
  296 +
  297 +})(window);
0 \ No newline at end of file 298 \ No newline at end of file
amWiki/js/amWiki.search.worker.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 搜索计算子进程模块
  3 + * @author Tevin
  4 + */
  5 +
  6 +
  7 +(function (self) {
  8 +
  9 + 'use strict';
  10 +
  11 + //通过 jQuery 检查判断是否处于子进程工作
  12 + var atWorker = typeof self.jQuery == 'undefined';
  13 +
  14 + (function () {
  15 +
  16 + /**
  17 + * 搜索计算器
  18 + * @constructor
  19 + */
  20 + var Searcher = function () {
  21 + //文档存储
  22 + this._documents = null;
  23 + //搜索处理结果
  24 + this._processing = {};
  25 + //设置
  26 + this._data = {
  27 + //标题命中得分
  28 + titleScore: 100,
  29 + //接口地址命中得分
  30 + apiScore: 50,
  31 + //单次内容命中得分
  32 + textScore: 5
  33 + }
  34 + };
  35 +
  36 + //初始文档
  37 + Searcher.prototype.initDocs = function (docs) {
  38 + this._documents = atWorker ? docs : JSON.parse(JSON.stringify(docs));
  39 + for (var id in this._documents) {
  40 + if (this._documents.hasOwnProperty(id)) {
  41 + this._preDoc(this._documents[id]);
  42 + }
  43 + }
  44 + };
  45 +
  46 + //文档预处理
  47 + Searcher.prototype._preDoc = function (doc) {
  48 + doc.content = doc.content
  49 + .replace(/^\s+|\s+$/g, '')
  50 + //分离h1标题
  51 + .replace(/^#\s?(.*?)[\r|\n]/, function (match, s1) {
  52 + doc.title = s1;
  53 + return '';
  54 + })
  55 + //分离测试文档请求地址
  56 + .replace(/([^#]#{3} *请求地址[\n\r]{1,4})([-\w:\/\.]+?)[\n\r]{1,}(#{3} *请求类型[\s\S]+?#{3} *请求参数)/,
  57 + function (match, s1, s2, s3) {
  58 + doc.api = s2;
  59 + return s1 + s3;
  60 + })
  61 + //清除 Markdown 标题标记
  62 + .replace(/#{1,6}(.*?)#{0,6}\s*[\r\n]/g, '$1')
  63 + //清除 Markdown 强调斜体删除线标记
  64 + .replace(/[_\*~]{1,2}(.*?)[_\*~]{1,2}/g, '$1')
  65 + //直接删除 Markdown 图片
  66 + .replace(/!\[.*?]\(.*?\)/g, '')
  67 + //清除 Markdown 链接标记,还原为显示文本
  68 + .replace(/\[(.*?)]\(.*?\)/g, '$1')
  69 + //清除 Markdown 代码段标记
  70 + .replace(/`{3}.*?[\n\r]([\s\S]*?)`{3}/g, '$1')
  71 + //清除 Markdown 代码标记
  72 + .replace(/`(.*?)`/g, '$1')
  73 + //直接删除所有 html 标签
  74 + .replace(/<.+?>/g, '')
  75 + //清除 Markdown 引用标记
  76 + .replace(/> *(.+?)[n\r]/g, '$1')
  77 + //清除 Markdown 分割线标记
  78 + .replace(/-{3,} *[\n\r]/g, '')
  79 + //清除 Markdown 表格标记
  80 + .replace(/(\|.*?[\n\r]{1,2}){3,}/g, function (match) {
  81 + return match.replace(/\|.*?[\n\r]{1,2}/g, function (match) {
  82 + if (match.indexOf('---') >= 0) {
  83 + return '';
  84 + } else {
  85 + return match.replace(/\|/g, '');
  86 + }
  87 + });
  88 + })
  89 + //转换一个空白符为一空格
  90 + .replace(/[\n\r\t]/g, ' ')
  91 + //合并多个空白符为一个空格
  92 + .replace(/\s{2,}/g, ' ');
  93 + };
  94 +
  95 + //给中转处理添加属性
  96 + Searcher.prototype._addPorcessing = function (id, key, value) {
  97 + //如果不存在此id则创建
  98 + if (typeof this._processing[id] == 'undefined') {
  99 + this._processing[id] = {};
  100 + this._processing[id][key] = value;
  101 + }
  102 + //如果存在此id
  103 + else {
  104 + //如果不存在此属性,直接赋值
  105 + if (typeof this._processing[id][key] == 'undefined') {
  106 + this._processing[id][key] = value;
  107 + }
  108 + //如果存在此属性,则相加(仅得分一项)
  109 + else {
  110 + this._processing[id][key] += value;
  111 + }
  112 + }
  113 + };
  114 +
  115 + //匹配搜索词与得分计算
  116 + Searcher.prototype.matchWords = function (words) {
  117 + var wordsReg = new RegExp(words, 'gi');
  118 + for (var id in this._documents) {
  119 + if (this._documents.hasOwnProperty(id)) {
  120 + //标题命中
  121 + if (this._documents[id].title) {
  122 + var titleMatch = this._documents[id].title.match(wordsReg);
  123 + if (titleMatch && titleMatch.length > 0) {
  124 + var title = this._documents[id].title.replace(wordsReg, function (match) {
  125 + return '<mark>' + match + '</mark>';
  126 + });
  127 + this._addPorcessing(id, 'title', title);
  128 + this._addPorcessing(id, 'score', this._data.titleScore);
  129 + }
  130 + }
  131 + //接口地址命中
  132 + if (this._documents[id].api) {
  133 + var apiMatch = this._documents[id].api.match(wordsReg);
  134 + if (apiMatch && apiMatch.length > 0) {
  135 + var api = '<p class="p1"><em>接口</em>' +
  136 + this._documents[id].api.replace(wordsReg, function (match) {
  137 + return '<mark>' + match + '</mark>';
  138 + }) + '</p>';
  139 + this._addPorcessing(id, 'api', api);
  140 + this._addPorcessing(id, 'score', this._data.apiScore);
  141 + }
  142 + }
  143 + //内容命中
  144 + var contentMatch = this._documents[id].content.match(new RegExp('.{0,15}' + words + '.{0,30}', 'gi'));
  145 + if (contentMatch) {
  146 + var content = '<p>';
  147 + for (var i = 0, item; item = contentMatch[i]; i++) {
  148 + if (i < 2) {
  149 + content += item.replace(wordsReg, function (match) {
  150 + return '<mark>' + match + '</mark>';
  151 + }) + '... ';
  152 + }
  153 + }
  154 + content += '</p>';
  155 + this._addPorcessing(id, 'content', content);
  156 + this._addPorcessing(id, 'score', contentMatch.length * this._data.textScore);
  157 + }
  158 + }
  159 + }
  160 + this._auxiliary();
  161 + };
  162 +
  163 + //辅助得分
  164 + Searcher.prototype._auxiliary = function () {
  165 + };
  166 +
  167 + //排序与属性补齐
  168 + Searcher.prototype._sortByScore = function () {
  169 + var list = [];
  170 + for (var id in this._processing) {
  171 + if (this._processing.hasOwnProperty(id)) {
  172 + if (typeof this._processing[id].title == 'undefined') {
  173 + this._processing[id].title = this._documents[id].title ? this._documents[id].title : '';
  174 + }
  175 + if (typeof this._processing[id].api == 'undefined') {
  176 + this._processing[id].api = '';
  177 + }
  178 + if (typeof this._processing[id].content == 'undefined') {
  179 + this._processing[id].content = '<p>' + this._documents[id].content.substr(0, 45) + '...</p>';
  180 + }
  181 + this._processing[id].path = this._documents[id].uri;
  182 + this._processing[id].timestamp = this._documents[id].timestamp;
  183 + list.push(this._processing[id]);
  184 + }
  185 + }
  186 + list.sort(function (a, b) {
  187 + return a.score > b.score ? -1 : 1;
  188 + });
  189 + return list;
  190 + };
  191 +
  192 + //获取结果
  193 + Searcher.prototype.getResult = function () {
  194 + return this._sortByScore();
  195 + };
  196 +
  197 + //作为子进程加载时,仅子进程内有效
  198 + //作为全局加载时,全局有效
  199 + return this.AWSearcher = Searcher;
  200 +
  201 + }).call(self);
  202 +
  203 + //作为子进程工作时,通过 message 通讯工作
  204 + if (atWorker) {
  205 + //计算器
  206 + var searcher = new self.AWSearcher();
  207 + self.onmessage = function (event) {
  208 + var data = event.data;
  209 + if (data.type == 'searcher:docs') {
  210 + searcher.initDocs(data.docs);
  211 + self.postMessage({type: 'searcher:ready'});
  212 + } else if (data.type == 'searcher:search') {
  213 + searcher.matchWords(data.words);
  214 + self.postMessage({type: 'searcher:result', result: searcher.getResult()});
  215 + }
  216 + };
  217 + self.postMessage({type: 'searcher:loaded'});
  218 + }
  219 +
  220 +})(self);
0 \ No newline at end of file 221 \ No newline at end of file
amWiki/js/amWiki.storage.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 浏览器数据缓存模块
  3 + * @author Tevin
  4 + */
  5 +
  6 +;
  7 +(function (win) {
  8 +
  9 + 'use strict';
  10 +
  11 + var tools = win.tools;
  12 + var wikiPath = tools.simString(win.location.pathname.replace('/', '').replace(/\//g, '_')).toUpperCase();
  13 + var LOCAL_STORAGE_NAME = 'AMWikiDataBase@' + wikiPath; //本地数据localStorage键名
  14 + var LOCAL_STATES = 'AMWikiStates@' + wikiPath; //本地状态集键名
  15 +
  16 + /**
  17 + * 本地存储管理
  18 + * @constructor
  19 + */
  20 + var Storage = function () {
  21 + this._db = null; //内存中的文库缓存
  22 + this._states = null; //内存中的状态集
  23 + this.$e = {
  24 + win: $(win),
  25 + //更新全部缓存按钮
  26 + searchUpdate: $('#searchUpdate'),
  27 + //缓存状态
  28 + cacheState: $('#cacheState'),
  29 + //文档总数
  30 + cacheDocTotal: $('#cacheDocTotal'),
  31 + //上次全部缓存更新时间
  32 + cacheLasttime: $('#cacheLasttime')
  33 + };
  34 + this._bridgeLocalStorage('read');
  35 + this._bindCtrl();
  36 + };
  37 +
  38 + /**
  39 + * 存取本地存储
  40 + * @param {String} type - read / save
  41 + * @private
  42 + */
  43 + Storage.prototype._bridgeLocalStorage = function (type) {
  44 + if (type == 'read') {
  45 + var defaultStr = '{"documents":{},"lastBuild":0}';
  46 + this._db = JSON.parse(win.localStorage[LOCAL_STORAGE_NAME] || defaultStr);
  47 + //转换旧名称
  48 + if (typeof this._db.libraries != 'undefined') {
  49 + this._db.documents = this._db.libraries;
  50 + delete this._db.libraries;
  51 + }
  52 + } else if (type == 'save') {
  53 + win.localStorage[LOCAL_STORAGE_NAME] = JSON.stringify(this._db);
  54 + }
  55 + };
  56 +
  57 + /**
  58 + * 绑定操作
  59 + * @private
  60 + */
  61 + Storage.prototype._bindCtrl = function () {
  62 + var that = this;
  63 + this.$e.win.on('beforeunload', function () {
  64 + that._bridgeLocalStorage('save');
  65 + });
  66 + };
  67 +
  68 + /**
  69 + * 更新一篇文档,如果相同则不操作(对应内容不用重新渲染)
  70 + * @param {String} uri
  71 + * @param {String} content
  72 + * @returns {Boolean}
  73 + * @public
  74 + */
  75 + Storage.prototype.update = function (uri, content) {
  76 + var id = tools.simString(uri, 'short');
  77 + if (this._db.documents[id]) {
  78 + if (this._db.documents[id].content == content) {
  79 + return false;
  80 + } else {
  81 + this.saveDoc(uri, content, id);
  82 + return true;
  83 + }
  84 + } else {
  85 + this.saveDoc(uri, content, id);
  86 + return true;
  87 + }
  88 + };
  89 +
  90 + /**
  91 + * 保存一篇文档
  92 + * @param {String} uri - 文档资源地址
  93 + * @param {String} content - 文档内容
  94 + * @param {String} [id] - 已经编码的文档地址,可选
  95 + * @public
  96 + */
  97 + Storage.prototype.saveDoc = function (uri, content, id) {
  98 + this.saveDocToDB(uri, content, id);
  99 + this._bridgeLocalStorage('save');
  100 + this._changeSummary('sateOnly');
  101 + };
  102 +
  103 + /**
  104 + * 将文档存储到内存
  105 + * @param {String} uri
  106 + * @param {String} content
  107 + * @param {String} id
  108 + * @public
  109 + */
  110 + Storage.prototype.saveDocToDB = function (uri, content, id) {
  111 + if (typeof uri != 'string' && uri == '') {
  112 + throw new Error('Error, uri must be a string!');
  113 + }
  114 + if (typeof id == 'undefined') {
  115 + id = tools.simString(uri, 'short');
  116 + }
  117 + this._db.documents[id] = {
  118 + id: id,
  119 + uri: uri,
  120 + content: content || '',
  121 + timestamp: Date.now()
  122 + };
  123 + this._changeSummary('sateOnly', 'prepare');
  124 + };
  125 +
  126 + /**
  127 + * 读取一篇文档
  128 + * @param {String} uri - 文档资源地址
  129 + * @returns {String} 文档内容
  130 + * @public
  131 + */
  132 + Storage.prototype.read = function (uri) {
  133 + var id = tools.simString(uri, 'short');
  134 + var article = '';
  135 + if (this._db.documents[id]) {
  136 + article = this._db.documents[id].content;
  137 + }
  138 + return article;
  139 + };
  140 +
  141 + /**
  142 + * 读取一篇文档的时间
  143 + * @param {String} uri - 文档资源地址
  144 + * @returns {String} 文档内容
  145 + * @public
  146 + */
  147 + Storage.prototype.readTime = function (uri) {
  148 + var id = tools.simString(uri, 'short');
  149 + if (this._db.documents[id]) {
  150 + return this._db.documents[id].timestamp;
  151 + } else {
  152 + return 0;
  153 + }
  154 + };
  155 +
  156 + /**
  157 + * 删除一篇文档
  158 + * @param {String} uri - 文档资源地址
  159 + * @public
  160 + */
  161 + Storage.prototype.remove = function (uri) {
  162 + var id = tools.simString(uri, 'short');
  163 + delete this._db.documents[id];
  164 + this._bridgeLocalStorage('save');
  165 + this._changeSummary('sateOnly');
  166 + };
  167 +
  168 + /**
  169 + * 增涨文档打开数记录
  170 + * @param {String} uri
  171 + * @public
  172 + */
  173 + Storage.prototype.increaseOpenedCount = function (uri) {
  174 + var id = tools.simString(uri, 'short');
  175 + //TODO: 待续...打开次数将一定程度影响排行
  176 + };
  177 +
  178 + /**
  179 + * 校对列表,清除失效文档
  180 + * @param {Array} list - 由导航树偏平化生成的文档列表
  181 + * @public
  182 + */
  183 + Storage.prototype.checkLibChange = function (list) {
  184 + this._indexing = list;
  185 + var documents = {};
  186 + var id = '';
  187 + for (var i = 0; i < list.length; i++) {
  188 + id = tools.simString(list[i], 'short');
  189 + if (typeof this._db.documents[id] != 'undefined') {
  190 + documents[id] = this._db.documents[id];
  191 + }
  192 + }
  193 + this._db.documents = documents;
  194 + this._bridgeLocalStorage('save');
  195 + this._changeSummary();
  196 + };
  197 +
  198 + /**
  199 + * 更新缓存摘要(位于搜素面板)
  200 + * @param {String} stateOnly - 是否为只读 stateOnly / ...
  201 + * @param {String} prepare - 是否为预先 prepare / ...
  202 + * @private
  203 + */
  204 + Storage.prototype._changeSummary = function (stateOnly, prepare) {
  205 + var libraryiesLong = 0;
  206 + for (var p in this._db.documents) {
  207 + if (this._db.documents.hasOwnProperty(p)) {
  208 + libraryiesLong++;
  209 + }
  210 + }
  211 + //如果是预先,百分数减1
  212 + if (prepare == 'prepare') {
  213 + this.$e.cacheState.text(parseInt(libraryiesLong / this._indexing.length * 100 - 1) + '%');
  214 + }
  215 + //非预先则正常
  216 + else {
  217 + this.$e.cacheState.text(parseInt(libraryiesLong / this._indexing.length * 100) + '%');
  218 + }
  219 + //如果不只是状态
  220 + if (stateOnly != 'stateOnly') {
  221 + this.$e.cacheDocTotal.text(this._indexing.length);
  222 + if (this._db.lastBuild) {
  223 + this.$e.cacheLasttime.text(win.tools.formatTime(this._db.lastBuild));
  224 + } else {
  225 + this.$e.cacheLasttime.text('0000-00-00 00:00:00');
  226 + }
  227 + }
  228 + };
  229 +
  230 + /**
  231 + * 清除内存中的库列表
  232 + * @public
  233 + */
  234 + Storage.prototype.clearLibraries = function () {
  235 + this._db.documents = {};
  236 + this._changeSummary('sateOnly');
  237 + };
  238 +
  239 + /**
  240 + * 完成本次缓存重建
  241 + * @public
  242 + */
  243 + Storage.prototype.saveRebuild = function () {
  244 + this._db.lastBuild = Date.now();
  245 + this._bridgeLocalStorage('save');
  246 + this._changeSummary();
  247 + };
  248 +
  249 + /**
  250 + * 返回导航列表
  251 + * @returns {Array}
  252 + * @public
  253 + */
  254 + Storage.prototype.getIndexList = function () {
  255 + return this._indexing;
  256 + };
  257 +
  258 + /**
  259 + * 获取当前缓存的所有文档
  260 + * @returns {{Object}}
  261 + * @public
  262 + */
  263 + Storage.prototype.getAllDocs = function () {
  264 + return this._db.documents;
  265 + };
  266 +
  267 + /**
  268 + * 获取缓存最后重建时间
  269 + * @returns {Number}
  270 + * @public
  271 + */
  272 + Storage.prototype.getLastBuildTs = function () {
  273 + return this._db.lastBuild;
  274 + };
  275 +
  276 + /**
  277 + * 获取本地存储中指定名称的值
  278 + * @param {String} name
  279 + * @returns {*}
  280 + * @public
  281 + */
  282 + Storage.prototype.getStates = function (name) {
  283 + if (!this._states) {
  284 + this._states = JSON.parse(win.localStorage[LOCAL_STATES] || '{}');
  285 + }
  286 + return this._states[name];
  287 + };
  288 +
  289 + /**
  290 + * 保持键值对到本地存储
  291 + * @param {String} name
  292 + * @param {*} value
  293 + * @public
  294 + */
  295 + Storage.prototype.setStates = function (name, value) {
  296 + if (!this._states) {
  297 + this._states = JSON.parse(win.localStorage[LOCAL_STATES] || '{}');
  298 + }
  299 + if (typeof value == 'undefined') {
  300 + delete this._states[name];
  301 + } else {
  302 + this._states[name] = value;
  303 + }
  304 + win.localStorage[LOCAL_STATES] = JSON.stringify(this._states);
  305 + };
  306 +
  307 + return win.AWStorage = Storage;
  308 +
  309 +})(window);
0 \ No newline at end of file 310 \ No newline at end of file
amWiki/js/amWiki.testing.js 0 → 100644
  1 +/**
  2 + * amWiki Web端 - 简单 ajax 测试模块
  3 + * @author Tevin
  4 + *
  5 + * @notice 仅当页面存在“请求地址”、“请求类型”、“请求参数”三个h3标题时触发,且参数列表表格顺序不能打乱
  6 + */
  7 +
  8 +(function (win, $) {
  9 +
  10 + 'use strict';
  11 +
  12 + /**
  13 + * 建接口测试
  14 + * @constructor
  15 + */
  16 + var Testing = function () {
  17 + //缓存元素
  18 + this.$e = {
  19 + win: $(win),
  20 + //测试面板
  21 + testingBox: $('#testingBox'),
  22 + //md文档渲染处
  23 + view: $('#view'),
  24 + //上一篇下一篇切换
  25 + sibling: $('#mainSibling'),
  26 + //面板显示隐藏按钮
  27 + testingShow: null,
  28 + //参数列表的容器
  29 + testingParam: $('#testingParam')
  30 + };
  31 + //缓存数据
  32 + this._data = {
  33 + //全局参数列队
  34 + globalParams: [],
  35 + //全局参数是否生效
  36 + globalParamWorking: true,
  37 + //单条参数模板
  38 + paramTemplate: $('#template\\:formList').text()
  39 + };
  40 + //请求数据
  41 + this._request = {
  42 + //请求地址
  43 + url: '',
  44 + //请求类型
  45 + method: '',
  46 + //请求参数
  47 + params: [],
  48 + //全局参数
  49 + paramGlobal: []
  50 + };
  51 + this._useGlobalParam();
  52 + this._bindPanelCtrl();
  53 + this._bindAjaxSend();
  54 + };
  55 +
  56 + /**
  57 + * 抓取请求内容,抓取成功才显示按钮
  58 + * @public
  59 + */
  60 + Testing.prototype.crawlContent = function () {
  61 + var that = this;
  62 + var testingReqState = [false, false, false];
  63 + this.$e.testingShow.removeClass('show');
  64 + this.$e.view.find('h3').each(function () {
  65 + var $this = $(this);
  66 + var name = $.trim($this.text());
  67 + //抓取请求地址
  68 + if (name == '请求地址' && !testingReqState[0]) {
  69 + that._request.url = $.trim($this.next().text());
  70 + if (that._request.url.indexOf('http') < 0) {
  71 + if (that._request.url.indexOf('/') == 0) {
  72 + that._request.url = 'http://' + location.host + that._request.url;
  73 + } else {
  74 + that._request.url = 'http://' + location.host + '/' + that._request.url;
  75 + }
  76 + }
  77 + testingReqState[0] = true;
  78 + }
  79 + //抓取请求类型
  80 + else if (name == '请求类型' && !testingReqState[1]) {
  81 + that._request.method = $.trim($this.next().text()).toUpperCase();
  82 + var methodState = false;
  83 + ['GET', 'POST', 'PUT', 'DELETE'].forEach(function (value, index) {
  84 + if (that._request.method == value) {
  85 + methodState = true;
  86 + }
  87 + });
  88 + if (!methodState) {
  89 + that._request.method = 'POST';
  90 + }
  91 + testingReqState[1] = true;
  92 + }
  93 + //抓取请求参数
  94 + else if (name == '请求参数' && !testingReqState[2]) {
  95 + //清空参数列表
  96 + that._request.params.length = 0;
  97 + //不存在table直接无参数,存在table时开始解析
  98 + if ($this.next('table').length > 0) {
  99 + $this.next('table').find('tbody').find('tr').each(function () {
  100 + var $tds = $(this).find('td');
  101 + //抓取内容
  102 + var param = {
  103 + keyName: $tds.eq(0).text().replace(/^\s+|\s+$/g, ''),
  104 + valueType: $tds.eq(1).text().replace(/^\s+|\s+$/g, ''),
  105 + required: $tds.eq(2).text().replace(/^\s+|\s+$/g, ''),
  106 + describe: $tds.eq(3).text().replace(/^\s+|\s+$/g, ''),
  107 + default: $tds.eq(4).text().replace(/^\s+|\s+$/g, ''),
  108 + reference: $tds.eq(5).text().replace(/^\s+|\s+$/g, '')
  109 + };
  110 + //修正请求参数,正确键名才添加参数
  111 + if (param.keyName != '无' && param.keyName != '-' && param.keyName != '') {
  112 + //“必填”转换
  113 + if (param.required == '是' || param.required == '必填' || param.required == 'yes' || param.required == 'true') {
  114 + param.required = 'required';
  115 + } else {
  116 + param.required = '';
  117 + }
  118 + //“默认值”转换
  119 + if (param.default == '-' || param.default == '无' || param.default == 'Null' || param.default == 'null') {
  120 + if (param.reference && param.reference != '-' && param.reference != '无' && param.reference != 'Null' && param.reference != 'null') {
  121 + param.default = param.reference;
  122 + } else {
  123 + param.default = '';
  124 + }
  125 + }
  126 + that._request.params.push(param);
  127 + }
  128 + });
  129 + }
  130 + testingReqState[2] = true;
  131 + }
  132 + });
  133 + if (testingReqState[0] && testingReqState[1] && testingReqState[2]) {
  134 + this._initPanel();
  135 + } else {
  136 + this._offPanel();
  137 + }
  138 + testingReqState = [false, false, false];
  139 + };
  140 +
  141 + /**
  142 + * 关闭测试面板
  143 + * @private
  144 + */
  145 + Testing.prototype._offPanel = function () {
  146 + this.$e.testingShow.removeClass('show');
  147 + if (this.$e.testingShow.hasClass('on')) {
  148 + this.displayBox('off');
  149 + }
  150 + //清除抓取参数
  151 + this._request.url = '';
  152 + this._request.method = '';
  153 + this._request.params = [];
  154 + //清空请求地址
  155 + $('#testingSendUrl').val('');
  156 + //还原请求类型
  157 + $('#testingSendType').find('option[value="POST"]').prop('selected', true);
  158 + //清空参数列表
  159 + this.$e.testingParam.html('');
  160 + //重置iframe
  161 + $('#testingResponse')[0].contentWindow.location.reload();
  162 + };
  163 +
  164 + /**
  165 + * 测试面板填充数据
  166 + * @private
  167 + */
  168 + Testing.prototype._initPanel = function () {
  169 + this.$e.testingShow.addClass('show');
  170 + //填充请求地址
  171 + $('#testingSendUrl').val(this._request.url);
  172 + //填充请求类型
  173 + $('#testingSendType').find('option[value="' + this._request.method + '"]').prop('selected', true);
  174 + //清空现有参数列表
  175 + this.$e.testingParam.html('');
  176 + //填充参数列表
  177 + if (this._request.params.length > 0) {
  178 + var paramsHTML = '';
  179 + for (var i = 0; i < this._request.params.length; i++) {
  180 + paramsHTML += this._data.paramTemplate
  181 + .replace('{{describe}}', this._request.params[i].describe)
  182 + .replace('{{keyName}}', this._request.params[i].keyName)
  183 + .replace('{{default}}', this._request.params[i].default)
  184 + .replace('{{valueType}}', this._request.params[i].valueType)
  185 + .replace('{{required}}', this._request.params[i].required);
  186 + }
  187 + this.$e.testingParam.append(paramsHTML);
  188 + } else {
  189 + this.$e.testingParam.append('<li>无</li>');
  190 + }
  191 + };
  192 +
  193 + /**
  194 + * 切换测试面板显示隐藏状态
  195 + * @param {String} type - on / off
  196 + * @public
  197 + */
  198 + Testing.prototype.displayBox = function (type) {
  199 + var that = this;
  200 + if (type == 'off') {
  201 + this.$e.testingShow.removeClass('on').find('span').text('测试接口');
  202 + this.$e.testingBox.css({
  203 + 'position': 'absolute'
  204 + });
  205 + this.$e.view.show().addClass('scroller-content');
  206 + this.$e.sibling.addClass('scroller-content').addClass('on');
  207 + this.$e.testingBox.removeClass('scroller-content').stop().animate({
  208 + 'width': '30%',
  209 + 'opacity': 0
  210 + }, 200, 'swing', function () {
  211 + that.$e.testingBox.removeAttr('style');
  212 + });
  213 + } else if (type == 'on') {
  214 + this.$e.testingShow.addClass('on').find('span').text('关闭测试');
  215 + this.$e.testingBox
  216 + .css({
  217 + 'display': 'block',
  218 + 'width': '0',
  219 + 'opacity': 0
  220 + })
  221 + .stop()
  222 + .animate({
  223 + 'width': '100%',
  224 + 'opacity': 1
  225 + }, 300, 'swing', function () {
  226 + that.$e.view.hide().removeClass('scroller-content');
  227 + that.$e.sibling.removeClass('scroller-content').removeClass('on');
  228 + that.$e.testingBox.addClass('scroller-content').css({
  229 + 'position': 'relative'
  230 + });
  231 + });
  232 + }
  233 + };
  234 +
  235 + /**
  236 + * 测试面板普通操作
  237 + * @private
  238 + */
  239 + Testing.prototype._bindPanelCtrl = function () {
  240 + var that = this;
  241 + //显示隐藏控制按钮
  242 + this.$e.testingShow = $('<div class="testing-show">[<span>测试接口</span>]</div>');
  243 + if (location.protocol == 'file:') {
  244 + this.$e.testingShow
  245 + .attr('disabled', 'disabled')
  246 + .append('<i>您当前为本地模式打开,file:// 协议下不开放接口测试模块,请使用 http(s):// 网址打开</i>');
  247 + }
  248 + $('#main').append(this.$e.testingShow);
  249 + //显示隐藏测试面板
  250 + this.$e.testingShow.on('click', function () {
  251 + var $this = that.$e.testingShow;
  252 + if ($this.attr('disabled') == 'disabled') {
  253 + $this.toggleClass('on');
  254 + } else {
  255 + if (that.$e.testingShow.hasClass('on')) {
  256 + that.displayBox('off');
  257 + } else {
  258 + that.displayBox('on');
  259 + }
  260 + }
  261 + });
  262 + //填充请求地址
  263 + $('#testingSendUrl').on('change', function () {
  264 + that._request.url = $(this).val();
  265 + });
  266 + //填充请求类型
  267 + $('#testingSendType').on('change', function () {
  268 + that._request.method = $(this).find("option:selected").val();
  269 + });
  270 + //清空所有普通参数的值
  271 + $('#testingBtnReset').on('click', function () {
  272 + that.$e.testingParam.find('.testing-param-val').val('');
  273 + });
  274 + //新增一个参数
  275 + $('#testingBtnAdd').on('click', function () {
  276 + var pHTML = that._data.paramTemplate
  277 + .replace('{{describe}}', '新增参数')
  278 + .replace('{{keyName}}', '')
  279 + .replace('{{default}}', '')
  280 + .replace('({{valueType}})', '')
  281 + .replace('{{required}}', '');
  282 + that.$e.testingParam.append(pHTML);
  283 + });
  284 + };
  285 +
  286 + /**
  287 + * 全局参数模块
  288 + * @private
  289 + */
  290 + Testing.prototype._useGlobalParam = function () {
  291 + var that = this;
  292 + this._data.globalParams = JSON.parse(localStorage['amWikiGlobalParam'] || '[]'); //全局参数
  293 + var gParamTmpl = $('#template\\:globalParam').text(); //全局参数模板
  294 + var $testingGlobalParam = $('#testingGlobalParam'); //全局参数显示容器
  295 + var $testingGlobal = $('#testingGlobal'); //全局参数弹窗
  296 + this._data.globalParamWorking = (localStorage['amWikiGParamWorking'] || 'on') == 'on'; //全局参数是否工作
  297 + //显示弹窗
  298 + $('#testingBtnGParam').on('click', function () {
  299 + $testingGlobalParam.html('');
  300 + that._data.globalParams = JSON.parse(localStorage['amWikiGlobalParam'] || '[]');
  301 + if (that._data.globalParams.length == 0) {
  302 + $testingGlobalParam.append('<li data-type="empty">无</li>');
  303 + } else {
  304 + for (var p = 0; p < that._data.globalParams.length; p++) {
  305 + $testingGlobalParam.append(gParamTmpl.replace('{{describe}}', that._data.globalParams[p].describe)
  306 + .replace('{{keyName}}', that._data.globalParams[p].keyName)
  307 + .replace('{{value}}', that._data.globalParams[p].value));
  308 + }
  309 + }
  310 + $testingGlobal.show();
  311 + });
  312 + //基本操作
  313 + $testingGlobal.on('click', function (e) {
  314 + var $elm = $(e.target);
  315 + //关闭
  316 + if ($elm.hasClass('close') || $elm.hasClass('testing-global')) {
  317 + $testingGlobal.hide();
  318 + }
  319 + //新增
  320 + else if ($elm.hasClass('add')) {
  321 + $testingGlobalParam.find('[data-type="empty"]').remove();
  322 + $testingGlobalParam.append(gParamTmpl.replace('{{describe}}', '')
  323 + .replace('{{keyName}}', '')
  324 + .replace('{{value}}', ''));
  325 + }
  326 + //保存
  327 + else if ($elm.hasClass('save')) {
  328 + that._data.globalParams.length = 0;
  329 + $testingGlobalParam.find('li').each(function (i, elment) {
  330 + var $inputs = $(this).find('input');
  331 + if ($inputs.eq(1).val()) {
  332 + that._data.globalParams.push({
  333 + describe: $inputs.eq(0).val(),
  334 + keyName: $inputs.eq(1).val(),
  335 + value: $inputs.eq(2).val()
  336 + });
  337 + }
  338 + });
  339 + localStorage['amWikiGlobalParam'] = JSON.stringify(that._data.globalParams);
  340 + $testingGlobal.hide();
  341 + }
  342 + });
  343 + //删除参数
  344 + $testingGlobalParam.on('click', 'i', function () {
  345 + $(this).parent().remove();
  346 + if ($testingGlobalParam.find('li').length == 0) {
  347 + $testingGlobalParam.append('<li data-type="empty">无</li>');
  348 + }
  349 + });
  350 + $('#testingGlobalWorking').on('click', function () {
  351 + if (that._data.globalParamWorking) {
  352 + that._data.globalParamWorking = false;
  353 + localStorage['amWikiGParamWorking'] = 'off';
  354 + $(this).addClass('off');
  355 + } else {
  356 + that._data.globalParamWorking = true;
  357 + localStorage['amWikiGParamWorking'] = 'on';
  358 + $(this).removeClass('off');
  359 + }
  360 + }).addClass(this._data.globalParamWorking ? '' : 'off');
  361 + };
  362 +
  363 + /**
  364 + * 发送请求操作
  365 + * @private
  366 + */
  367 + Testing.prototype._bindAjaxSend = function () {
  368 + var that = this;
  369 + var frame = $('#testingResponse')[0];
  370 + var $duration = $('#testingDuration'); //耗时输出
  371 + var $loading = $('#testingLoading');
  372 + var $testingParam = $('#testingParam'); //参数列表
  373 + $('#testingBtnSend').on('click', function () {
  374 + $duration.text('');
  375 + var realParam = {}; //合并参数列表
  376 + //从面板获取最新(可能已修改)接口参数
  377 + if ($testingParam.find('input').length > 0) {
  378 + $testingParam.find('li').each(function () {
  379 + var $this = $(this);
  380 + realParam[$this.find('.testing-param-key').val()] = $this.find('.testing-param-val').val();
  381 + });
  382 + }
  383 + //全局参数
  384 + if (that._data.globalParams.length > 0 && that._data.globalParamWorking) {
  385 + for (var i = 0; i < that._data.globalParams.length; i++) {
  386 + realParam[that._data.globalParams[i].keyName] = that._data.globalParams[i].value;
  387 + }
  388 + }
  389 + frame.contentWindow.location.reload(); //刷新iframe以便重新输出内容
  390 + $loading.show();
  391 + var startTime = Date.now();
  392 + $.ajax({
  393 + type: that._request.method,
  394 + url: that._request.url,
  395 + data: realParam,
  396 + dataType: 'text',
  397 + success: function (data) {
  398 + $loading.hide();
  399 + $duration.text('耗时:' + parseFloat(Date.now() - startTime).toLocaleString() + ' ms');
  400 + var $frameBody = $(frame.contentWindow.document).find('body');
  401 + $frameBody.css('wordBreak', 'break-all');
  402 + if (/^\s*\{[\s\S]*\}\s*$/.test(data)) {
  403 + $frameBody[0].innerHTML = '<pre style="white-space:pre-wrap;word-break:break-all;"><pre>';
  404 + //json格式化输出
  405 + $frameBody.find('pre').text(win.tools.formatJson(data));
  406 + } else {
  407 + $frameBody[0].innerHTML = data.replace(/<!(doctype|DOCTYPE)\s+(html|HTML)>/, '');
  408 + }
  409 + setTimeout(function () {
  410 + $(frame).height($frameBody.height());
  411 + }, 100);
  412 + },
  413 + error: function (xhr, textStatus) {
  414 + $loading.hide();
  415 + $duration.text('耗时:' + parseFloat(Date.now() - startTime).toLocaleString() + ' ms');
  416 + var $frameBody = $(frame.contentWindow.document).find('body');
  417 + $frameBody.css('wordBreak', 'break-all');
  418 + var html = '<div style="margin-bottom:20px;padding:10px;background:#ffebe5;">HTTP Status: <b>' +
  419 + xhr.status + '</b> ' + xhr.statusText + '</div>';
  420 + //根据readyState简单判断跨域
  421 + if (xhr.readyState == 0) {
  422 + html += '<div style="font-size:14px;">请求未发送!可能是因为:' +
  423 + '<ul style="line-height:22px;">' +
  424 + '<li>请求了<b style="color:#FF201E;margin-right:1px;">跨域</b>地址</li>' +
  425 + '<li>接口被302重定向到跨域地址</li>' +
  426 + '<li>其他原因</li>' +
  427 + '</ul></div>';
  428 + $frameBody[0].innerHTML = html;
  429 + }
  430 + //不跨域且为json
  431 + else if (/^\s*\{[\s\S]*\}\s*$/.test(xhr.responseText)) {
  432 + html += '<pre style="white-space:pre-wrap;word-break:break-all;"><pre>';
  433 + $frameBody[0].innerHTML = html;
  434 + //json格式化输出
  435 + $frameBody.find('pre').text(win.tools.formatJson(xhr.responseText));
  436 + }
  437 + //其他不跨域
  438 + else {
  439 + html += xhr.responseText.replace(/<!(doctype|DOCTYPE)\s+(html|HTML)>/, '');
  440 + $frameBody[0].innerHTML = html;
  441 + }
  442 + setTimeout(function () {
  443 + $(frame).height($frameBody.height());
  444 + }, 100);
  445 + }
  446 + });
  447 + });
  448 + };
  449 +
  450 + /**
  451 + * 判断测试面板是否处于打开状态
  452 + * @returns {Boolean}
  453 + * @public
  454 + */
  455 + Testing.prototype.isOpen = function () {
  456 + return this.$e.testingShow.hasClass('on');
  457 + };
  458 +
  459 + return win.AWTesting = Testing;
  460 +
  461 +})(window, jQuery);
0 \ No newline at end of file 462 \ No newline at end of file
amWiki/js/amWiki.tools.js 0 → 100644
  1 +/**
  2 + * amWiki Web端·工具集
  3 + * @author Tevin
  4 + */
  5 +
  6 +;
  7 +(function (win) {
  8 +
  9 + 'use strict';
  10 +
  11 + return win.tools = {
  12 +
  13 + /**
  14 + * 获取url参数
  15 + * @param {String} name
  16 + * @returns {String|Null} - 获取的参数
  17 + */
  18 + getURLParameter: function (name) {
  19 + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  20 + var r = window.location.search.substr(1).match(reg);
  21 + if (r != null) {
  22 + return r[2];
  23 + } else {
  24 + return null;
  25 + }
  26 + },
  27 +
  28 + /**
  29 + * 转换字符中每个汉字为两个字符
  30 + * @param {String} str - 要编码的字符串
  31 + * @param {String} [mod] - 编码模式选择,可选,normal(默认)一个汉字对应两位字符,short一个汉字对应一位字符
  32 + * @returns {String} 编码后的字符串
  33 + */
  34 + simString: function (str, mod) {
  35 + mod = mod == 'short'; //短字符串
  36 + var str2 = '';
  37 + var s = '';
  38 + var encodeURI = win.encodeURI;
  39 + for (var i = 0; i < str.length; i++) {
  40 + s = str.substr(i, 1);
  41 + if (/[\u4e00-\u9fa5]/.test(s)) {
  42 + encodeURI(s).split('%').forEach(function (item) {
  43 + if (item == '') {
  44 + s = [];
  45 + } else {
  46 + s.push(parseInt('0x' + item));
  47 + }
  48 + });
  49 + if (mod) {
  50 + str2 += (s[0] + s[1] + s[2]).toString(16).substr(-1, 1);
  51 + } else {
  52 + str2 += (s[0] + s[1] + s[2]).toString(16).substr(-2, 2);
  53 + }
  54 + } else {
  55 + str2 += s;
  56 + }
  57 + }
  58 + return str2;
  59 + },
  60 +
  61 + /**
  62 + * json格式化
  63 + * @param {String} str - 需要格式化的json字符串
  64 + * @returns {String} 格式化后的json字符串
  65 + */
  66 + formatJson: function (str) {
  67 + var json = decodeURI(str.replace(/%([^0-9A-Z]{0,2})/g, '%25$1'));
  68 + var reg = null,
  69 + formatted = '',
  70 + pad = 0,
  71 + PADDING = ' ';
  72 + var options = {};
  73 + // remove newline where '{' or '[' follows ':'
  74 + options.newlineAfterColonIfBeforeBraceOrBracket = options.newlineAfterColonIfBeforeBraceOrBracket === true;
  75 + // use a space after a colon
  76 + options.spaceAfterColon = options.spaceAfterColon !== false;
  77 + // begin formatting...
  78 + if (typeof json !== 'string') {
  79 + json = JSON.stringify(json);
  80 + } else {
  81 + json = JSON.parse(json);
  82 + json = JSON.stringify(json);
  83 + }
  84 + // add newline before and after curly braces
  85 + reg = /([\{\}])/g;
  86 + json = json.replace(reg, '\r\n$1\r\n');
  87 + // add newline before and after square brackets
  88 + reg = /([\[\]])/g;
  89 + json = json.replace(reg, '\r\n$1\r\n');
  90 + // add newline after comma
  91 + reg = /(\,)/g;
  92 + json = json.replace(reg, '$1\r\n');
  93 + // remove multiple newlines
  94 + reg = /(\r\n\r\n)/g;
  95 + json = json.replace(reg, '\r\n');
  96 + // remove newlines before commas
  97 + reg = /\r\n\,/g;
  98 + json = json.replace(reg, ',');
  99 + // optional formatting...
  100 + if (!options.newlineAfterColonIfBeforeBraceOrBracket) {
  101 + reg = /\:\r\n\{/g;
  102 + json = json.replace(reg, ':{');
  103 + reg = /\:\r\n\[/g;
  104 + json = json.replace(reg, ':[');
  105 + }
  106 + if (options.spaceAfterColon) {
  107 + reg = /"\s*\:/g;
  108 + json = json.replace(reg, '": ');
  109 + }
  110 + $.each(json.split('\r\n'), function (index, node) {
  111 + var i = 0,
  112 + indent = 0,
  113 + padding = '';
  114 + if (node.match(/\{$/) || node.match(/\[$/)) {
  115 + indent = 1;
  116 + } else if (node.match(/\}/) || node.match(/\]/)) {
  117 + if (pad !== 0) {
  118 + pad -= 1;
  119 + }
  120 + } else {
  121 + indent = 0;
  122 + }
  123 + for (i = 0; i < pad; i++) {
  124 + padding += PADDING;
  125 + }
  126 + formatted += padding + node + '\r\n';
  127 + pad += indent;
  128 + });
  129 + return formatted;
  130 + },
  131 +
  132 + /**
  133 + * 时间戳格式化为日期时间
  134 + * @param {Number} timestamp - 时间戳
  135 + * @returns {String} 日期时间
  136 + */
  137 + formatTime: function (timestamp) {
  138 + var time = new Date(timestamp);
  139 + var year = time.getFullYear() + '';
  140 + var month = time.getMonth() + 1;
  141 + month = month <= 9 ? '0' + month : month;
  142 + var date = time.getDate();
  143 + date = date <= 9 ? '0' + date : date;
  144 + var hour = time.getHours();
  145 + hour = hour <= 9 ? '0' + hour : hour;
  146 + var minute = time.getMinutes();
  147 + minute = minute <= 9 ? '0' + minute : minute;
  148 + var second = time.getSeconds();
  149 + second = second <= 9 ? '0' + second : second;
  150 + return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
  151 + }
  152 + }
  153 +
  154 +})(window);
0 \ No newline at end of file 155 \ No newline at end of file
amWiki/js/flowchart.min.js 0 → 100644
  1 +// flowchart.js, v1.6.2
  2 +// Copyright (c)yyyy Adriano Raiano (adrai).
  3 +// Distributed under MIT license
  4 +// http://adrai.github.io/flowchart.js
  5 +
  6 +!function(t,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i(require("Raphael"));else if("function"==typeof define&&define.amd)define(["Raphael"],i);else{var e=i("object"==typeof exports?require("Raphael"):t.Raphael);for(var r in e)("object"==typeof exports?exports:t)[r]=e[r]}}(this,function(t){return function(t){function i(r){if(e[r])return e[r].exports;var s=e[r]={exports:{},id:r,loaded:!1};return t[r].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}var e={};return i.m=t,i.c=e,i.p="",i(0)}([function(t,i,e){e(8);var r=e(4);e(14);var s={parse:r};"undefined"!=typeof window&&(window.flowchart=s),t.exports=s},function(t,i){function e(t,i){if(!t||"function"==typeof t)return i;var r={};for(var s in i)r[s]=i[s];for(s in t)t[s]&&("object"==typeof r[s]?r[s]=e(r[s],t[s]):r[s]=t[s]);return r}function r(t,i){if("function"==typeof Object.create)t.super_=i,t.prototype=Object.create(i.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}});else{t.super_=i;var e=function(){};e.prototype=i.prototype,t.prototype=new e,t.prototype.constructor=t}}t.exports={defaults:e,inherits:r}},function(t,i,e){function r(t,i,e){this.chart=t,this.group=this.chart.paper.set(),this.symbol=e,this.connectedTo=[],this.symbolType=i.symbolType,this.flowstate=i.flowstate||"future",this.next_direction=i.next&&i.direction_next?i.direction_next:void 0,this.text=this.chart.paper.text(0,0,i.text),i.key&&(this.text.node.id=i.key+"t"),this.text.node.setAttribute("class",this.getAttr("class")+"t"),this.text.attr({"text-anchor":"start",x:this.getAttr("text-margin"),fill:this.getAttr("font-color"),"font-size":this.getAttr("font-size")});var r=this.getAttr("font"),s=this.getAttr("font-family"),o=this.getAttr("font-weight");r&&this.text.attr({font:r}),s&&this.text.attr({"font-family":s}),o&&this.text.attr({"font-weight":o}),i.link&&this.text.attr("href",i.link),i.target&&this.text.attr("target",i.target);var n=this.getAttr("maxWidth");if(n){for(var h=i.text.split(" "),a="",x=0,y=h.length;y>x;x++){var l=h[x];this.text.attr("text",a+" "+l),a+=this.text.getBBox().width>n?"\n"+l:" "+l}this.text.attr("text",a.substring(1))}if(this.group.push(this.text),e){var g=this.getAttr("text-margin");e.attr({fill:this.getAttr("fill"),stroke:this.getAttr("element-color"),"stroke-width":this.getAttr("line-width"),width:this.text.getBBox().width+2*g,height:this.text.getBBox().height+2*g}),e.node.setAttribute("class",this.getAttr("class")),i.link&&e.attr("href",i.link),i.target&&e.attr("target",i.target),i.key&&(e.node.id=i.key),this.group.push(e),e.insertBefore(this.text),this.text.attr({y:e.getBBox().height/2}),this.initialize()}}var s=e(3),o=s.drawLine,n=s.checkLineIntersection;r.prototype.getAttr=function(t){if(this.chart){var i,e=this.chart.options?this.chart.options[t]:void 0,r=this.chart.options.symbols?this.chart.options.symbols[this.symbolType][t]:void 0;return this.chart.options.flowstate&&this.chart.options.flowstate[this.flowstate]&&(i=this.chart.options.flowstate[this.flowstate][t]),i||r||e}},r.prototype.initialize=function(){this.group.transform("t"+this.getAttr("line-width")+","+this.getAttr("line-width")),this.width=this.group.getBBox().width,this.height=this.group.getBBox().height},r.prototype.getCenter=function(){return{x:this.getX()+this.width/2,y:this.getY()+this.height/2}},r.prototype.getX=function(){return this.group.getBBox().x},r.prototype.getY=function(){return this.group.getBBox().y},r.prototype.shiftX=function(t){this.group.transform("t"+(this.getX()+t)+","+this.getY())},r.prototype.setX=function(t){this.group.transform("t"+t+","+this.getY())},r.prototype.shiftY=function(t){this.group.transform("t"+this.getX()+","+(this.getY()+t))},r.prototype.setY=function(t){this.group.transform("t"+this.getX()+","+t)},r.prototype.getTop=function(){var t=this.getY(),i=this.getX()+this.width/2;return{x:i,y:t}},r.prototype.getBottom=function(){var t=this.getY()+this.height,i=this.getX()+this.width/2;return{x:i,y:t}},r.prototype.getLeft=function(){var t=this.getY()+this.group.getBBox().height/2,i=this.getX();return{x:i,y:t}},r.prototype.getRight=function(){var t=this.getY()+this.group.getBBox().height/2,i=this.getX()+this.group.getBBox().width;return{x:i,y:t}},r.prototype.render=function(){if(this.next){var t=this.getAttr("line-length");if("right"===this.next_direction){var i=this.getRight();if(!this.next.isPositioned){this.next.setY(i.y-this.next.height/2),this.next.shiftX(this.group.getBBox().x+this.width+t);var e=this;!function s(){for(var i,r=!1,o=0,n=e.chart.symbols.length;n>o;o++){i=e.chart.symbols[o];var h=Math.abs(i.getCenter().x-e.next.getCenter().x);if(i.getCenter().y>e.next.getCenter().y&&h<=e.next.width/2){r=!0;break}}r&&(e.next.setX(i.getX()+i.width+t),s())}(),this.next.isPositioned=!0,this.next.render()}}else{var r=this.getBottom();this.next.isPositioned||(this.next.shiftY(this.getY()+this.height+t),this.next.setX(r.x-this.next.width/2),this.next.isPositioned=!0,this.next.render())}}},r.prototype.renderLines=function(){this.next&&(this.next_direction?this.drawLineTo(this.next,"",this.next_direction):this.drawLineTo(this.next))},r.prototype.drawLineTo=function(t,i,e){this.connectedTo.indexOf(t)<0&&this.connectedTo.push(t);var r,s=this.getCenter().x,h=this.getCenter().y,a=this.getRight(),x=this.getBottom(),y=this.getLeft(),l=t.getCenter().x,g=t.getCenter().y,f=t.getTop(),p=t.getRight(),c=t.getLeft(),u=s===l,d=h===g,m=g>h,b=h>g,v=s>l,w=l>s,k=0,_=this.getAttr("line-length"),B=this.getAttr("line-width");if(e&&"bottom"!==e||!u||!m)if(e&&"right"!==e||!d||!w)if(e&&"left"!==e||!d||!v)if(e&&"right"!==e||!u||!b)if(e&&"right"!==e||!u||!m)if(e&&"bottom"!==e||!v)if(e&&"bottom"!==e||!w)if(e&&"right"===e&&v)r=o(this.chart,a,[{x:a.x+_/2,y:a.y},{x:a.x+_/2,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.rightStart=!0,t.topEnd=!0,k=a.x+_/2;else if(e&&"right"===e&&w)r=o(this.chart,a,[{x:f.x,y:a.y},{x:f.x,y:f.y}],i),this.rightStart=!0,t.topEnd=!0,k=a.x+_/2;else if(e&&"bottom"===e&&u&&b)r=o(this.chart,x,[{x:x.x,y:x.y+_/2},{x:a.x+_/2,y:x.y+_/2},{x:a.x+_/2,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.bottomStart=!0,t.topEnd=!0,k=x.x+_/2;else if("left"===e&&u&&b){var A=y.x-_/2;c.x<y.x&&(A=c.x-_/2),r=o(this.chart,y,[{x:A,y:y.y},{x:A,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.leftStart=!0,t.topEnd=!0,k=y.x}else"left"===e&&(r=o(this.chart,y,[{x:f.x+(y.x-f.x)/2,y:y.y},{x:f.x+(y.x-f.x)/2,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.leftStart=!0,t.topEnd=!0,k=y.x);else r=o(this.chart,x,[{x:x.x,y:x.y+_/2},{x:x.x+(x.x-f.x)/2,y:x.y+_/2},{x:x.x+(x.x-f.x)/2,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.bottomStart=!0,t.topEnd=!0,k=x.x+(x.x-f.x)/2;else r=this.leftEnd&&b?o(this.chart,x,[{x:x.x,y:x.y+_/2},{x:x.x+(x.x-f.x)/2,y:x.y+_/2},{x:x.x+(x.x-f.x)/2,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i):o(this.chart,x,[{x:x.x,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.bottomStart=!0,t.topEnd=!0,k=x.x+(x.x-f.x)/2;else r=o(this.chart,a,[{x:a.x+_/2,y:a.y},{x:a.x+_/2,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.rightStart=!0,t.topEnd=!0,k=a.x+_/2;else r=o(this.chart,a,[{x:a.x+_/2,y:a.y},{x:a.x+_/2,y:f.y-_/2},{x:f.x,y:f.y-_/2},{x:f.x,y:f.y}],i),this.rightStart=!0,t.topEnd=!0,k=a.x+_/2;else r=o(this.chart,y,p,i),this.leftStart=!0,t.rightEnd=!0,k=p.x;else r=o(this.chart,a,c,i),this.rightStart=!0,t.leftEnd=!0,k=c.x;else r=o(this.chart,x,f,i),this.bottomStart=!0,t.topEnd=!0,k=x.x;if(r){for(var L=0,M=this.chart.lines.length;M>L;L++)for(var O,X=this.chart.lines[L],T=X.attr("path"),Y=r.attr("path"),C=0,S=T.length-1;S>C;C++){var j=[];j.push(["M",T[C][1],T[C][2]]),j.push(["L",T[C+1][1],T[C+1][2]]);for(var E=j[0][1],z=j[0][2],P=j[1][1],R=j[1][2],F=0,I=Y.length-1;I>F;F++){var W=[];W.push(["M",Y[F][1],Y[F][2]]),W.push(["L",Y[F+1][1],Y[F+1][2]]);var N=W[0][1],V=W[0][2],q=W[1][1],G=W[1][2],Q=n(E,z,P,R,N,V,q,G);if(Q.onLine1&&Q.onLine2){var $;V===G?N>q?($=["L",Q.x+2*B,V],Y.splice(F+1,0,$),$=["C",Q.x+2*B,V,Q.x,V-4*B,Q.x-2*B,V],Y.splice(F+2,0,$),r.attr("path",Y)):($=["L",Q.x-2*B,V],Y.splice(F+1,0,$),$=["C",Q.x-2*B,V,Q.x,V-4*B,Q.x+2*B,V],Y.splice(F+2,0,$),r.attr("path",Y)):V>G?($=["L",N,Q.y+2*B],Y.splice(F+1,0,$),$=["C",N,Q.y+2*B,N+4*B,Q.y,N,Q.y-2*B],Y.splice(F+2,0,$),r.attr("path",Y)):($=["L",N,Q.y-2*B],Y.splice(F+1,0,$),$=["C",N,Q.y-2*B,N+4*B,Q.y,N,Q.y+2*B],Y.splice(F+2,0,$),r.attr("path",Y)),F+=2,O+=2}}}this.chart.lines.push(r)}(!this.chart.maxXFromLine||this.chart.maxXFromLine&&k>this.chart.maxXFromLine)&&(this.chart.maxXFromLine=k)},t.exports=r},function(t,i){function e(t,i,e){var r,s,o="M{0},{1}";for(r=2,s=2*e.length+2;s>r;r+=2)o+=" L{"+r+"},{"+(r+1)+"}";var n=[i.x,i.y];for(r=0,s=e.length;s>r;r++)n.push(e[r].x),n.push(e[r].y);var h=t.paper.path(o,n);h.attr("stroke",t.options["element-color"]),h.attr("stroke-width",t.options["line-width"]);var a=t.options.font,x=t.options["font-family"],y=t.options["font-weight"];return a&&h.attr({font:a}),x&&h.attr({"font-family":x}),y&&h.attr({"font-weight":y}),h}function r(t,i,e,r){var s,o;"[object Array]"!==Object.prototype.toString.call(e)&&(e=[e]);var n="M{0},{1}";for(s=2,o=2*e.length+2;o>s;s+=2)n+=" L{"+s+"},{"+(s+1)+"}";var h=[i.x,i.y];for(s=0,o=e.length;o>s;s++)h.push(e[s].x),h.push(e[s].y);var a=t.paper.path(n,h);a.attr({stroke:t.options["line-color"],"stroke-width":t.options["line-width"],"arrow-end":t.options["arrow-end"]});var x=t.options.font,y=t.options["font-family"],l=t.options["font-weight"];if(x&&a.attr({font:x}),y&&a.attr({"font-family":y}),l&&a.attr({"font-weight":l}),r){var g=!1,f=t.paper.text(0,0,r),p=!1,c=e[0];i.y===c.y&&(p=!0);var u=0,d=0;g?(u=i.x>c.x?i.x-(i.x-c.x)/2:c.x-(c.x-i.x)/2,d=i.y>c.y?i.y-(i.y-c.y)/2:c.y-(c.y-i.y)/2,p?(u-=f.getBBox().width/2,d-=t.options["text-margin"]):(u+=t.options["text-margin"],d-=f.getBBox().height/2)):(u=i.x,d=i.y,p?(u+=t.options["text-margin"]/2,d-=t.options["text-margin"]):(u+=t.options["text-margin"]/2,d+=t.options["text-margin"])),f.attr({"text-anchor":"start","font-size":t.options["font-size"],fill:t.options["font-color"],x:u,y:d}),x&&f.attr({font:x}),y&&f.attr({"font-family":y}),l&&f.attr({"font-weight":l})}return a}function s(t,i,e,r,s,o,n,h){var a,x,y,l,g,f={x:null,y:null,onLine1:!1,onLine2:!1};return a=(h-o)*(e-t)-(n-s)*(r-i),0===a?f:(x=i-o,y=t-s,l=(n-s)*x-(h-o)*y,g=(e-t)*x-(r-i)*y,x=l/a,y=g/a,f.x=t+x*(e-t),f.y=i+x*(r-i),x>0&&1>x&&(f.onLine1=!0),y>0&&1>y&&(f.onLine2=!0),f)}t.exports={drawPath:e,drawLine:r,checkLineIntersection:s}},function(t,i,e){function r(t){function i(t){var i=t.indexOf("(")+1,e=t.indexOf(")");return i>=0&&e>=0?r.symbols[t.substring(0,i-1)]:r.symbols[t]}function e(t){var i="next",e=t.indexOf("(")+1,r=t.indexOf(")");return e>=0&&r>=0&&(i=X.substring(e,r),i.indexOf(",")<0&&"yes"!==i&&"no"!==i&&(i="next, "+i)),i}t=t||"",t=t.trim();for(var r={symbols:{},start:null,drawSVG:function(t,i){function e(t){if(g[t.key])return g[t.key];switch(t.symbolType){case"start":g[t.key]=new o(l,t);break;case"end":g[t.key]=new n(l,t);break;case"operation":g[t.key]=new h(l,t);break;case"inputoutput":g[t.key]=new a(l,t);break;case"subroutine":g[t.key]=new x(l,t);break;case"condition":g[t.key]=new y(l,t);break;default:return new Error("Wrong symbol type!")}return g[t.key]}var r=this;this.diagram&&this.diagram.clean();var l=new s(t,i);this.diagram=l;var g={};!function f(t,i,s){var o=e(t);return r.start===t?l.startWith(o):i&&s&&!i.pathOk&&(i instanceof y?(s.yes===t&&i.yes(o),s.no===t&&i.no(o)):i.then(o)),o.pathOk?o:(o instanceof y?(t.yes&&f(t.yes,o,t),t.no&&f(t.no,o,t)):t.next&&f(t.next,o,t),o)}(this.start),l.render()},clean:function(){this.diagram.clean()}},l=[],g=0,f=1,p=t.length;p>f;f++)if("\n"===t[f]&&"\\"!==t[f-1]){var c=t.substring(g,f);g=f+1,l.push(c.replace(/\\\n/g,"\n"))}g<t.length&&l.push(t.substr(g));for(var u=1,d=l.length;d>u;){var m=l[u];m.indexOf("->")<0&&m.indexOf("=>")<0?(l[u-1]+="\n"+m,l.splice(u,1),d--):u++}for(;l.length>0;){var b=l.splice(0,1)[0];if(b.indexOf("=>")>=0){var v,w=b.split("=>"),k={key:w[0],symbolType:w[1],text:null,link:null,target:null,flowstate:null};if(k.symbolType.indexOf(": ")>=0&&(v=k.symbolType.split(": "),k.symbolType=v.shift(),k.text=v.join(": ")),k.text&&k.text.indexOf(":>")>=0?(v=k.text.split(":>"),k.text=v.shift(),k.link=v.join(":>")):k.symbolType.indexOf(":>")>=0&&(v=k.symbolType.split(":>"),k.symbolType=v.shift(),k.link=v.join(":>")),k.symbolType.indexOf("\n")>=0&&(k.symbolType=k.symbolType.split("\n")[0]),k.link){var _=k.link.indexOf("[")+1,B=k.link.indexOf("]");_>=0&&B>=0&&(k.target=k.link.substring(_,B),k.link=k.link.substring(0,_-1))}if(k.text&&k.text.indexOf("|")>=0){var A=k.text.split("|");k.flowstate=A.pop().trim(),k.text=A.join("|")}r.symbols[k.key]=k}else if(b.indexOf("->")>=0)for(var L=b.split("->"),M=0,O=L.length;O>M;M++){var X=L[M],T=i(X),Y=e(X),C=null;if(Y.indexOf(",")>=0){var S=Y.split(",");Y=S[0],C=S[1].trim()}if(r.start||(r.start=T),O>M+1){var j=L[M+1];T[Y]=i(j),T["direction_"+Y]=C,C=null}}}return r}var s=e(6),o=e(12),n=e(9),h=e(11),a=e(10),x=e(13),y=e(5);t.exports=r},function(t,i,e){function r(t,i){i=i||{},s.call(this,t,i),this.textMargin=this.getAttr("text-margin"),this.yes_direction="bottom",this.no_direction="right",i.yes&&i.direction_yes&&i.no&&!i.direction_no?"right"===i.direction_yes?(this.no_direction="bottom",this.yes_direction="right"):(this.no_direction="right",this.yes_direction="bottom"):i.yes&&!i.direction_yes&&i.no&&i.direction_no?"right"===i.direction_no?(this.yes_direction="bottom",this.no_direction="right"):(this.yes_direction="right",this.no_direction="bottom"):(this.yes_direction="bottom",this.no_direction="right"),this.yes_direction=this.yes_direction||"bottom",this.no_direction=this.no_direction||"right",this.text.attr({x:2*this.textMargin});var e=this.text.getBBox().width+3*this.textMargin;e+=e/2;var r=this.text.getBBox().height+2*this.textMargin;r+=r/2,r=Math.max(.5*e,r);var o=e/4,n=r/4;this.text.attr({x:o+this.textMargin/2});var a={x:o,y:n},x=[{x:o-e/4,y:n+r/4},{x:o-e/4+e/2,y:n+r/4+r/2},{x:o-e/4+e,y:n+r/4},{x:o-e/4+e/2,y:n+r/4-r/2},{x:o-e/4,y:n+r/4}],y=h(t,a,x);y.attr({stroke:this.getAttr("element-color"),"stroke-width":this.getAttr("line-width"),fill:this.getAttr("fill")}),i.link&&y.attr("href",i.link),i.target&&y.attr("target",i.target),i.key&&(y.node.id=i.key),y.node.setAttribute("class",this.getAttr("class")),this.text.attr({y:y.getBBox().height/2}),this.group.push(y),y.insertBefore(this.text),this.initialize()}var s=e(2),o=e(1).inherits,n=e(3),h=n.drawPath;o(r,s),r.prototype.render=function(){this.yes_direction&&(this[this.yes_direction+"_symbol"]=this.yes_symbol),this.no_direction&&(this[this.no_direction+"_symbol"]=this.no_symbol);var t=this.getAttr("line-length");if(this.bottom_symbol){var i=this.getBottom();this.bottom_symbol.isPositioned||(this.bottom_symbol.shiftY(this.getY()+this.height+t),this.bottom_symbol.setX(i.x-this.bottom_symbol.width/2),this.bottom_symbol.isPositioned=!0,this.bottom_symbol.render())}if(this.right_symbol){var e=this.getRight();if(!this.right_symbol.isPositioned){this.right_symbol.setY(e.y-this.right_symbol.height/2),this.right_symbol.shiftX(this.group.getBBox().x+this.width+t);var r=this;!function s(){for(var i,e=!1,o=0,n=r.chart.symbols.length;n>o;o++){i=r.chart.symbols[o];var h=Math.abs(i.getCenter().x-r.right_symbol.getCenter().x);if(i.getCenter().y>r.right_symbol.getCenter().y&&h<=r.right_symbol.width/2){e=!0;break}}e&&(r.right_symbol.setX(i.getX()+i.width+t),s())}(),this.right_symbol.isPositioned=!0,this.right_symbol.render()}}},r.prototype.renderLines=function(){this.yes_symbol&&this.drawLineTo(this.yes_symbol,this.getAttr("yes-text"),this.yes_direction),this.no_symbol&&this.drawLineTo(this.no_symbol,this.getAttr("no-text"),this.no_direction)},t.exports=r},function(t,i,e){function r(t,i){i=i||{},this.paper=new s(t),this.options=o(i,n),this.symbols=[],this.lines=[],this.start=null}var s=e(15),o=e(1).defaults,n=e(7),h=e(5);r.prototype.handle=function(t){this.symbols.indexOf(t)<=-1&&this.symbols.push(t);var i=this;return t instanceof h?(t.yes=function(e){return t.yes_symbol=e,t.no_symbol&&(t.pathOk=!0),i.handle(e)},t.no=function(e){return t.no_symbol=e,t.yes_symbol&&(t.pathOk=!0),i.handle(e)}):t.then=function(e){return t.next=e,t.pathOk=!0,i.handle(e)},t},r.prototype.startWith=function(t){return this.start=t,this.handle(t)},r.prototype.render=function(){var t,i,e=0,r=0,s=0,o=0,n=0,h=0,a=0,x=0;for(s=0,o=this.symbols.length;o>s;s++)t=this.symbols[s],t.width>e&&(e=t.width),t.height>r&&(r=t.height);for(s=0,o=this.symbols.length;o>s;s++)t=this.symbols[s],t.shiftX(this.options.x+(e-t.width)/2+this.options["line-width"]),t.shiftY(this.options.y+(r-t.height)/2+this.options["line-width"]);for(this.start.render(),s=0,o=this.symbols.length;o>s;s++)t=this.symbols[s],t.renderLines();for(n=this.maxXFromLine,s=0,o=this.symbols.length;o>s;s++){t=this.symbols[s];var y=t.getX()+t.width,l=t.getY()+t.height;y>n&&(n=y),l>h&&(h=l)}for(s=0,o=this.lines.length;o>s;s++){i=this.lines[s].getBBox();var y=i.x,l=i.y,g=i.x2,f=i.y2;a>y&&(a=y),x>l&&(x=l),g>n&&(n=g),f>h&&(h=f)}var p=this.options.scale,c=this.options["line-width"];0>a&&(a-=c),0>x&&(x-=c);var u=n+c-a,d=h+c-x;this.paper.setSize(u*p,d*p),this.paper.setViewBox(a,x,u,d,false)},r.prototype.clean=function(){if(this.paper){var t=this.paper.canvas;t.parentNode.removeChild(t)}},t.exports=r},function(t,i){t.exports={x:0,y:0,"line-width":3,"line-length":50,"text-margin":10,"font-size":14,"font-color":"black","line-color":"black","element-color":"black",fill:"white","yes-text":"yes","no-text":"no","arrow-end":"block","class":"flowchart",scale:1,symbols:{start:{},end:{},condition:{},inputoutput:{},operation:{},subroutine:{}}}},function(t,i){Array.prototype.indexOf||(Array.prototype.indexOf=function(t){"use strict";if(null===this)throw new TypeError;var i=Object(this),e=i.length>>>0;if(0===e)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!=r?r=0:0!==r&&r!=1/0&&r!=-(1/0)&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=e)return-1;for(var s=r>=0?r:Math.max(e-Math.abs(r),0);e>s;s++)if(s in i&&i[s]===t)return s;return-1}),Array.prototype.lastIndexOf||(Array.prototype.lastIndexOf=function(t){"use strict";if(null===this)throw new TypeError;var i=Object(this),e=i.length>>>0;if(0===e)return-1;var r=e;arguments.length>1&&(r=Number(arguments[1]),r!=r?r=0:0!==r&&r!=1/0&&r!=-(1/0)&&(r=(r>0||-1)*Math.floor(Math.abs(r))));for(var s=r>=0?Math.min(r,e-1):e-Math.abs(r);s>=0;s--)if(s in i&&i[s]===t)return s;return-1}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")})},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0,20);i=i||{},i.text=i.text||"End",s.call(this,t,i,e)}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){function r(t,i){i=i||{},s.call(this,t,i),this.textMargin=this.getAttr("text-margin"),this.text.attr({x:3*this.textMargin});var e=this.text.getBBox().width+4*this.textMargin,r=this.text.getBBox().height+2*this.textMargin,o=this.textMargin,n=r/2,a={x:o,y:n},x=[{x:o-this.textMargin,y:r},{x:o-this.textMargin+e,y:r},{x:o-this.textMargin+e+2*this.textMargin,y:0},{x:o-this.textMargin+2*this.textMargin,y:0},{x:o,y:n}],y=h(t,a,x);y.attr({stroke:this.getAttr("element-color"),"stroke-width":this.getAttr("line-width"),fill:this.getAttr("fill")}),i.link&&y.attr("href",i.link),i.target&&y.attr("target",i.target),i.key&&(y.node.id=i.key),y.node.setAttribute("class",this.getAttr("class")),this.text.attr({y:y.getBBox().height/2}),this.group.push(y),y.insertBefore(this.text),this.initialize()}var s=e(2),o=e(1).inherits,n=e(3),h=n.drawPath;o(r,s),r.prototype.getLeft=function(){var t=this.getY()+this.group.getBBox().height/2,i=this.getX()+this.textMargin;return{x:i,y:t}},r.prototype.getRight=function(){var t=this.getY()+this.group.getBBox().height/2,i=this.getX()+this.group.getBBox().width-this.textMargin;return{x:i,y:t}},t.exports=r},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0);i=i||{},s.call(this,t,i,e)}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0,20);i=i||{},i.text=i.text||"Start",s.call(this,t,i,e)}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0);i=i||{},s.call(this,t,i,e),e.attr({width:this.text.getBBox().width+4*this.getAttr("text-margin")}),this.text.attr({x:2*this.getAttr("text-margin")});var r=t.paper.rect(0,0,0,0);r.attr({x:this.getAttr("text-margin"),stroke:this.getAttr("element-color"),"stroke-width":this.getAttr("line-width"),width:this.text.getBBox().width+2*this.getAttr("text-margin"),height:this.text.getBBox().height+2*this.getAttr("text-margin"),fill:this.getAttr("fill")}),i.key&&(r.node.id=i.key+"i");var o=this.getAttr("font"),n=this.getAttr("font-family"),h=this.getAttr("font-weight");o&&r.attr({font:o}),n&&r.attr({"font-family":n}),h&&r.attr({"font-weight":h}),i.link&&r.attr("href",i.link),i.target&&r.attr("target",i.target),this.group.push(r),r.insertBefore(this.text),this.initialize()}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){if("undefined"!=typeof jQuery){var r=e(4);!function(t){t.fn.flowChart=function(i){return this.each(function(){var e=t(this),s=r(e.text());e.html(""),s.drawSVG(this,i)})}}(jQuery)}},function(i,e){i.exports=t}])});
  7 +//## sourceMappingURL=flowchart.min.js.map
0 \ No newline at end of file 8 \ No newline at end of file
amWiki/js/gbk.js 0 → 100644
  1 +/**
  2 + ** ==================================================================================================
  3 + ** 类名:J.gbk
  4 + ** 版本:1.0
  5 + ** 功能:encode,decode
  6 + ** 示例:
  7 + ---------------------------------------------------------------------------------------------------
  8 +
  9 + 用法:参见组件地址
  10 +
  11 + ---------------------------------------------------------------------------------------------------
  12 + ** 作者:zjfeihu
  13 + ** 邮件:zjfeihu@126.com
  14 + ** 创建:2011/09/15
  15 + ** 更新:2011/09/16
  16 + ** 组件地址:http://www.1kjs.com/lib/widget/gbk/
  17 + ** ==================================================================================================
  18 + **/
  19 +GBK = function () {
  20 + var data = function (zipData) {
  21 + var re = zipData
  22 + .replace(/#(\d+)\$/g, function (a, b) {
  23 + return Array(+b + 3).join('#');
  24 + })
  25 + .replace(/#/g, '####')
  26 + .replace(/(\w\w):([\w#]+)(?:,|$)/g, function (a, hd, dt) {
  27 + return dt.replace(/../g, function (a) {
  28 + if (a != '##') {
  29 + return hd + a;
  30 + } else {
  31 + return a;
  32 + }
  33 + });
  34 + });
  35 + return re;
  36 + }('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364'),
  37 + U2Ghash = {},
  38 + G2Uhash = {};
  39 + !function (data) {
  40 + var k = 0;
  41 + data = data.match(/..../g);
  42 + for (var i = 0x81; i <= 0xfe; i++) {
  43 + for (var j = 0x40; j <= 0xFE; j++) {
  44 + U2Ghash[data[k++]] = ('%' + i.toString(16) + '%' + j.toString(16))
  45 + .toUpperCase();
  46 + }
  47 + }
  48 + for (var key in U2Ghash) {
  49 + G2Uhash[U2Ghash[key]] = key;
  50 + }
  51 + }(data);
  52 + function isAscii(unicode) {
  53 + return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000));
  54 + }
  55 +
  56 + return {
  57 + encode: function (str) {
  58 + return str.replace(/./g, function (a) {
  59 + var code = a.charCodeAt(0);
  60 + if (isAscii(code)) {
  61 + return encodeURIComponent(a);
  62 + } else {
  63 + var key = code.toString(16);
  64 + if (key.length != 4) key = ('000' + key).match(/....$/)[0];
  65 + return U2Ghash[key] || a;
  66 + }
  67 + });
  68 + },
  69 + decode: function (str) {
  70 + return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g, function (a) {
  71 + if (a in G2Uhash) {
  72 + return String.fromCharCode('0x' + G2Uhash[a]);
  73 + } else {
  74 + return a;
  75 + }
  76 + }).replace(/%[\w]{2}/g, function (a) {
  77 + return decodeURIComponent(a);
  78 +
  79 + });
  80 + }
  81 + };
  82 +}();
  83 +
  84 +if (typeof(exports) == 'object') {
  85 + exports.GBK = GBK;
  86 +}
0 \ No newline at end of file 87 \ No newline at end of file
amWiki/js/highlight.pack.js 0 → 100644
No preview for this file type
amWiki/js/jquery-compat-3.1.0.min.js 0 → 100644
  1 +/*! jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license */
  2 +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a<0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,
  3 +r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c||"false"!==c&&("null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var $=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,_=new RegExp("^(?:([+-])=|)("+$+")([a-z%]*)$","i"),aa=["Top","Right","Bottom","Left"],ba=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ca=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function da(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&_.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ea={};function fa(a){var b,c=a.ownerDocument,d=a.nodeName,e=ea[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ea[d]=e,e)}function ga(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|&#?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;c<h;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==va()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===va()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ta:ua,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:ua,isPropagationStopped:ua,isImmediatePropagationStopped:ua,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ta,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ta,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ta,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&qa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ra.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return wa(this,a,b,c,d)},one:function(a,b,c,d){return wa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ua),this.each(function(){r.event.remove(this,a,c,b)})}});var xa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/<script|<style|<link/i,za=/checked\s*(?:[^=]|=\s*.checked.)/i,Aa=/^true\/(.*)/,Ba=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ha.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,la(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;l<i;l++)j=h[l],ja.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ba,""),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&ma(la(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;d<e;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,"script"),g.length>0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(la(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp("^("+$+")(?!px)[a-z%]+$","i"),La=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",pa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ka.test(g)&&Ja.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:"absolute",visibility:"hidden",display:"block"},Qa={letterSpacing:"0",fontWeight:"400"},Ra=["Webkit","Moz","ms"],Sa=d.createElement("div").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Va(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+aa[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+aa[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+aa[f]+"Width",!0,e))):(g+=r.css(a,"padding"+aa[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+aa[f]+"Width",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Ma(a,b,f),(d<0||null==d)&&(d=a.style[b]),Ka.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=_.exec(c))&&e[1]&&(c=da(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Ma(a,b,d)),"normal"===e&&b in Qa&&(e=Qa[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Oa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)})},set:function(a,c,d){var e,f=d&&La(a),g=d&&Va(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=_.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Ma(a,"marginLeft"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ba(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,"display"),ga([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);f<g;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(gb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:e.duration="number"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&_a.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb("show"),slideUp:cb("hide"),slideToggle:cb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Ya=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){Za||(Za=a.requestAnimationFrame?a.requestAnimationFrame(ab):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame(Za):a.clearInterval(Za),Za=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var hb,ib=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);
  4 +if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=e<0?h:f?e:0;i<h;i++)if(c=d[i],(c.selected||i===e)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=oa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=r.trim(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||pa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Na(o.pixelPosition,function(a,c){if(c)return c=Ma(a,b),Ka.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
amWiki/js/marked.min.js 0 → 100644
  1 +/**
  2 + * marked - a markdown parser
  3 + * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
  4 + * https://github.com/chjj/marked
  5 + */
  6 +(function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",/<!--[\s\S]*?-->/)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]||""});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i<item.align.length;i++){if(/^ *-+: *$/.test(item.align[i])){item.align[i]="right"}else if(/^ *:-+: *$/.test(item.align[i])){item.align[i]="center"}else if(/^ *:-+ *$/.test(item.align[i])){item.align[i]="left"}else{item.align[i]=null}}for(i=0;i<item.cells.length;i++){item.cells[i]=item.cells[i].split(/ *\| */)}this.tokens.push(item);continue}if(cap=this.rules.lheading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[2]==="="?1:2,text:cap[1]});continue}if(cap=this.rules.hr.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"hr"});continue}if(cap=this.rules.blockquote.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"blockquote_start"});cap=cap[0].replace(/^ *> ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i<l;i++){item=cap[i];space=item.length;item=item.replace(/^ *([*+-]|\d+\.) +/,"");if(~item.indexOf("\n ")){space-=item.length;item=!this.options.pedantic?item.replace(new RegExp("^ {1,"+space+"}","gm"),""):item.replace(/^ {1,4}/gm,"")}if(this.options.smartLists&&i!==l-1){b=block.bullet.exec(cap[i+1])[0];if(bull!==b&&!(bull.length>1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose)loose=next}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq);this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&(cap[1]==="pre"||cap[1]==="script"||cap[1]==="style"),text:cap[0]});continue}if(!bq&&top&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i<item.align.length;i++){if(/^ *-+: *$/.test(item.align[i])){item.align[i]="right"}else if(/^ *:-+: *$/.test(item.align[i])){item.align[i]="center"}else if(/^ *:-+ *$/.test(item.align[i])){item.align[i]="left"}else{item.align[i]=null}}for(i=0;i<item.cells.length;i++){item.cells[i]=item.cells[i].replace(/^ *\| *| *\| *$/g,"").split(/ *\| */)}this.tokens.push(item);continue}if(top&&(cap=this.rules.paragraph.exec(src))){src=src.substring(cap[0].length);this.tokens.push({type:"paragraph",text:cap[1].charAt(cap[1].length-1)==="\n"?cap[1].slice(0,-1):cap[1]});continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"text",text:cap[0]});continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return this.tokens};var inline={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/};inline._inside=/(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;inline._href=/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else if(this.options.pedantic){this.rules=inline.pedantic}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^<a /i.test(cap[0])){this.inLink=true}else if(this.inLink&&/^<\/a>/i.test(cap[0])){this.inLink=false}src=src.substring(cap[0].length);out+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(cap[0]):escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.codespan(escape(cap[2],true));continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.br();continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.del(this.output(cap[1]));continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.text(escape(this.smartypants(cap[0])));continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return out};InlineLexer.prototype.outputLink=function(cap,link){var href=escape(link.href),title=link.title?escape(link.title):null;return cap[0].charAt(0)!=="!"?this.renderer.link(href,title,this.output(cap[1])):this.renderer.image(href,title,escape(cap[1]))};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants)return text;return text.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")};InlineLexer.prototype.mangle=function(text){if(!this.options.mangle)return text;var out="",l=text.length,i=0,ch;for(;i<l;i++){ch=text.charCodeAt(i);if(Math.random()>.5){ch="x"+ch.toString(16)}out+="&#"+ch+";"}return out};function Renderer(options){this.options=options||{}}Renderer.prototype.code=function(code,lang,escaped){if(this.options.highlight){var out=this.options.highlight(code,lang);if(out!=null&&out!==code){escaped=true;code=out}}if(!lang){return"<pre><code>"+(escaped?code:escape(code,true))+"\n</code></pre>"}return'<pre><code class="'+this.options.langPrefix+escape(lang,true)+'">'+(escaped?code:escape(code,true))+"\n</code></pre>\n"};Renderer.prototype.blockquote=function(quote){return"<blockquote>\n"+quote+"</blockquote>\n"};Renderer.prototype.html=function(html){return html};Renderer.prototype.heading=function(text,level,raw){return"<h"+level+' id="'+this.options.headerPrefix+raw.toLowerCase().replace(/[^\w]+/g,"-")+'">'+text+"</h"+level+">\n"};Renderer.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"};Renderer.prototype.list=function(body,ordered){var type=ordered?"ol":"ul";return"<"+type+">\n"+body+"</"+type+">\n"};Renderer.prototype.listitem=function(text){return"<li>"+text+"</li>\n"};Renderer.prototype.paragraph=function(text){return"<p>"+text+"</p>\n"};Renderer.prototype.table=function(header,body){return"<table>\n"+"<thead>\n"+header+"</thead>\n"+"<tbody>\n"+body+"</tbody>\n"+"</table>\n"};Renderer.prototype.tablerow=function(content){return"<tr>\n"+content+"</tr>\n"};Renderer.prototype.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+content+"</"+type+">\n"};Renderer.prototype.strong=function(text){return"<strong>"+text+"</strong>"};Renderer.prototype.em=function(text){return"<em>"+text+"</em>"};Renderer.prototype.codespan=function(text){return"<code>"+text+"</code>"};Renderer.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"};Renderer.prototype.del=function(text){return"<del>"+text+"</del>"};Renderer.prototype.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0||prot.indexOf("vbscript:")===0){return""}}var out='<a href="'+href+'"';if(title){out+=' title="'+title+'"'}out+=">"+text+"</a>";return out};Renderer.prototype.image=function(href,title,text){var out='<img src="'+href+'" alt="'+text+'"';if(title){out+=' title="'+title+'"'}out+=this.options.xhtml?"/>":">";return out};Renderer.prototype.text=function(text){return text};function Parser(options){this.tokens=[];this.token=null;this.options=options||marked.defaults;this.options.renderer=this.options.renderer||new Renderer;this.renderer=this.options.renderer;this.renderer.options=this.options}Parser.parse=function(src,options,renderer){var parser=new Parser(options,renderer);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options,this.renderer);this.tokens=src.reverse();var out="";while(this.next()){out+=this.tok()}return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text;while(this.peek().type==="text"){body+="\n"+this.next().text}return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case"space":{return""}case"hr":{return this.renderer.hr()}case"heading":{return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text)}case"code":{return this.renderer.code(this.token.text,this.token.lang,this.token.escaped)}case"table":{var header="",body="",i,row,cell,flags,j;cell="";for(i=0;i<this.token.header.length;i++){flags={header:true,align:this.token.align[i]};cell+=this.renderer.tablecell(this.inline.output(this.token.header[i]),{header:true,align:this.token.align[i]})}header+=this.renderer.tablerow(cell);for(i=0;i<this.token.cells.length;i++){row=this.token.cells[i];cell="";for(j=0;j<row.length;j++){cell+=this.renderer.tablecell(this.inline.output(row[j]),{header:false,align:this.token.align[j]})}body+=this.renderer.tablerow(cell)}return this.renderer.table(header,body)}case"blockquote_start":{var body="";while(this.next().type!=="blockquote_end"){body+=this.tok()}return this.renderer.blockquote(body)}case"list_start":{var body="",ordered=this.token.ordered;while(this.next().type!=="list_end"){body+=this.tok()}return this.renderer.list(body,ordered)}case"list_item_start":{var body="";while(this.next().type!=="list_item_end"){body+=this.token.type==="text"?this.parseText():this.tok()}return this.renderer.listitem(body)}case"loose_item_start":{var body="";while(this.next().type!=="list_item_end"){body+=this.tok()}return this.renderer.listitem(body)}case"html":{var html=!this.token.pre&&!this.options.pedantic?this.inline.output(this.token.text):this.token.text;return this.renderer.html(html)}case"paragraph":{return this.renderer.paragraph(this.inline.output(this.token.text))}case"text":{return this.renderer.paragraph(this.parseText())}}};function escape(html,encode){return html.replace(!encode?/&(?!#?\w+;)/g:/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function unescape(html){return html.replace(/&([#\w]+);/g,function(_,n){n=n.toLowerCase();if(n==="colon")return":";if(n.charAt(0)==="#"){return n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}return""})}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name)return new RegExp(regex,opt);val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i=1,target,key;for(;i<arguments.length;i++){target=arguments[i];for(key in target){if(Object.prototype.hasOwnProperty.call(target,key)){obj[key]=target[key]}}}return obj}function marked(src,opt,callback){if(callback||typeof opt==="function"){if(!callback){callback=opt;opt=null}opt=merge({},marked.defaults,opt||{});var highlight=opt.highlight,tokens,pending,i=0;try{tokens=Lexer.lex(src,opt)}catch(e){return callback(e)}pending=tokens.length;var done=function(err){if(err){opt.highlight=highlight;return callback(err)}var out;try{out=Parser.parse(tokens,opt)}catch(e){err=e}opt.highlight=highlight;return err?callback(err):callback(null,out)};if(!highlight||highlight.length<3){return done()}delete opt.highlight;if(!pending)return done();for(;i<tokens.length;i++){(function(token){if(token.type!=="code"){return--pending||done()}return highlight(token.text,token.lang,function(err,code){if(err)return done(err);if(code==null||code===token.text){return--pending||done()}token.text=code;token.escaped=true;--pending||done()})})(tokens[i])}return}try{if(opt)opt=merge({},marked.defaults,opt);return Parser.parse(Lexer.lex(src,opt),opt)}catch(e){e.message+="\nPlease report this to https://github.com/chjj/marked.";if((opt||marked.defaults).silent){return"<p>An error occured:</p><pre>"+escape(e.message+"",true)+"</pre>"}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}).call(function(){return this||(typeof window!=="undefined"?window:global)}());
0 \ No newline at end of file 7 \ No newline at end of file
amWiki/js/pinyin.js 0 → 100644
  1 +/**
  2 + * Convert Chinese to Pinyin
  3 + * 未知作者
  4 + * 不能识别多音字
  5 + */
  6 +
  7 +var PinYin = (function () {
  8 +
  9 + var py = {
  10 + "a": "\u554a\u963f\u9515",
  11 + "ai": "\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u8bf6\u6371\u55f3\u55cc\u5ad2\u7477\u66a7\u7839\u953f\u972d",
  12 + "an": "\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u8c19\u57ef\u63de\u72b4\u5eb5\u6849\u94f5\u9e4c\u9878\u9eef",
  13 + "ang": "\u80ae\u6602\u76ce",
  14 + "ao": "\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u5773\u62d7\u55f7\u5662\u5c99\u5ed2\u9068\u5aaa\u9a9c\u8071\u87af\u93ca\u9ccc\u93d6",
  15 + "ba": "\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u8307\u83dd\u8406\u636d\u5c9c\u705e\u6777\u94af\u7c91\u9c85\u9b43",
  16 + "bai": "\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u859c\u63b0\u97b4",
  17 + "ban": "\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u962a\u5742\u8c73\u94a3\u7622\u764d\u8228",
  18 + "bang": "\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u84a1\u8783",
  19 + "bao": "\u82de\u80de\u5305\u8912\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u52f9\u8446\u5b80\u5b62\u7172\u9e28\u8913\u8db5\u9f85",
  20 + "bo": "\u5265\u8584\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u4eb3\u8543\u5575\u997d\u6a97\u64d8\u7934\u94b9\u9e41\u7c38\u8ddb",
  21 + "bei": "\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5b5b\u9642\u90b6\u57e4\u84d3\u5457\u602b\u6096\u789a\u9e4e\u8919\u943e",
  22 + "ben": "\u5954\u82ef\u672c\u7b28\u755a\u574c\u951b",
  23 + "beng": "\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u552a\u5623\u750f",
  24 + "bi": "\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u5315\u4ef3\u4ffe\u8298\u835c\u8378\u5421\u54d4\u72f4\u5eb3\u610e\u6ed7\u6fde\u5f3c\u59a3\u5a62\u5b16\u74a7\u8d32\u7540\u94cb\u79d5\u88e8\u7b5a\u7b85\u7be6\u822d\u895e\u8df8\u9ac0",
  25 + "bian": "\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u533e\u5f01\u82c4\u5fed\u6c74\u7f0f\u7178\u782d\u78a5\u7a39\u7a86\u8759\u7b3e\u9cca",
  26 + "biao": "\u6807\u5f6a\u8198\u8868\u5a4a\u9aa0\u98d1\u98d9\u98da\u706c\u9556\u9573\u762d\u88f1\u9cd4",
  27 + "bie": "\u9cd6\u618b\u522b\u762a\u8e69\u9cd8",
  28 + "bin": "\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u50a7\u6d5c\u7f24\u73a2\u6ba1\u8191\u9554\u9acc\u9b13",
  29 + "bing": "\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3\u75c5\u5e76\u7980\u90b4\u6452\u7ee0\u678b\u69df\u71f9",
  30 + "bu": "\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u62ca\u535f\u900b\u74ff\u6661\u949a\u91ad",
  31 + "ca": "\u64e6\u5693\u7924",
  32 + "cai": "\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521",
  33 + "can": "\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u9a96\u74a8\u7cb2\u9eea",
  34 + "cang": "\u82cd\u8231\u4ed3\u6ca7\u85cf\u4f27",
  35 + "cao": "\u64cd\u7cd9\u69fd\u66f9\u8349\u8279\u5608\u6f15\u87ac\u825a",
  36 + "ce": "\u5395\u7b56\u4fa7\u518c\u6d4b\u5202\u5e3b\u607b",
  37 + "ceng": "\u5c42\u8e6d\u564c",
  38 + "cha": "\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u7339\u9987\u6c4a\u59f9\u6748\u6942\u69ce\u6aab\u9497\u9538\u9572\u8869",
  39 + "chai": "\u62c6\u67f4\u8c7a\u4faa\u8308\u7625\u867f\u9f87",
  40 + "chan": "\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u5181\u8c04\u8c36\u8487\u5edb\u5fcf\u6f7a\u6fb6\u5b71\u7fbc\u5a75\u5b17\u9aa3\u89c7\u7985\u9561\u88e3\u87fe\u8e94",
  41 + "chang": "\u660c\u7316\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u4f25\u9b2f\u82cc\u83d6\u5f9c\u6005\u60dd\u960a\u5a3c\u5ae6\u6636\u6c05\u9cb3",
  42 + "chao": "\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u600a\u7ec9\u6641\u8016",
  43 + "che": "\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u577c\u5c6e\u7817",
  44 + "chen": "\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u79f0\u8c0c\u62bb\u55d4\u5bb8\u741b\u6987\u809c\u80c2\u789c\u9f80",
  45 + "cheng": "\u6491\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u57d5\u5d4a\u5fb5\u6d48\u67a8\u67fd\u6a18\u665f\u584d\u77a0\u94d6\u88ce\u86cf\u9172",
  46 + "chi": "\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u50ba\u5880\u82aa\u830c\u640b\u53f1\u54e7\u557b\u55e4\u5f73\u996c\u6cb2\u5ab8\u6555\u80dd\u7719\u7735\u9e31\u761b\u892b\u86a9\u87ad\u7b1e\u7bea\u8c49\u8e05\u8e1f\u9b51",
  47 + "chong": "\u5145\u51b2\u866b\u5d07\u5ba0\u833a\u5fe1\u61a7\u94f3\u825f",
  48 + "chou": "\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u4fe6\u5733\u5e31\u60c6\u6eb4\u59af\u7633\u96e0\u9c8b",
  49 + "chu": "\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a\u7840\u50a8\u77d7\u6410\u89e6\u5904\u4e8d\u520d\u61b7\u7ecc\u6775\u696e\u6a17\u870d\u8e70\u9edc",
  50 + "chuan": "\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u63be\u821b\u60f4\u9044\u5ddb\u6c1a\u948f\u9569\u8221",
  51 + "chuang": "\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u6006",
  52 + "chui": "\u5439\u708a\u6376\u9524\u5782\u9672\u68f0\u69cc",
  53 + "chun": "\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u4fc3\u83bc\u6c8c\u80ab\u6710\u9e51\u877d",
  54 + "chuo": "\u6233\u7ef0\u851f\u8fb6\u8f8d\u955e\u8e14\u9f8a",
  55 + "ci": "\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u8360\u5472\u5d6f\u9e5a\u8785\u7ccd\u8d91",
  56 + "cong": "\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u506c\u82c1\u6dd9\u9aa2\u742e\u7481\u679e",
  57 + "cu": "\u51d1\u7c97\u918b\u7c07\u731d\u6b82\u8e59",
  58 + "cuan": "\u8e7f\u7be1\u7a9c\u6c46\u64ba\u6615\u7228",
  59 + "cui": "\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u8403\u60b4\u7480\u69b1\u96b9",
  60 + "cun": "\u6751\u5b58\u5bf8\u78cb\u5fd6\u76b4",
  61 + "cuo": "\u64ae\u6413\u63aa\u632b\u9519\u539d\u811e\u9509\u77ec\u75e4\u9e7e\u8e49\u8e9c",
  62 + "da": "\u642d\u8fbe\u7b54\u7629\u6253\u5927\u8037\u54d2\u55d2\u601b\u59b2\u75b8\u8921\u7b2a\u977c\u9791",
  63 + "dai": "\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e\u6020\u57ed\u7519\u5454\u5cb1\u8fe8\u902f\u9a80\u7ed0\u73b3\u9edb",
  64 + "dan": "\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u4ebb\u510b\u5369\u840f\u5556\u6fb9\u6a90\u6b9a\u8d55\u7708\u7605\u8043\u7baa",
  65 + "dang": "\u5f53\u6321\u515a\u8361\u6863\u8c20\u51fc\u83ea\u5b95\u7800\u94db\u88c6",
  66 + "dao": "\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u53e8\u5541\u5fc9\u6d2e\u6c18\u7118\u5fd1\u7e9b",
  67 + "de": "\u5fb7\u5f97\u7684\u951d",
  68 + "deng": "\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5654\u5d9d\u6225\u78f4\u956b\u7c26",
  69 + "di": "\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u6c10\u7c74\u8bcb\u8c1b\u90b8\u577b\u839c\u837b\u5600\u5a23\u67e2\u68e3\u89cc\u7825\u78b2\u7747\u955d\u7f9d\u9ab6",
  70 + "dian": "\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u4e36\u963d\u576b\u57dd\u5dc5\u73b7\u765c\u766b\u7c1f\u8e2e",
  71 + "diao": "\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8f7a\u94de\u8729\u7c9c\u8c82",
  72 + "die": "\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0\u4f5a\u57a4\u581e\u63f2\u558b\u6e2b\u8f76\u7252\u74de\u8936\u800b\u8e40\u9cbd\u9cce",
  73 + "ding": "\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4ec3\u5576\u738e\u815a\u7887\u753a\u94e4\u7594\u8035\u914a",
  74 + "dong": "\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u578c\u549a\u5cbd\u5cd2\u5902\u6c21\u80e8\u80f4\u7850\u9e2b",
  75 + "dou": "\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u8538\u94ad\u7aa6\u7aac\u86aa\u7bfc\u9161",
  76 + "du": "\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u828f\u561f\u6e0e\u691f\u6a50\u724d\u8839\u7b03\u9ad1\u9ee9",
  77 + "duan": "\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5f56\u6934\u7145\u7c16",
  78 + "dui": "\u5806\u5151\u961f\u5bf9\u603c\u619d\u7893",
  79 + "dun": "\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u7096\u7818\u7905\u76f9\u9566\u8db8",
  80 + "duo": "\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u5484\u54da\u7f0d\u67c1\u94ce\u88f0\u8e31",
  81 + "e": "\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u5669\u8c14\u57a9\u57ad\u82ca\u83aa\u843c\u5443\u6115\u5c59\u5a40\u8f6d\u66f7\u816d\u786a\u9507\u9537\u9e57\u989a\u9cc4",
  82 + "en": "\u6069\u84bd\u6441\u5514\u55ef",
  83 + "er": "\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c\u8d30\u8fe9\u73e5\u94d2\u9e38\u9c95",
  84 + "fa": "\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u57a1\u781d",
  85 + "fan": "\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u8629\u5e61\u72ad\u68b5\u6535\u71d4\u7548\u8e6f",
  86 + "fang": "\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u531a\u90a1\u5f77\u94ab\u822b\u9c82",
  87 + "fei": "\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82be\u72d2\u60b1\u6ddd\u5983\u7ecb\u7eef\u69a7\u8153\u6590\u6249\u7953\u7829\u9544\u75f1\u871a\u7bda\u7fe1\u970f\u9cb1",
  88 + "fen": "\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u507e\u7035\u68fc\u610d\u9cbc\u9f22",
  89 + "feng": "\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4ff8\u9146\u8451\u6ca3\u781c",
  90 + "fu": "\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5310\u51eb\u90db\u8299\u82fb\u832f\u83a9\u83d4\u544b\u5e5e\u6ecf\u8274\u5b5a\u9a78\u7ec2\u6874\u8d59\u9efb\u9efc\u7f58\u7a03\u99a5\u864d\u86a8\u8709\u8760\u876e\u9eb8\u8dba\u8dd7\u9cc6",
  91 + "ga": "\u5676\u560e\u86e4\u5c2c\u5477\u5c15\u5c1c\u65ee\u9486",
  92 + "gai": "\u8be5\u6539\u6982\u9499\u76d6\u6e89\u4e10\u9654\u5793\u6224\u8d45\u80f2",
  93 + "gan": "\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5769\u82f7\u5c34\u64c0\u6cd4\u6de6\u6f89\u7ec0\u6a44\u65f0\u77f8\u75b3\u9150",
  94 + "gang": "\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6206\u7f61\u9883\u7b7b",
  95 + "gong": "\u6760\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u857b\u5efe\u54a3\u73d9\u80b1\u86a3\u86e9\u89e5",
  96 + "gao": "\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u777e\u8bf0\u90dc\u84bf\u85c1\u7f1f\u69d4\u69c1\u6772\u9506",
  97 + "ge": "\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u9601\u9694\u94ec\u4e2a\u5404\u9b32\u4ee1\u54ff\u5865\u55dd\u7ea5\u643f\u8188\u784c\u94ea\u9549\u88bc\u988c\u867c\u8238\u9abc\u9ac2",
  98 + "gei": "\u7ed9",
  99 + "gen": "\u6839\u8ddf\u4e98\u831b\u54cf\u826e",
  100 + "geng": "\u8015\u66f4\u5e9a\u7fb9\u57c2\u803f\u6897\u54fd\u8d53\u9ca0",
  101 + "gou": "\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u4f5d\u8bdf\u5ca3\u9058\u5abe\u7f11\u89cf\u5f40\u9e32\u7b31\u7bdd\u97b2",
  102 + "gu": "\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u560f\u8bc2\u83f0\u54cc\u5d2e\u6c69\u688f\u8f71\u726f\u727f\u80cd\u81cc\u6bc2\u77bd\u7f5f\u94b4\u9522\u74e0\u9e2a\u9e44\u75fc\u86c4\u9164\u89da\u9cb4\u9ab0\u9e58",
  103 + "gua": "\u522e\u74dc\u5250\u5be1\u6302\u8902\u5366\u8bd6\u5471\u681d\u9e39",
  104 + "guai": "\u4e56\u62d0\u602a\u54d9",
  105 + "guan": "\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u500c\u839e\u63bc\u6dab\u76e5\u9e73\u9ccf",
  106 + "guang": "\u5149\u5e7f\u901b\u72b7\u6844\u80f1\u7592",
  107 + "gui": "\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u5326\u523f\u5e8b\u5b84\u59ab\u6867\u7085\u6677\u7688\u7c0b\u9c91\u9cdc",
  108 + "gun": "\u8f8a\u6eda\u68cd\u4e28\u886e\u7ef2\u78d9\u9ca7",
  109 + "guo": "\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u9998\u8803\u57da\u63b4\u5459\u56d7\u5e3c\u5d1e\u7313\u6901\u8662\u951e\u8052\u872e\u873e\u8748",
  110 + "ha": "\u54c8",
  111 + "hai": "\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u54b4\u55e8\u988f\u91a2",
  112 + "han": "\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u9097\u83e1\u6496\u961a\u701a\u6657\u7113\u9894\u86b6\u9f3e",
  113 + "hen": "\u592f\u75d5\u5f88\u72e0\u6068",
  114 + "hang": "\u676d\u822a\u6c86\u7ed7\u73e9\u6841",
  115 + "hao": "\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u8585\u55e5\u5686\u6fe0\u704f\u660a\u7693\u98a2\u869d",
  116 + "he": "\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u8bc3\u52be\u58d1\u85ff\u55d1\u55ec\u9616\u76cd\u86b5\u7fee",
  117 + "hei": "\u563f\u9ed1",
  118 + "heng": "\u54fc\u4ea8\u6a2a\u8861\u6052\u8a07\u8605",
  119 + "hong": "\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u9ec9\u8ba7\u836d\u85a8\u95f3\u6cd3",
  120 + "hou": "\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u5820\u5f8c\u9005\u760a\u7bcc\u7cc7\u9c8e\u9aba",
  121 + "hu": "\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u51b1\u553f\u56eb\u5cb5\u7322\u6019\u60da\u6d52\u6ef9\u7425\u69f2\u8f77\u89f3\u70c0\u7173\u623d\u6248\u795c\u9e55\u9e71\u7b0f\u9190\u659b",
  122 + "hua": "\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u5290\u6d4d\u9a85\u6866\u94e7\u7a1e",
  123 + "huai": "\u69d0\u5f8a\u6000\u6dee\u574f\u8fd8\u8e1d",
  124 + "huan": "\u6b22\u73af\u6853\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u90c7\u5942\u57b8\u64d0\u571c\u6d39\u6d63\u6f36\u5bf0\u902d\u7f33\u953e\u9ca9\u9b1f",
  125 + "huang": "\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u968d\u5fa8\u6e5f\u6f62\u9051\u749c\u8093\u7640\u87e5\u7bc1\u9cc7",
  126 + "hui": "\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8bd9\u8334\u835f\u8559\u54d5\u5599\u96b3\u6d04\u5f57\u7f0b\u73f2\u6656\u605a\u867a\u87ea\u9ebe",
  127 + "hun": "\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8be8\u9984\u960d\u6eb7\u7f17",
  128 + "huo": "\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u6509\u56af\u5925\u94ac\u952a\u956c\u8020\u8816",
  129 + "ji": "\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5c45\u4e0c\u4e69\u525e\u4f76\u4f74\u8114\u58bc\u82a8\u82b0\u8401\u84ba\u857a\u638e\u53fd\u54ad\u54dc\u5527\u5c8c\u5d74\u6d0e\u5f50\u5c50\u9aa5\u757f\u7391\u696b\u6b9b\u621f\u6222\u8d4d\u89ca\u7284\u9f51\u77f6\u7f81\u5d47\u7a37\u7620\u7635\u866e\u7b08\u7b04\u66a8\u8dfb\u8dfd\u9701\u9c9a\u9cab\u9afb\u9e82",
  130 + "jia": "\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u4f3d\u90cf\u62ee\u5cac\u6d43\u8fe6\u73c8\u621b\u80db\u605d\u94d7\u9553\u75c2\u86f1\u7b33\u8888\u8dcf",
  131 + "jian": "\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50ed\u8c0f\u8c2b\u83c5\u84b9\u641b\u56dd\u6e54\u8e47\u8b07\u7f23\u67a7\u67d9\u6957\u620b\u622c\u726e\u728d\u6bfd\u8171\u7751\u950f\u9e63\u88e5\u7b15\u7bb4\u7fe6\u8dbc\u8e3a\u9ca3\u97af",
  132 + "jiang": "\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8333\u6d1a\u7edb\u7f30\u729f\u7913\u8029\u7ce8\u8c47",
  133 + "jiao": "\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u4f7c\u50ec\u832d\u6322\u564d\u5ce4\u5fbc\u59e3\u7e9f\u656b\u768e\u9e6a\u86df\u91ae\u8de4\u9c9b",
  134 + "jie": "\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5048\u8ba6\u8bd8\u5588\u55df\u736c\u5a55\u5b51\u6840\u7352\u78a3\u9534\u7596\u88b7\u9889\u86a7\u7faf\u9c92\u9ab1\u9aeb",
  135 + "jin": "\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78\u5c3d\u537a\u8369\u5807\u5664\u9991\u5ed1\u5997\u7f19\u747e\u69ff\u8d46\u89d0\u9485\u9513\u887f\u77dc",
  136 + "jing": "\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u522d\u5106\u9631\u83c1\u734d\u61ac\u6cfe\u8ff3\u5f2a\u5a67\u80bc\u80eb\u8148\u65cc",
  137 + "jiong": "\u70af\u7a98\u5182\u8fe5\u6243",
  138 + "jiu": "\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u50e6\u557e\u9604\u67e9\u6855\u9e6b\u8d73\u9b0f",
  139 + "ju": "\u97a0\u62d8\u72d9\u75bd\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u5028\u8bb5\u82e3\u82f4\u8392\u63ac\u907d\u5c66\u741a\u67b8\u6910\u6998\u6989\u6a58\u728b\u98d3\u949c\u9514\u7aad\u88fe\u8d84\u91b5\u8e3d\u9f83\u96ce\u97ab",
  140 + "juan": "\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u9104\u72f7\u6d93\u684a\u8832\u9529\u954c\u96bd",
  141 + "jue": "\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u53a5\u5282\u8c32\u77cd\u8568\u5658\u5d1b\u7357\u5b53\u73cf\u6877\u6a5b\u721d\u9562\u8e76\u89d6",
  142 + "jun": "\u5747\u83cc\u94a7\u519b\u541b\u5cfb\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u6343\u72fb\u76b2\u7b60\u9e87",
  143 + "ka": "\u5580\u5496\u5361\u4f67\u5494\u80e9",
  144 + "ke": "\u54af\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u5ca2\u606a\u6e98\u9a92\u7f02\u73c2\u8f72\u6c2a\u778c\u94b6\u75b4\u7aa0\u874c\u9ac1",
  145 + "kai": "\u5f00\u63e9\u6977\u51ef\u6168\u5240\u57b2\u8488\u5ffe\u607a\u94e0\u950e",
  146 + "kan": "\u520a\u582a\u52d8\u574e\u780d\u770b\u4f83\u51f5\u83b0\u83b6\u6221\u9f9b\u77b0",
  147 + "kang": "\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u5751\u4f09\u95f6\u94aa",
  148 + "kao": "\u8003\u62f7\u70e4\u9760\u5c3b\u6832\u7292\u94d0",
  149 + "ken": "\u80af\u5543\u57a6\u6073\u57a0\u88c9\u9880",
  150 + "keng": "\u542d\u5fd0\u94ff",
  151 + "kong": "\u7a7a\u6050\u5b54\u63a7\u5025\u5d06\u7b9c",
  152 + "kou": "\u62a0\u53e3\u6263\u5bc7\u82a4\u853b\u53e9\u770d\u7b58",
  153 + "ku": "\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5233\u5800\u55be\u7ed4\u9ab7",
  154 + "kua": "\u5938\u57ae\u630e\u8de8\u80ef\u4f89",
  155 + "kuai": "\u5757\u7b77\u4fa9\u5feb\u84af\u90d0\u8489\u72ef\u810d",
  156 + "kuan": "\u5bbd\u6b3e\u9acb",
  157 + "kuang": "\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u8bd3\u8bf3\u909d\u5739\u593c\u54d0\u7ea9\u8d36",
  158 + "kui": "\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080\u9988\u6127\u6e83\u9997\u532e\u5914\u9697\u63c6\u55b9\u559f\u609d\u6126\u9615\u9035\u668c\u777d\u8069\u8770\u7bd1\u81fe\u8dec",
  159 + "kun": "\u5764\u6606\u6346\u56f0\u6083\u9603\u7428\u951f\u918c\u9cb2\u9ae1",
  160 + "kuo": "\u62ec\u6269\u5ed3\u9614\u86de",
  161 + "la": "\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u524c\u647a\u908b\u65ef\u782c\u760c",
  162 + "lai": "\u83b1\u6765\u8d56\u5d03\u5f95\u6d9e\u6fd1\u8d49\u7750\u94fc\u765e\u7c41",
  163 + "lan": "\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u5549\u5c9a\u61d4\u6f24\u6984\u6593\u7f71\u9567\u8934",
  164 + "lang": "\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u83a8\u8497\u5577\u9606\u9512\u7a02\u8782",
  165 + "lao": "\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u5520\u5d02\u6833\u94d1\u94f9\u75e8\u91aa",
  166 + "le": "\u52d2\u4e50\u808b\u4ec2\u53fb\u561e\u6cd0\u9cd3",
  167 + "lei": "\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u7c7b\u6cea\u7fb8\u8bd4\u837d\u54a7\u6f2f\u5ad8\u7f27\u6a91\u8012\u9179",
  168 + "ling": "\u68f1\u51b7\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u9143\u5844\u82d3\u5464\u56f9\u6ce0\u7eeb\u67c3\u68c2\u74f4\u8046\u86c9\u7fce\u9cae",
  169 + "leng": "\u695e\u6123",
  170 + "li": "\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fea\u4fda\u90e6\u575c\u82c8\u8385\u84e0\u85dc\u6369\u5456\u5533\u55b1\u7301\u6ea7\u6fa7\u9026\u5a0c\u5ae0\u9a8a\u7f21\u73de\u67a5\u680e\u8f79\u623e\u783a\u8a48\u7f79\u9502\u9e42\u75a0\u75ac\u86ce\u870a\u8821\u7b20\u7be5\u7c9d\u91b4\u8dde\u96f3\u9ca1\u9ce2\u9ee7",
  171 + "lian": "\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u631b\u8539\u5941\u6f4b\u6fc2\u5a08\u740f\u695d\u6b93\u81c1\u81a6\u88e2\u880a\u9ca2",
  172 + "liang": "\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u589a\u690b\u8e09\u9753\u9b49",
  173 + "liao": "\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u84fc\u5c25\u5639\u7360\u5bee\u7f2d\u948c\u9e69\u8022",
  174 + "lie": "\u5217\u88c2\u70c8\u52a3\u730e\u51bd\u57d2\u6d0c\u8d94\u8e90\u9b23",
  175 + "lin": "\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u853a\u5d99\u5eea\u9074\u6aa9\u8f9a\u77b5\u7cbc\u8e8f\u9e9f",
  176 + "liu": "\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u62a1\u507b\u848c\u6cd6\u6d4f\u905b\u9a9d\u7efa\u65d2\u7198\u950d\u954f\u9e68\u938f",
  177 + "long": "\u9f99\u804b\u5499\u7b3c\u7abf\u9686\u5784\u62e2\u9647\u5f04\u5785\u830f\u6cf7\u73d1\u680a\u80e7\u783b\u7643",
  178 + "lou": "\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u55bd\u5d5d\u9542\u7618\u8027\u877c\u9ac5",
  179 + "lu": "\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u5786\u6445\u64b8\u565c\u6cf8\u6e0c\u6f09\u7490\u680c\u6a79\u8f73\u8f82\u8f98\u6c07\u80ea\u9565\u9e2c\u9e6d\u7c0f\u823b\u9c88",
  180 + "lv": "\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u634b\u95fe\u6988\u8182\u7a06\u891b",
  181 + "luan": "\u5ce6\u5b6a\u6ee6\u5375\u4e71\u683e\u9e3e\u92ae",
  182 + "lue": "\u63a0\u7565\u950a",
  183 + "lun": "\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u56f5",
  184 + "luo": "\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u502e\u8366\u645e\u7321\u6cfa\u6924\u8136\u9559\u7630\u96d2",
  185 + "ma": "\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u551b\u72b8\u5b37\u6769\u9ebd",
  186 + "mai": "\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u52a2\u836c\u54aa\u973e",
  187 + "man": "\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b\u8c29\u5881\u5e54\u7f26\u71b3\u9558\u989f\u87a8\u9cd7\u9794",
  188 + "mang": "\u8292\u832b\u76f2\u5fd9\u83bd\u9099\u6f2d\u6726\u786d\u87d2",
  189 + "meng": "\u6c13\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u52d0\u750d\u77a2\u61f5\u791e\u867b\u8722\u8813\u824b\u8268\u9efe",
  190 + "miao": "\u732b\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u55b5\u9088\u7f08\u7f2a\u676a\u6dfc\u7707\u9e4b\u8731",
  191 + "mao": "\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4f94\u88a4\u52d6\u8306\u5cc1\u7441\u6634\u7266\u8004\u65c4\u61cb\u7780\u86d1\u8765\u87ca\u9ae6",
  192 + "me": "\u4e48",
  193 + "mei": "\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u5776\u8393\u5d4b\u7338\u6d7c\u6e44\u6963\u9545\u9e5b\u8882\u9b45",
  194 + "men": "\u95e8\u95f7\u4eec\u626a\u739f\u7116\u61d1\u9494",
  195 + "mi": "\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u8288\u5196\u8c27\u863c\u5627\u7315\u736f\u6c68\u5b93\u5f2d\u8112\u6549\u7cf8\u7e3b\u9e8b",
  196 + "mian": "\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u6c94\u6e4e\u817c\u7704",
  197 + "mie": "\u8511\u706d\u54a9\u881b\u7bfe",
  198 + "min": "\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u82e0\u5cb7\u95f5\u6cef\u73c9",
  199 + "ming": "\u660e\u879f\u9e23\u94ed\u540d\u547d\u51a5\u8317\u6e9f\u669d\u7791\u9169",
  200 + "miu": "\u8c2c",
  201 + "mo": "\u6478\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c1f\u8309\u84e6\u998d\u5aeb\u9546\u79e3\u763c\u8031\u87c6\u8c8a\u8c98",
  202 + "mou": "\u8c0b\u725f\u67d0\u53b6\u54de\u5a7a\u7738\u936a",
  203 + "mu": "\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u4eeb\u82dc\u5452\u6c90\u6bea\u94bc",
  204 + "na": "\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u5185\u637a\u80ad\u954e\u8872\u7bac",
  205 + "nai": "\u6c16\u4e43\u5976\u8010\u5948\u9f10\u827f\u8418\u67f0",
  206 + "nan": "\u5357\u7537\u96be\u56ca\u5583\u56e1\u6960\u8169\u877b\u8d67",
  207 + "nao": "\u6320\u8111\u607c\u95f9\u5b6c\u57b4\u7331\u7459\u7847\u94d9\u86f2",
  208 + "ne": "\u6dd6\u5462\u8bb7",
  209 + "nei": "\u9981",
  210 + "nen": "\u5ae9\u80fd\u6798\u6041",
  211 + "ni": "\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u4f32\u576d\u730a\u6029\u6ee0\u6635\u65ce\u7962\u615d\u7768\u94cc\u9cb5",
  212 + "nian": "\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5eff\u8f87\u9ecf\u9c87\u9cb6",
  213 + "niang": "\u5a18\u917f",
  214 + "niao": "\u9e1f\u5c3f\u8311\u5b32\u8132\u8885",
  215 + "nie": "\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u4e5c\u9667\u8616\u55eb\u8080\u989e\u81ec\u8e51",
  216 + "nin": "\u60a8\u67e0",
  217 + "ning": "\u72de\u51dd\u5b81\u62e7\u6cde\u4f5e\u84e5\u549b\u752f\u804d",
  218 + "niu": "\u725b\u626d\u94ae\u7ebd\u72c3\u5ff8\u599e\u86b4",
  219 + "nong": "\u8113\u6d53\u519c\u4fac",
  220 + "nu": "\u5974\u52aa\u6012\u5476\u5e11\u5f29\u80ec\u5b65\u9a7d",
  221 + "nv": "\u5973\u6067\u9495\u8844",
  222 + "nuan": "\u6696",
  223 + "nuenue": "\u8650",
  224 + "nue": "\u759f\u8c11",
  225 + "nuo": "\u632a\u61e6\u7cef\u8bfa\u50a9\u6426\u558f\u9518",
  226 + "ou": "\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u6004\u74ef\u8026",
  227 + "pa": "\u556a\u8db4\u722c\u5e15\u6015\u7436\u8469\u7b62",
  228 + "pai": "\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u4ff3\u848e",
  229 + "pan": "\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u723f\u6cee\u88a2\u897b\u87e0\u8e52",
  230 + "pang": "\u4e53\u5e9e\u65c1\u802a\u80d6\u6ec2\u9004",
  231 + "pao": "\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u530f\u72cd\u5e96\u812c\u75b1",
  232 + "pei": "\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u638a\u8f94\u5e14\u6de0\u65c6\u952b\u9185\u9708",
  233 + "pen": "\u55b7\u76c6\u6e53",
  234 + "peng": "\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u580b\u562d\u6026\u87db",
  235 + "pi": "\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u4e15\u9674\u90b3\u90eb\u572e\u9f19\u64d7\u567c\u5e80\u5ab2\u7eb0\u6787\u7513\u7765\u7f74\u94cd\u75e6\u7656\u758b\u868d\u8c94",
  236 + "pian": "\u7bc7\u504f\u7247\u9a97\u8c1d\u9a88\u728f\u80fc\u890a\u7fe9\u8e41",
  237 + "piao": "\u98d8\u6f02\u74e2\u7968\u527d\u560c\u5ad6\u7f25\u6b8d\u779f\u87b5",
  238 + "pie": "\u6487\u77a5\u4e3f\u82e4\u6c15",
  239 + "pin": "\u62fc\u9891\u8d2b\u54c1\u8058\u62da\u59d8\u5ad4\u6980\u725d\u98a6",
  240 + "ping": "\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u4fdc\u5a09\u67b0\u9c86",
  241 + "po": "\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u53f5\u9131\u6ea5\u73c0\u948b\u94b7\u76a4\u7b38",
  242 + "pou": "\u5256\u88d2\u8e23",
  243 + "pu": "\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u530d\u5657\u6fee\u749e\u6c06\u9564\u9568\u8e7c",
  244 + "qi": "\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u4e9f\u4e93\u573b\u8291\u840b\u847a\u5601\u5c7a\u5c90\u6c54\u6dc7\u9a90\u7eee\u742a\u7426\u675e\u6864\u69ed\u6b39\u797a\u61a9\u789b\u86f4\u871e\u7da6\u7dae\u8dbf\u8e4a\u9ccd\u9e92",
  245 + "qia": "\u6390\u6070\u6d3d\u845c",
  246 + "qian": "\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u4f65\u9621\u828a\u82a1\u8368\u63ae\u5c8d\u60ad\u614a\u9a9e\u6434\u8930\u7f31\u6920\u80b7\u6106\u94a4\u8654\u7b9d",
  247 + "qiang": "\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u5af1\u6a2f\u6217\u709d\u9516\u9535\u956a\u8941\u8723\u7f9f\u8deb\u8dc4",
  248 + "qiao": "\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5281\u8bee\u8c2f\u835e\u6100\u6194\u7f32\u6a35\u6bf3\u7857\u8df7\u9792",
  249 + "qie": "\u5207\u8304\u4e14\u602f\u7a83\u90c4\u553c\u60ec\u59be\u6308\u9532\u7ba7",
  250 + "qin": "\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u82a9\u84c1\u8572\u63ff\u5423\u55ea\u5659\u6eb1\u6a8e\u8793\u887e",
  251 + "qing": "\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u5029\u82d8\u570a\u6aa0\u78ec\u873b\u7f44\u7b90\u8b26\u9cad\u9ee5",
  252 + "qiong": "\u743c\u7a77\u909b\u8315\u7a79\u7b47\u928e",
  253 + "qiu": "\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u4fc5\u6c3d\u5def\u827d\u72b0\u6e6b\u9011\u9052\u6978\u8d47\u9e20\u866c\u86af\u8764\u88d8\u7cd7\u9cc5\u9f3d",
  254 + "qu": "\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20\u53d6\u5a36\u9f8b\u8da3\u53bb\u8bce\u52ac\u8556\u8627\u5c96\u8862\u9612\u74a9\u89d1\u6c0d\u795b\u78f2\u766f\u86d0\u883c\u9eb4\u77bf\u9ee2",
  255 + "quan": "\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u8be0\u8343\u737e\u609b\u7efb\u8f81\u754e\u94e8\u8737\u7b4c\u9b08",
  256 + "que": "\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u9619\u60ab",
  257 + "qun": "\u88d9\u7fa4\u9021",
  258 + "ran": "\u7136\u71c3\u5189\u67d3\u82d2\u9aef",
  259 + "rang": "\u74e4\u58e4\u6518\u56b7\u8ba9\u79b3\u7a70",
  260 + "rao": "\u9976\u6270\u7ed5\u835b\u5a06\u6861",
  261 + "ruo": "\u60f9\u82e5\u5f31",
  262 + "re": "\u70ed\u504c",
  263 + "ren": "\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u4ede\u834f\u845a\u996a\u8f6b\u7a14\u887d",
  264 + "reng": "\u6254\u4ecd",
  265 + "ri": "\u65e5",
  266 + "rong": "\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u5d58\u72e8\u7f1b\u6995\u877e",
  267 + "rou": "\u63c9\u67d4\u8089\u7cc5\u8e42\u97a3",
  268 + "ru": "\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u84d0\u85b7\u5685\u6d33\u6ebd\u6fe1\u94f7\u8966\u98a5",
  269 + "ruan": "\u8f6f\u962e\u670a",
  270 + "rui": "\u854a\u745e\u9510\u82ae\u8564\u777f\u868b",
  271 + "run": "\u95f0\u6da6",
  272 + "sa": "\u6492\u6d12\u8428\u5345\u4ee8\u6332\u98d2",
  273 + "sai": "\u816e\u9cc3\u585e\u8d5b\u567b",
  274 + "san": "\u4e09\u53c1\u4f1e\u6563\u5f61\u9993\u6c35\u6bf5\u7cc1\u9730",
  275 + "sang": "\u6851\u55d3\u4e27\u6421\u78c9\u98a1",
  276 + "sao": "\u6414\u9a9a\u626b\u5ac2\u57fd\u81ca\u7619\u9ccb",
  277 + "se": "\u745f\u8272\u6da9\u556c\u94e9\u94ef\u7a51",
  278 + "sen": "\u68ee",
  279 + "seng": "\u50e7",
  280 + "sha": "\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u810e\u6b43\u75e7\u88df\u970e\u9ca8",
  281 + "shai": "\u7b5b\u6652\u917e",
  282 + "shan": "\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5261\u8baa\u912f\u57cf\u829f\u6f78\u59d7\u9a9f\u81bb\u9490\u759d\u87ee\u8222\u8dda\u9cdd",
  283 + "shang": "\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u57a7\u7ef1\u6b87\u71b5\u89de",
  284 + "shao": "\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u52ad\u82d5\u6f72\u86f8\u7b24\u7b72\u8244",
  285 + "she": "\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u538d\u4f58\u731e\u7572\u9e9d",
  286 + "shen": "\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u8bdc\u8c02\u5432\u54c2\u6e16\u6939\u77e7\u8703",
  287 + "sheng": "\u58f0\u751f\u7525\u7272\u5347\u7ef3\u7701\u76db\u5269\u80dc\u5723\u4e1e\u6e11\u5ab5\u771a\u7b19",
  288 + "shi": "\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u8c25\u57d8\u83b3\u84cd\u5f11\u5511\u9963\u8f7c\u8006\u8d33\u70bb\u793b\u94c8\u94ca\u87ab\u8210\u7b6e\u8c55\u9ca5\u9cba",
  289 + "shou": "\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u624c\u72e9\u7ef6\u824f",
  290 + "shu": "\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31\u6055\u500f\u587e\u83fd\u5fc4\u6cad\u6d91\u6f8d\u59dd\u7ebe\u6bf9\u8167\u6bb3\u956f\u79eb\u9e6c",
  291 + "shua": "\u5237\u800d\u5530\u6dae",
  292 + "shuai": "\u6454\u8870\u7529\u5e05\u87c0",
  293 + "shuan": "\u6813\u62f4\u95e9",
  294 + "shuang": "\u971c\u53cc\u723d\u5b40",
  295 + "shui": "\u8c01\u6c34\u7761\u7a0e",
  296 + "shun": "\u542e\u77ac\u987a\u821c\u6042",
  297 + "shuo": "\u8bf4\u7855\u6714\u70c1\u84b4\u6420\u55cd\u6fef\u5981\u69ca\u94c4",
  298 + "si": "\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u53ae\u4fdf\u5155\u83e5\u549d\u6c5c\u6cd7\u6f8c\u59d2\u9a77\u7f0c\u7940\u7960\u9536\u9e36\u801c\u86f3\u7b25",
  299 + "song": "\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u51c7\u83d8\u5d27\u5d69\u5fea\u609a\u6dde\u7ae6",
  300 + "sou": "\u641c\u8258\u64de\u55fd\u53df\u55d6\u55fe\u998a\u6eb2\u98d5\u778d\u953c\u878b",
  301 + "su": "\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u5919\u8c21\u850c\u55c9\u612b\u7c0c\u89eb\u7a23",
  302 + "suan": "\u9178\u849c\u7b97",
  303 + "sui": "\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u84d1\u51ab\u8c07\u6fc9\u9083\u71e7\u772d\u7762",
  304 + "sun": "\u5b59\u635f\u7b0b\u836a\u72f2\u98e7\u69ab\u8de3\u96bc",
  305 + "suo": "\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u5522\u55e6\u5a11\u686b\u7743\u7fa7",
  306 + "ta": "\u584c\u4ed6\u5b83\u5979\u5854\u736d\u631e\u8e4b\u8e0f\u95fc\u6ebb\u9062\u69bb\u6c93",
  307 + "tai": "\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u90b0\u85b9\u80bd\u70b1\u949b\u8dc6\u9c90",
  308 + "tan": "\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u90ef\u8548\u6619\u94bd\u952c\u8983",
  309 + "tang": "\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u50a5\u9967\u6e8f\u746d\u94f4\u9557\u8025\u8797\u87b3\u7fb0\u91a3",
  310 + "thang": "\u5018\u8eba\u6dcc",
  311 + "theng": "\u8d9f\u70eb",
  312 + "tao": "\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u6311\u9f17\u5555\u97ec\u9955",
  313 + "te": "\u7279",
  314 + "teng": "\u85e4\u817e\u75bc\u8a8a\u6ed5",
  315 + "ti": "\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u8351\u608c\u9016\u7ee8\u7f07\u9e48\u88fc\u918d",
  316 + "tian": "\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u63ad\u5fdd\u9617\u6b84\u754b\u94bf\u86ba",
  317 + "tiao": "\u6761\u8fe2\u773a\u8df3\u4f7b\u7967\u94eb\u7a95\u9f86\u9ca6",
  318 + "tie": "\u8d34\u94c1\u5e16\u841c\u992e",
  319 + "ting": "\u5385\u542c\u70c3\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u839b\u8476\u5a77\u6883\u8713\u9706",
  320 + "tong": "\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u4f5f\u50ee\u4edd\u833c\u55f5\u6078\u6f7c\u783c",
  321 + "tou": "\u5077\u6295\u5934\u900f\u4ea0",
  322 + "tu": "\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u580d\u837c\u83df\u948d\u9174",
  323 + "tuan": "\u6e4d\u56e2\u7583",
  324 + "tui": "\u63a8\u9893\u817f\u8715\u892a\u9000\u5fd2\u717a",
  325 + "tun": "\u541e\u5c6f\u81c0\u9968\u66be\u8c5a\u7a80",
  326 + "tuo": "\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u4e47\u4f57\u5768\u5eb9\u6cb1\u67dd\u7823\u7ba8\u8204\u8dce\u9f0d",
  327 + "wa": "\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u4f64\u5a32\u817d",
  328 + "wai": "\u6b6a\u5916",
  329 + "wan": "\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u525c\u8284\u82cb\u83c0\u7ea8\u7efe\u742c\u8118\u7579\u873f\u7ba2",
  330 + "wang": "\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u7f54\u5c22\u60d8\u8f8b\u9b4d",
  331 + "wei": "\u5a01\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u502d\u504e\u8bff\u9688\u8473\u8587\u5e0f\u5e37\u5d34\u5d6c\u7325\u732c\u95f1\u6ca9\u6d27\u6da0\u9036\u5a13\u73ae\u97ea\u8ece\u709c\u7168\u71a8\u75ff\u8249\u9c94",
  332 + "wen": "\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u520e\u6120\u960c\u6c76\u74ba\u97eb\u6b81\u96ef",
  333 + "weng": "\u55e1\u7fc1\u74ee\u84ca\u8579",
  334 + "wo": "\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u83b4\u5e44\u6e25\u674c\u809f\u9f8c",
  335 + "wu": "\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u5140\u4ef5\u9622\u90ac\u572c\u82b4\u5e91\u6003\u5fe4\u6d6f\u5be4\u8fd5\u59a9\u9a9b\u727e\u7110\u9e49\u9e5c\u8708\u92c8\u9f2f",
  336 + "xi": "\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u50d6\u516e\u96b0\u90d7\u831c\u8478\u84f0\u595a\u550f\u5f99\u9969\u960b\u6d60\u6dc5\u5c63\u5b09\u73ba\u6a28\u66e6\u89cb\u6b37\u71b9\u798a\u79a7\u94b8\u7699\u7a78\u8725\u87cb\u823e\u7fb2\u7c9e\u7fd5\u91af\u9f37",
  337 + "xia": "\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u846d\u55c4\u72ce\u9050\u7455\u7856\u7615\u7f45\u9ee0",
  338 + "xian": "\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u51bc\u85d3\u5c98\u7303\u66b9\u5a34\u6c19\u7946\u9e47\u75eb\u86ac\u7b45\u7c7c\u9170\u8df9",
  339 + "xiang": "\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8297\u8459\u9977\u5ea0\u9aa7\u7f03\u87d3\u9c9e\u98e8",
  340 + "xiao": "\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u54d3\u54bb\u5d24\u6f47\u900d\u9a81\u7ee1\u67ad\u67b5\u7b71\u7bab\u9b48",
  341 + "xie": "\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u5055\u4eb5\u52f0\u71ee\u85a4\u64b7\u5ee8\u7023\u9082\u7ec1\u7f2c\u69ad\u698d\u6b59\u8e9e",
  342 + "xin": "\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u56df\u99a8\u8398\u6b46\u94fd\u946b",
  343 + "xing": "\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u9649\u8347\u8365\u64e4\u60bb\u784e",
  344 + "xiong": "\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u828e",
  345 + "xiu": "\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u83a0\u5cab\u9990\u5ea5\u9e3a\u8c85\u9af9",
  346 + "xu": "\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8bb4\u8be9\u5729\u84ff\u6035\u6d2b\u6e86\u987c\u6829\u7166\u7809\u76f1\u80e5\u7cc8\u9191",
  347 + "xuan": "\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384\u9009\u7663\u7729\u7eda\u5107\u8c16\u8431\u63ce\u9994\u6ceb\u6d35\u6e32\u6f29\u7487\u6966\u6684\u70ab\u714a\u78b9\u94c9\u955f\u75c3",
  348 + "xue": "\u9774\u859b\u5b66\u7a74\u96ea\u8840\u5671\u6cf6\u9cd5",
  349 + "xun": "\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u5dfd\u57d9\u8340\u85b0\u5ccb\u5f87\u6d54\u66db\u7aa8\u91ba\u9c9f",
  350 + "ya": "\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u4f22\u63e0\u5416\u5c88\u8fd3\u5a05\u740a\u6860\u6c29\u7811\u775a\u75d6",
  351 + "yan": "\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u53a3\u9765\u8d5d\u4fe8\u5043\u5156\u8ba0\u8c33\u90fe\u9122\u82ab\u83f8\u5d26\u6079\u95eb\u960f\u6d07\u6e6e\u6edf\u598d\u5ae3\u7430\u664f\u80ed\u814c\u7131\u7f68\u7b75\u917d\u9b47\u990d\u9f39",
  352 + "yang": "\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u5f89\u600f\u6cf1\u7080\u70ca\u6059\u86d8\u9785",
  353 + "yao": "\u9080\u8170\u5996\u7476\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u592d\u723b\u5406\u5d3e\u5fad\u7039\u5e7a\u73e7\u6773\u66dc\u80b4\u9e5e\u7a88\u7e47\u9cd0",
  354 + "ye": "\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u8c12\u90ba\u63f6\u9980\u6654\u70e8\u94d8",
  355 + "yi": "\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u5208\u5293\u4f7e\u8bd2\u572a\u572f\u57f8\u61ff\u82e1\u858f\u5f08\u5955\u6339\u5f0b\u5453\u54a6\u54bf\u566b\u5cc4\u5db7\u7317\u9974\u603f\u6021\u6092\u6f2a\u8fe4\u9a7f\u7f22\u6baa\u8d3b\u65d6\u71a0\u9487\u9552\u9571\u75cd\u7617\u7654\u7fca\u8864\u8734\u8223\u7fbf\u7ff3\u914f\u9edf",
  356 + "yin": "\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690\u5370\u80e4\u911e\u5819\u831a\u5591\u72fa\u5924\u6c24\u94df\u763e\u8693\u972a\u9f88",
  357 + "ying": "\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u5b34\u90e2\u8314\u83ba\u8426\u6484\u5624\u81ba\u6ee2\u6f46\u701b\u745b\u748e\u6979\u9e66\u763f\u988d\u7f42",
  358 + "yo": "\u54df\u5537",
  359 + "yong": "\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u4fd1\u58c5\u5889\u6175\u9095\u955b\u752c\u9cd9\u9954",
  360 + "you": "\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u5363\u6538\u4f91\u83b8\u5466\u56ff\u5ba5\u67da\u7337\u7256\u94d5\u75a3\u8763\u9c7f\u9edd\u9f2c",
  361 + "yu": "\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u79ba\u6bd3\u4f1b\u4fe3\u8c00\u8c15\u8438\u84e3\u63c4\u5581\u5704\u5709\u5d5b\u72f3\u996b\u5ebe\u9608\u59aa\u59a4\u7ea1\u745c\u6631\u89ce\u8174\u6b24\u65bc\u715c\u71e0\u807f\u94b0\u9e46\u7610\u7600\u7ab3\u8753\u7afd\u8201\u96e9\u9f89",
  362 + "yuan": "\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u586c\u6c85\u5a9b\u7457\u6a7c\u7230\u7722\u9e22\u8788\u9f0b",
  363 + "yue": "\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u9fa0\u6a3e\u5216\u94ba",
  364 + "yun": "\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u90d3\u82b8\u72c1\u607d\u7ead\u6b92\u6600\u6c32",
  365 + "za": "\u531d\u7838\u6742\u62f6\u5482",
  366 + "zai": "\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u5d3d\u753e",
  367 + "zan": "\u6512\u6682\u8d5e\u74d2\u661d\u7c2a\u7ccc\u8db1\u933e",
  368 + "zang": "\u8d43\u810f\u846c\u5958\u6215\u81e7",
  369 + "zao": "\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u5523\u7f2b",
  370 + "ze": "\u8d23\u62e9\u5219\u6cfd\u4ec4\u8d5c\u5567\u8fee\u6603\u7b2e\u7ba6\u8234",
  371 + "zei": "\u8d3c",
  372 + "zen": "\u600e\u8c2e",
  373 + "zeng": "\u589e\u618e\u66fe\u8d60\u7f2f\u7511\u7f7e\u9503",
  374 + "zha": "\u624e\u55b3\u6e23\u672d\u8f67\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u63f8\u5412\u54a4\u54f3\u600d\u781f\u75c4\u86b1\u9f44",
  375 + "zhai": "\u6458\u658b\u5b85\u7a84\u503a\u5be8\u7826",
  376 + "zhan": "\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u8c35\u640c\u65c3",
  377 + "zhang": "\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u4ec9\u9123\u5e5b\u5d82\u7350\u5adc\u748b\u87d1",
  378 + "zhao": "\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u722a\u8bcf\u68f9\u948a\u7b0a",
  379 + "zhe": "\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u8c2a\u966c\u67d8\u8f84\u78d4\u9e67\u891a\u8707\u8d6d",
  380 + "zhen": "\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u7f1c\u6862\u699b\u8f78\u8d48\u80d7\u6715\u796f\u755b\u9e29",
  381 + "zheng": "\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f\u5e27\u75c7\u90d1\u8bc1\u8be4\u5ce5\u94b2\u94ee\u7b5d",
  382 + "zhi": "\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u536e\u965f\u90c5\u57f4\u82b7\u646d\u5e19\u5fee\u5f58\u54ab\u9a98\u6809\u67b3\u6800\u684e\u8f75\u8f7e\u6534\u8d3d\u81a3\u7949\u7957\u9ef9\u96c9\u9e37\u75e3\u86ed\u7d77\u916f\u8dd6\u8e2c\u8e2f\u8c78\u89ef",
  383 + "zhong": "\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u51a2\u953a\u87bd\u8202\u822f\u8e35",
  384 + "zhou": "\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u5544\u7740\u501c\u8bf9\u836e\u9b3b\u7ea3\u80c4\u78a1\u7c40\u8233\u914e\u9cb7",
  385 + "zhu": "\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51\u4f4f\u6ce8\u795d\u9a7b\u4f2b\u4f8f\u90be\u82ce\u8331\u6d19\u6e1a\u6f74\u9a7a\u677c\u69e0\u6a65\u70b7\u94e2\u75b0\u7603\u86b0\u7afa\u7bb8\u7fe5\u8e85\u9e88",
  386 + "zhua": "\u6293",
  387 + "zhuai": "\u62fd",
  388 + "zhuan": "\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u629f\u556d\u989b",
  389 + "zhuang": "\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u4e2c",
  390 + "zhui": "\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8411\u9a93\u7f12",
  391 + "zhun": "\u8c06\u51c6",
  392 + "zhuo": "\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u707c\u6d4a\u502c\u8bfc\u5ef4\u855e\u64e2\u555c\u6d5e\u6dbf\u6753\u712f\u799a\u65ab",
  393 + "zi": "\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u8c18\u5d6b\u59ca\u5b73\u7f01\u6893\u8f8e\u8d40\u6063\u7726\u9531\u79ed\u8014\u7b2b\u7ca2\u89dc\u8a3e\u9cbb\u9aed",
  394 + "zong": "\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u8159\u7cbd",
  395 + "zou": "\u90b9\u8d70\u594f\u63cd\u9139\u9cb0",
  396 + "zu": "\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u4fce\u83f9\u5550\u5f82\u9a75\u8e74",
  397 + "zuan": "\u94bb\u7e82\u6525\u7f35",
  398 + "zui": "\u5634\u9189\u6700\u7f6a",
  399 + "zun": "\u5c0a\u9075\u6499\u6a3d\u9cdf",
  400 + "zuo": "\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7\u961d\u963c\u80d9\u795a\u9162",
  401 + "cou": "\u85ae\u6971\u8f8f\u8160",
  402 + "nang": "\u652e\u54dd\u56d4\u9995\u66e9",
  403 + "o": "\u5594",
  404 + "dia": "\u55f2",
  405 + "chuai": "\u562c\u81aa\u8e39",
  406 + "cen": "\u5c91\u6d94",
  407 + "diu": "\u94e5",
  408 + "nou": "\u8028",
  409 + "fou": "\u7f36",
  410 + "bia": "\u9adf"
  411 + };
  412 +
  413 + //在数据中搜索
  414 + function search(letter) {
  415 + for (var name in py) {
  416 + if (py.hasOwnProperty(name)) {
  417 + if (py[name].indexOf(letter) != -1) {
  418 + return toUCFirst(name);
  419 + }
  420 + }
  421 + }
  422 + return false;
  423 + }
  424 +
  425 + //转换首字母大写
  426 + function toUCFirst(name) {
  427 + var first = name.substr(0, 1).toUpperCase();
  428 + var spare = name.substr(1, name.length);
  429 + return first + spare;
  430 + // return first;
  431 + }
  432 +
  433 + return {
  434 + convert: function (words) {
  435 + var long = words.length;
  436 + var result = '';
  437 + var reg = new RegExp('[a-zA-Z0-9\- ]');
  438 + for (var i = 0, letter, name; i < long; i++) {
  439 + letter = words.substr(i, 1);
  440 + if (reg.test(letter)) {
  441 + result += letter;
  442 + } else {
  443 + name = search(letter);
  444 + if (name !== false) {
  445 + result += name;
  446 + }
  447 + }
  448 + }
  449 + return result.replace(/[ -]+/g, '-');
  450 + }
  451 + }
  452 +
  453 +})();
  454 +
  455 +if (typeof(exports) == 'object') {
  456 + exports.PinYin = PinYin;
  457 +}
0 \ No newline at end of file 458 \ No newline at end of file
amWiki/js/raphael-min.js 0 → 100644
  1 +// ┌────────────────────────────────────────────────────────────────────┐ \\
  2 +// │ Raphaël 2.1.0 - JavaScript Vector Library │ \\
  3 +// ├────────────────────────────────────────────────────────────────────┤ \\
  4 +// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com) │ \\
  5 +// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com) │ \\
  6 +// ├────────────────────────────────────────────────────────────────────┤ \\
  7 +// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\
  8 +// └────────────────────────────────────────────────────────────────────┘ \\
  9 +
  10 +(function(a){var b="0.3.4",c="hasOwnProperty",d=/[\.\/]/,e="*",f=function(){},g=function(a,b){return a-b},h,i,j={n:{}},k=function(a,b){var c=j,d=i,e=Array.prototype.slice.call(arguments,2),f=k.listeners(a),l=0,m=!1,n,o=[],p={},q=[],r=h,s=[];h=a,i=0;for(var t=0,u=f.length;t<u;t++)"zIndex"in f[t]&&(o.push(f[t].zIndex),f[t].zIndex<0&&(p[f[t].zIndex]=f[t]));o.sort(g);while(o[l]<0){n=p[o[l++]],q.push(n.apply(b,e));if(i){i=d;return q}}for(t=0;t<u;t++){n=f[t];if("zIndex"in n)if(n.zIndex==o[l]){q.push(n.apply(b,e));if(i)break;do{l++,n=p[o[l]],n&&q.push(n.apply(b,e));if(i)break}while(n)}else p[n.zIndex]=n;else{q.push(n.apply(b,e));if(i)break}}i=d,h=r;return q.length?q:null};k.listeners=function(a){var b=a.split(d),c=j,f,g,h,i,k,l,m,n,o=[c],p=[];for(i=0,k=b.length;i<k;i++){n=[];for(l=0,m=o.length;l<m;l++){c=o[l].n,g=[c[b[i]],c[e]],h=2;while(h--)f=g[h],f&&(n.push(f),p=p.concat(f.f||[]))}o=n}return p},k.on=function(a,b){var c=a.split(d),e=j;for(var g=0,h=c.length;g<h;g++)e=e.n,!e[c[g]]&&(e[c[g]]={n:{}}),e=e[c[g]];e.f=e.f||[];for(g=0,h=e.f.length;g<h;g++)if(e.f[g]==b)return f;e.f.push(b);return function(a){+a==+a&&(b.zIndex=+a)}},k.stop=function(){i=1},k.nt=function(a){if(a)return(new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)")).test(h);return h},k.off=k.unbind=function(a,b){var f=a.split(d),g,h,i,k,l,m,n,o=[j];for(k=0,l=f.length;k<l;k++)for(m=0;m<o.length;m+=i.length-2){i=[m,1],g=o[m].n;if(f[k]!=e)g[f[k]]&&i.push(g[f[k]]);else for(h in g)g[c](h)&&i.push(g[h]);o.splice.apply(o,i)}for(k=0,l=o.length;k<l;k++){g=o[k];while(g.n){if(b){if(g.f){for(m=0,n=g.f.length;m<n;m++)if(g.f[m]==b){g.f.splice(m,1);break}!g.f.length&&delete g.f}for(h in g.n)if(g.n[c](h)&&g.n[h].f){var p=g.n[h].f;for(m=0,n=p.length;m<n;m++)if(p[m]==b){p.splice(m,1);break}!p.length&&delete g.n[h].f}}else{delete g.f;for(h in g.n)g.n[c](h)&&g.n[h].f&&delete g.n[h].f}g=g.n}}},k.once=function(a,b){var c=function(){var d=b.apply(this,arguments);k.unbind(a,c);return d};return k.on(a,c)},k.version=b,k.toString=function(){return"You are running Eve "+b},typeof module!="undefined"&&module.exports?module.exports=k:typeof define!="undefined"?define("eve",[],function(){return k}):a.eve=k})(this),function(){function cF(a){for(var b=0;b<cy.length;b++)cy[b].el.paper==a&&cy.splice(b--,1)}function cE(b,d,e,f,h,i){e=Q(e);var j,k,l,m=[],o,p,q,t=b.ms,u={},v={},w={};if(f)for(y=0,z=cy.length;y<z;y++){var x=cy[y];if(x.el.id==d.id&&x.anim==b){x.percent!=e?(cy.splice(y,1),l=1):k=x,d.attr(x.totalOrigin);break}}else f=+v;for(var y=0,z=b.percents.length;y<z;y++){if(b.percents[y]==e||b.percents[y]>f*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(var A in j)if(j[g](A))if(U[g](A)||d.paper.customAttributes[g](A)){u[A]=d.attr(A),u[A]==null&&(u[A]=T[A]),v[A]=j[A];switch(U[A]){case C:w[A]=(v[A]-u[A])/t;break;case"colour":u[A]=a.getRGB(u[A]);var B=a.getRGB(v[A]);w[A]={r:(B.r-u[A].r)/t,g:(B.g-u[A].g)/t,b:(B.b-u[A].b)/t};break;case"path":var D=bR(u[A],v[A]),E=D[1];u[A]=D[0],w[A]=[];for(y=0,z=u[A].length;y<z;y++){w[A][y]=[0];for(var F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(E[y][F]-u[A][y][F])/t}break;case"transform":var H=d._,I=ca(H[A],v[A]);if(I){u[A]=I.from,v[A]=I.to,w[A]=[],w[A].real=!0;for(y=0,z=u[A].length;y<z;y++){w[A][y]=[u[A][y][0]];for(F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(v[A][y][F]-u[A][y][F])/t}}else{var J=d.matrix||new cb,K={_:{transform:H.transform},getBBox:function(){return d.getBBox(1)}};u[A]=[J.a,J.b,J.c,J.d,J.e,J.f],b$(K,v[A]),v[A]=K._.transform,w[A]=[(K.matrix.a-J.a)/t,(K.matrix.b-J.b)/t,(K.matrix.c-J.c)/t,(K.matrix.d-J.d)/t,(K.matrix.e-J.e)/t,(K.matrix.f-J.f)/t]}break;case"csv":var L=r(j[A])[s](c),M=r(u[A])[s](c);if(A=="clip-rect"){u[A]=M,w[A]=[],y=M.length;while(y--)w[A][y]=(L[y]-u[A][y])/t}v[A]=L;break;default:L=[][n](j[A]),M=[][n](u[A]),w[A]=[],y=d.paper.customAttributes[A].length;while(y--)w[A][y]=((L[y]||0)-(M[y]||0))/t}}var O=j.easing,P=a.easing_formulas[O];if(!P){P=r(O).match(N);if(P&&P.length==5){var R=P;P=function(a){return cC(a,+R[1],+R[2],+R[3],+R[4],t)}}else P=bf}q=j.start||b.start||+(new Date),x={anim:b,percent:e,timestamp:q,start:q+(b.del||0),status:0,initstatus:f||0,stop:!1,ms:t,easing:P,from:u,diff:w,to:v,el:d,callback:j.callback,prev:p,next:o,repeat:i||b.times,origin:d.attr(),totalOrigin:h},cy.push(x);if(f&&!k&&!l){x.stop=!0,x.start=new Date-t*f;if(cy.length==1)return cA()}l&&(x.start=new Date-x.ms*f),cy.length==1&&cz(cA)}else k.initstatus=f,k.start=new Date-k.ms*f;eve("raphael.anim.start."+d.id,d,b)}}function cD(a,b){var c=[],d={};this.ms=b,this.times=1;if(a){for(var e in a)a[g](e)&&(d[Q(e)]=a[e],c.push(Q(e)));c.sort(bd)}this.anim=d,this.top=c[c.length-1],this.percents=c}function cC(a,b,c,d,e,f){function o(a,b){var c,d,e,f,j,k;for(e=a,k=0;k<8;k++){f=m(e)-a;if(z(f)<b)return e;j=(3*i*e+2*h)*e+g;if(z(j)<1e-6)break;e=e-f/j}c=0,d=1,e=a;if(e<c)return c;if(e>d)return d;while(c<d){f=m(e);if(z(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cq(){return this.x+q+this.y+q+this.width+" × "+this.height}function cp(){return this.x+q+this.y}function cb(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bH(b,c,d){b=a._path2curve(b),c=a._path2curve(c);var e,f,g,h,i,j,k,l,m,n,o=d?0:[];for(var p=0,q=b.length;p<q;p++){var r=b[p];if(r[0]=="M")e=i=r[1],f=j=r[2];else{r[0]=="C"?(m=[e,f].concat(r.slice(1)),e=m[6],f=m[7]):(m=[e,f,e,f,i,j,i,j],e=i,f=j);for(var s=0,t=c.length;s<t;s++){var u=c[s];if(u[0]=="M")g=k=u[1],h=l=u[2];else{u[0]=="C"?(n=[g,h].concat(u.slice(1)),g=n[6],h=n[7]):(n=[g,h,g,h,k,l,k,l],g=k,h=l);var v=bG(m,n,d);if(d)o+=v;else{for(var w=0,x=v.length;w<x;w++)v[w].segment1=p,v[w].segment2=s,v[w].bez1=m,v[w].bez2=n;o=o.concat(v)}}}}}return o}function bG(b,c,d){var e=a.bezierBBox(b),f=a.bezierBBox(c);if(!a.isBBoxIntersect(e,f))return d?0:[];var g=bB.apply(0,b),h=bB.apply(0,c),i=~~(g/5),j=~~(h/5),k=[],l=[],m={},n=d?0:[];for(var o=0;o<i+1;o++){var p=a.findDotsAtSegment.apply(a,b.concat(o/i));k.push({x:p.x,y:p.y,t:o/i})}for(o=0;o<j+1;o++)p=a.findDotsAtSegment.apply(a,c.concat(o/j)),l.push({x:p.x,y:p.y,t:o/j});for(o=0;o<i;o++)for(var q=0;q<j;q++){var r=k[o],s=k[o+1],t=l[q],u=l[q+1],v=z(s.x-r.x)<.001?"y":"x",w=z(u.x-t.x)<.001?"y":"x",x=bD(r.x,r.y,s.x,s.y,t.x,t.y,u.x,u.y);if(x){if(m[x.x.toFixed(4)]==x.y.toFixed(4))continue;m[x.x.toFixed(4)]=x.y.toFixed(4);var y=r.t+z((x[v]-r[v])/(s[v]-r[v]))*(s.t-r.t),A=t.t+z((x[w]-t[w])/(u[w]-t[w]))*(u.t-t.t);y>=0&&y<=1&&A>=0&&A<=1&&(d?n++:n.push({x:x.x,y:x.y,t1:y,t2:A}))}}return n}function bF(a,b){return bG(a,b,1)}function bE(a,b){return bG(a,b)}function bD(a,b,c,d,e,f,g,h){if(!(x(a,c)<y(e,g)||y(a,c)>x(e,g)||x(b,d)<y(f,h)||y(b,d)>x(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(!k)return;var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(n<+y(a,c).toFixed(2)||n>+x(a,c).toFixed(2)||n<+y(e,g).toFixed(2)||n>+x(e,g).toFixed(2)||o<+y(b,d).toFixed(2)||o>+x(b,d).toFixed(2)||o<+y(f,h).toFixed(2)||o>+x(f,h).toFixed(2))return;return{x:l,y:m}}}function bC(a,b,c,d,e,f,g,h,i){if(!(i<0||bB(a,b,c,d,e,f,g,h)<i)){var j=1,k=j/2,l=j-k,m,n=.01;m=bB(a,b,c,d,e,f,g,h,l);while(z(m-i)>n)k/=2,l+=(m<i?1:-1)*k,m=bB(a,b,c,d,e,f,g,h,l);return l}}function bB(a,b,c,d,e,f,g,h,i){i==null&&(i=1),i=i>1?1:i<0?0:i;var j=i/2,k=12,l=[-0.1252,.1252,-0.3678,.3678,-0.5873,.5873,-0.7699,.7699,-0.9041,.9041,-0.9816,.9816],m=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],n=0;for(var o=0;o<k;o++){var p=j*l[o]+j,q=bA(p,a,c,e,g),r=bA(p,b,d,f,h),s=q*q+r*r;n+=m[o]*w.sqrt(s)}return j*n}function bA(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function by(a,b){var c=[];for(var d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function bx(){return this.hex}function bv(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bu(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bu(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function bm(a){if(Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[g](c)&&(b[c]=bm(a[c]));return b}function a(c){if(a.is(c,"function"))return b?c():eve.on("raphael.DOMload",c);if(a.is(c,E))return a._engine.create[m](a,c.splice(0,3+a.is(c[0],C))).add(c);var d=Array.prototype.slice.call(arguments,0);if(a.is(d[d.length-1],"function")){var e=d.pop();return b?e.call(a._engine.create[m](a,d)):eve.on("raphael.DOMload",function(){e.call(a._engine.create[m](a,d))})}return a._engine.create[m](a,arguments)}a.version="2.1.0",a.eve=eve;var b,c=/[, ]+/,d={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},e=/\{(\d+)\}/g,f="prototype",g="hasOwnProperty",h={doc:document,win:window},i={was:Object.prototype[g].call(h.win,"Raphael"),is:h.win.Raphael},j=function(){this.ca=this.customAttributes={}},k,l="appendChild",m="apply",n="concat",o="createTouch"in h.doc,p="",q=" ",r=String,s="split",t="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[s](q),u={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},v=r.prototype.toLowerCase,w=Math,x=w.max,y=w.min,z=w.abs,A=w.pow,B=w.PI,C="number",D="string",E="array",F="toString",G="fill",H=Object.prototype.toString,I={},J="push",K=a._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,L=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,M={NaN:1,Infinity:1,"-Infinity":1},N=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,O=w.round,P="setAttribute",Q=parseFloat,R=parseInt,S=r.prototype.toUpperCase,T=a._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},U=a._availableAnimAttrs={blur:C,"clip-rect":"csv",cx:C,cy:C,fill:"colour","fill-opacity":C,"font-size":C,height:C,opacity:C,path:"path",r:C,rx:C,ry:C,stroke:"colour","stroke-opacity":C,"stroke-width":C,transform:"transform",width:C,x:C,y:C},V=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]/g,W=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,X={hs:1,rg:1},Y=/,?([achlmqrstvxz]),?/gi,Z=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,$=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,_=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig,ba=a._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,bb={},bc=function(a,b){return a.key-b.key},bd=function(a,b){return Q(a)-Q(b)},be=function(){},bf=function(a){return a},bg=a._rectPath=function(a,b,c,d,e){if(e)return[["M",a+e,b],["l",c-e*2,0],["a",e,e,0,0,1,e,e],["l",0,d-e*2],["a",e,e,0,0,1,-e,e],["l",e*2-c,0],["a",e,e,0,0,1,-e,-e],["l",0,e*2-d],["a",e,e,0,0,1,e,-e],["z"]];return[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},bh=function(a,b,c,d){d==null&&(d=c);return[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},bi=a._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return bg(b.x,b.y,b.width,b.height)}},bj=a.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;a=bR(a);for(e=0,g=a.length;e<g;e++){i=a[e];for(f=1,h=i.length;f<h;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d}return a};a._g=h,a.type=h.win.SVGAngle||h.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML";if(a.type=="VML"){var bk=h.doc.createElement("div"),bl;bk.innerHTML='<v:shape adj="1"/>',bl=bk.firstChild,bl.style.behavior="url(#default#VML)";if(!bl||typeof bl.adj!="object")return a.type=p;bk=null}a.svg=!(a.vml=a.type=="VML"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b=="finite")return!M[g](+a);if(b=="array")return a instanceof Array;return b=="null"&&a===null||b==typeof a&&a!==null||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(f<d)return c-f;if(f>b-d)return c-f+b}return c};var bn=a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve("raphael.setWindow",a,h.win,b),h.win=b,h.doc=h.win.document,a._engine.initWin&&a._engine.initWin(h.win)};var bo=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bo=bv(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=h.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",h.doc.body.appendChild(i),bo=bv(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bo(b)},bp=function(){return"hsb("+[this.h,this.s,this.b]+")"},bq=function(){return"hsl("+[this.h,this.s,this.l]+")"},br=function(){return this.hex},bs=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bt=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:br};a.is(e,"finite")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=br;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bp}},a.rgb2hsl=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bq}},a._path2string=function(){return this.join(",").replace(Y,"$1")};var bw=a._preload=function(a,b){var c=h.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bv(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:bx};!X[g](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bo(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bx},k.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx}},a),a.hsb=bv(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bv(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bv(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=function(b){if(!b)return null;var c=bz(b);if(c.arr)return bJ(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];a.is(b,E)&&a.is(b[0],E)&&(e=bJ(b)),e.length||r(b).replace(Z,function(a,b,c){var f=[],g=b.toLowerCase();c.replace(_,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(e.push([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");if(g=="r")e.push([b][n](f));else while(f.length>=d[g]){e.push([b][n](f.splice(0,d[g])));if(!d[g])break}}),e.toString=a._path2string,c.arr=bJ(e);return e},a.parseTransformString=bv(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=bJ(b)),d.length||r(b).replace($,function(a,b,c){var e=[],f=v.call(b);c.replace(_,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d});var bz=function(a){var b=bz.ps=bz.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[g](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r<t)&&(z+=180);return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:x,y:y},alpha:z}},a.bezierBBox=function(b,c,d,e,f,g,h,i){a.is(b,"array")||(b=[b,c,d,e,f,g,h,i]);var j=bQ.apply(null,b);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},a.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},a.isBBoxIntersect=function(b,c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.x<c.x2&&b.x>c.x||c.x<b.x2&&c.x>b.x)&&(b.y<c.y2&&b.y>c.y||c.y<b.y2&&c.y>b.y)},a.pathIntersection=function(a,b){return bH(a,b)},a.pathIntersectionNumber=function(a,b){return bH(a,b,1)},a.isPointInsidePath=function(b,c,d){var e=a.pathBBox(b);return a.isPointInsideBBox(e,c,d)&&bH(b,[["M",c,d],["H",e.x2+10]],1)%2==1},a._removedFactory=function(a){return function(){eve("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var bI=a.pathBBox=function(a){var b=bz(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=bR(a);var c=0,d=0,e=[],f=[],g;for(var h=0,i=a.length;h<i;h++){g=a[h];if(g[0]=="M")c=g[1],d=g[2],e.push(c),f.push(d);else{var j=bQ(c,d,g[1],g[2],g[3],g[4],g[5],g[6]);e=e[n](j.min.x,j.max.x),f=f[n](j.min.y,j.max.y),c=g[5],d=g[6]}}var k=y[m](0,e),l=y[m](0,f),o=x[m](0,e),p=x[m](0,f),q={x:k,y:l,x2:o,y2:p,width:o-k,height:p-l};b.bbox=bm(q);return q},bJ=function(b){var c=bm(b);c.toString=a._path2string;return c},bK=a._pathToRelative=function(b){var c=bz(b);if(c.rel)return bJ(c.rel);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=b[0][1],f=b[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=b.length;j<k;j++){var l=d[j]=[],m=b[j];if(m[0]!=v.call(m[0])){l[0]=v.call(m[0]);switch(l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;n<o;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}}else{l=d[j]=[],m[0]=="m"&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;p<q;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}d.toString=a._path2string,c.rel=bJ(d);return d},bL=a._pathToAbsolute=function(b){var c=bz(b);if(c.abs)return bJ(c.abs);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);if(!b||!b.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=+b[0][1],f=+b[0][2],g=e,h=f,i++,d[0]=["M",e,f]);var j=b.length==3&&b[0][0]=="M"&&b[1][0].toUpperCase()=="R"&&b[2][0].toUpperCase()=="Z";for(var k,l,m=i,o=b.length;m<o;m++){d.push(k=[]),l=b[m];if(l[0]!=S.call(l[0])){k[0]=S.call(l[0]);switch(k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":var p=[e,f][n](l.slice(1));for(var q=2,r=p.length;q<r;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[n](by(p,j));break;case"M":g=+l[1]+e,h=+l[2]+f;default:for(q=1,r=l.length;q<r;q++)k[q]=+l[q]+(q%2?e:f)}}else if(l[0]=="R")p=[e,f][n](l.slice(1)),d.pop(),d=d[n](by(p,j)),k=["R"][n](l.slice(-2));else for(var s=0,t=l.length;s<t;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=h;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],h=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}d.toString=a._path2string,c.abs=bJ(d);return d},bM=function(a,b,c,d){return[a,b,c,d,c,d]},bN=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},bO=function(a,b,c,d,e,f,g,h,i,j){var k=B*120/180,l=B/180*(+e||0),m=[],o,p=bv(function(a,b,c){var d=a*w.cos(c)-b*w.sin(c),e=a*w.sin(c)+b*w.cos(c);return{x:d,y:e}});if(!j){o=p(a,b,-l),a=o.x,b=o.y,o=p(h,i,-l),h=o.x,i=o.y;var q=w.cos(B/180*e),r=w.sin(B/180*e),t=(a-h)/2,u=(b-i)/2,v=t*t/(c*c)+u*u/(d*d);v>1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=a<C?B-E:E,F=h<C?B-F:F,E<0&&(E=B*2+E),F<0&&(F=B*2+F),g&&E>F&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bO(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](",");var V=[];for(var W=0,X=m.length;W<X;W++)V[W]=W%2?p(m[W-1],m[W],l).y:p(m[W],m[W+1],l).x;return V},bP=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:A(j,3)*a+A(j,2)*3*i*c+j*3*i*i*e+A(i,3)*g,y:A(j,3)*b+A(j,2)*3*i*d+j*3*i*i*f+A(i,3)*h}},bQ=bv(function(a,b,c,d,e,f,g,h){var i=e-2*c+a-(g-2*e+c),j=2*(c-a)-2*(e-c),k=a-c,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,o=[b,h],p=[a,g],q;z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bR=a._path2curve=bv(function(a,b){var c=!b&&bz(a);if(!b&&c.curve)return bJ(c.curve);var d=bL(a),e=b&&bL(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bO[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bN(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bN(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](bM(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](bM(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](bM(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](bM(b.x,b.y,b.X,b.Y))}return a},i=function(a,b){if(a[b].length>7){a[b].shift();var c=a[b];while(c.length)a.splice(b++,0,["C"][n](c.splice(0,6)));a.splice(b,1),l=x(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=x(d.length,e&&e.length||0))};for(var k=0,l=x(d.length,e&&e.length||0);k<l;k++){d[k]=h(d[k],f),i(d,k),e&&(e[k]=h(e[k],g)),e&&i(e,k),j(d,e,f,g,k),j(e,d,g,f,k);var o=d[k],p=e&&e[k],q=o.length,r=e&&p.length;f.x=o[q-2],f.y=o[q-1],f.bx=Q(o[q-4])||f.x,f.by=Q(o[q-3])||f.y,g.bx=e&&(Q(p[r-4])||g.x),g.by=e&&(Q(p[r-3])||g.y),g.x=e&&p[r-2],g.y=e&&p[r-1]}e||(c.curve=bJ(d));return e?[d,e]:d},null,bJ),bS=a._parseDots=bv(function(b){var c=[];for(var d=0,e=b.length;d<e;d++){var f={},g=b[d].match(/^([^:]*):?([\d\.]*)/);f.color=a.getRGB(g[1]);if(f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;d<e;d++)if(!c[d].offset){var h=Q(c[d-1].offset||0),i=0;for(var j=d+1;j<e;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=Q(i);var k=(i-h)/(j-d+1);for(;d<j;d++)h+=k,c[d].offset=h+"%"}return c}),bT=a._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)},bU=a._tofront=function(a,b){b.top!==a&&(bT(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},bV=a._toback=function(a,b){b.bottom!==a&&(bT(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},bW=a._insertafter=function(a,b,c){bT(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},bX=a._insertbefore=function(a,b,c){bT(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},bY=a.toMatrix=function(a,b){var c=bI(a),d={_:{transform:p},getBBox:function(){return c}};b$(d,b);return d.matrix},bZ=a.transformPath=function(a,b){return bj(a,bY(a,b))},b$=a._extractTransform=function(b,c){if(c==null)return b._.transform;c=r(c).replace(/\.{3}|\u2026/g,b._.transform||p);var d=a.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=b._,k=new cb;j.transform=d||[];if(d)for(var l=0,m=d.length;l<m;l++){var n=d[l],o=n.length,q=r(n[0]).toLowerCase(),s=n[0]!=q,t=s?k.invert():0,u,v,w,x,y;q=="t"&&o==3?s?(u=t.x(0,0),v=t.y(0,0),w=t.x(n[1],n[2]),x=t.y(n[1],n[2]),k.translate(w-u,x-v)):k.translate(n[1],n[2]):q=="r"?o==2?(y=y||b.getBBox(1),k.rotate(n[1],y.x+y.width/2,y.y+y.height/2),e+=n[1]):o==4&&(s?(w=t.x(n[2],n[3]),x=t.y(n[2],n[3]),k.rotate(n[1],w,x)):k.rotate(n[1],n[2],n[3]),e+=n[1]):q=="s"?o==2||o==3?(y=y||b.getBBox(1),k.scale(n[1],n[o-1],y.x+y.width/2,y.y+y.height/2),h*=n[1],i*=n[o-1]):o==5&&(s?(w=t.x(n[3],n[4]),x=t.y(n[3],n[4]),k.scale(n[1],n[2],w,x)):k.scale(n[1],n[2],n[3],n[4]),h*=n[1],i*=n[2]):q=="m"&&o==7&&k.add(n[1],n[2],n[3],n[4],n[5],n[6]),j.dirtyT=1,b.matrix=k}b.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,h==1&&i==1&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1},b_=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return a.length==4?[b,0,a[2],a[3]]:[b,0];case"s":return a.length==5?[b,1,1,a[3],a[4]]:a.length==3?[b,1,1]:[b,1]}},ca=a._equaliseTransform=function(b,c){c=r(c).replace(/\.{3}|\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];var d=x(b.length,c.length),e=[],f=[],g=0,h,i,j,k;for(;g<d;g++){j=b[g]||b_(c[g]),k=c[g]||b_(j);if(j[0]!=k[0]||j[0].toLowerCase()=="r"&&(j[2]!=k[2]||j[3]!=k[3])||j[0].toLowerCase()=="s"&&(j[3]!=k[3]||j[4]!=k[4]))return;e[g]=[],f[g]=[];for(h=0,i=x(j.length,k.length);h<i;h++)h in j&&(e[g][h]=j[h]),h in k&&(f[g][h]=k[h])}return{from:e,to:f}};a._getContainer=function(b,c,d,e){var f;f=e==null&&!a.is(b,"object")?h.doc.getElementById(b):b;if(f!=null){if(f.tagName)return c==null?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d};return{container:1,x:b,y:c,width:d,height:e}}},a.pathToRelative=bK,a._engine={},a.path2curve=bR,a.matrix=function(a,b,c,d,e,f){return new cb(a,b,c,d,e,f)},function(b){function d(a){var b=w.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}function c(a){return a[0]*a[0]+a[1]*a[1]}b.add=function(a,b,c,d,e,f){var g=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],i=[[a,c,e],[b,d,f],[0,0,1]],j,k,l,m;a&&a instanceof cb&&(i=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(j=0;j<3;j++)for(k=0;k<3;k++){m=0;for(l=0;l<3;l++)m+=h[j][l]*i[l][k];g[j][k]=m}this.a=g[0][0],this.b=g[1][0],this.c=g[0][1],this.d=g[1][1],this.e=g[0][2],this.f=g[1][2]},b.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new cb(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},b.clone=function(){return new cb(this.a,this.b,this.c,this.d,this.e,this.f)},b.translate=function(a,b){this.add(1,0,0,1,a,b)},b.scale=function(a,b,c,d){b==null&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},b.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var e=+w.cos(b).toFixed(9),f=+w.sin(b).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},b.x=function(a,b){return a*this.a+b*this.c+this.e},b.y=function(a,b){return a*this.b+b*this.d+this.f},b.get=function(a){return+this[r.fromCharCode(97+a)].toFixed(4)},b.toString=function(){return a.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},b.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},b.split=function(){var b={};b.dx=this.e,b.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];b.scalex=w.sqrt(c(e[0])),d(e[0]),b.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*b.shear,e[1][1]-e[0][1]*b.shear],b.scaley=w.sqrt(c(e[1])),d(e[1]),b.shear/=b.scaley;var f=-e[0][1],g=e[1][1];g<0?(b.rotate=a.deg(w.acos(g)),f<0&&(b.rotate=360-b.rotate)):b.rotate=a.deg(w.asin(f)),b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b},b.toTransformString=function(a){var b=a||this[s]();if(b.isSimple){b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4);return(b.dx||b.dy?"t"+[b.dx,b.dy]:p)+(b.scalex!=1||b.scaley!=1?"s"+[b.scalex,b.scaley,0,0]:p)+(b.rotate?"r"+[b.rotate,0,0]:p)}return"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(cb.prototype);var cc=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);navigator.vendor=="Apple Computer, Inc."&&(cc&&cc[1]<4||navigator.platform.slice(0,2)=="iP")||navigator.vendor=="Google Inc."&&cc&&cc[1]<8?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:k.safari=be;var cd=function(){this.returnValue=!1},ce=function(){return this.originalEvent.preventDefault()},cf=function(){this.cancelBubble=!0},cg=function(){return this.originalEvent.stopPropagation()},ch=function(){if(h.doc.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,f=function(e){var f=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,i=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,j=e.clientX+i,k=e.clientY+f;if(o&&u[g](b))for(var l=0,m=e.targetTouches&&e.targetTouches.length;l<m;l++)if(e.targetTouches[l].target==a){var n=e;e=e.targetTouches[l],e.originalEvent=n,e.preventDefault=ce,e.stopPropagation=cg;break}return c.call(d,e,j,k)};a.addEventListener(e,f,!1);return function(){a.removeEventListener(e,f,!1);return!0}};if(h.doc.attachEvent)return function(a,b,c,d){var e=function(a){a=a||h.win.event;var b=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;a.preventDefault=a.preventDefault||cd,a.stopPropagation=a.stopPropagation||cf;return c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){a.detachEvent("on"+b,e);return!0};return f}}(),ci=[],cj=function(a){var b=a.clientX,c=a.clientY,d=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f,g=ci.length;while(g--){f=ci[g];if(o){var i=a.touches.length,j;while(i--){j=a.touches[i];if(j.identifier==f.el._drag.id){b=j.clientX,c=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}}else a.preventDefault();var k=f.el.node,l,m=k.nextSibling,n=k.parentNode,p=k.style.display;h.win.opera&&n.removeChild(k),k.style.display="none",l=f.el.paper.getElementByPoint(b,c),k.style.display=p,h.win.opera&&(m?n.insertBefore(k,m):n.appendChild(k)),l&&eve("raphael.drag.over."+f.el.id,f.el,l),b+=e,c+=d,eve("raphael.drag.move."+f.el.id,f.move_scope||f.el,b-f.el._drag.x,c-f.el._drag.y,b,c,a)}},ck=function(b){a.unmousemove(cj).unmouseup(ck);var c=ci.length,d;while(c--)d=ci[c],d.el._drag={},eve("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,b);ci=[]},cl=a.el={};for(var cm=t.length;cm--;)(function(b){a[b]=cl[b]=function(c,d){a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:ch(this.shape||this.node||h.doc,b,c,d||this)}));return this},a["un"+b]=cl["un"+b]=function(a){var c=this.events||[],d=c.length;while(d--)if(c[d].name==b&&c[d].f==a){c[d].unbind(),c.splice(d,1),!c.length&&delete this.events;return this}return this}})(t[cm]);cl.data=function(b,c){var d=bb[this.id]=bb[this.id]||{};if(arguments.length==1){if(a.is(b,"object")){for(var e in b)b[g](e)&&this.data(e,b[e]);return this}eve("raphael.data.get."+this.id,this,d[b],b);return d[b]}d[b]=c,eve("raphael.data.set."+this.id,this,c,b);return this},cl.removeData=function(a){a==null?bb[this.id]={}:bb[this.id]&&delete bb[this.id][a];return this},cl.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},cl.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var cn=[];cl.drag=function(b,c,d,e,f,g){function i(i){(i.originalEvent||i).preventDefault();var j=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,k=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft;this._drag.x=i.clientX+k,this._drag.y=i.clientY+j,this._drag.id=i.identifier,!ci.length&&a.mousemove(cj).mouseup(ck),ci.push({el:this,move_scope:e,start_scope:f,end_scope:g}),c&&eve.on("raphael.drag.start."+this.id,c),b&&eve.on("raphael.drag.move."+this.id,b),d&&eve.on("raphael.drag.end."+this.id,d),eve("raphael.drag.start."+this.id,f||e||this,i.clientX+k,i.clientY+j,i)}this._drag={},cn.push({el:this,start:i}),this.mousedown(i);return this},cl.onDragOver=function(a){a?eve.on("raphael.drag.over."+this.id,a):eve.unbind("raphael.drag.over."+this.id)},cl.undrag=function(){var b=cn.length;while(b--)cn[b].el==this&&(this.unmousedown(cn[b].start),cn.splice(b,1),eve.unbind("raphael.drag.*."+this.id));!cn.length&&a.unmousemove(cj).unmouseup(ck)},k.circle=function(b,c,d){var e=a._engine.circle(this,b||0,c||0,d||0);this.__set__&&this.__set__.push(e);return e},k.rect=function(b,c,d,e,f){var g=a._engine.rect(this,b||0,c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.ellipse=function(b,c,d,e){var f=a._engine.ellipse(this,b||0,c||0,d||0,e||0);this.__set__&&this.__set__.push(f);return f},k.path=function(b){b&&!a.is(b,D)&&!a.is(b[0],E)&&(b+=p);var c=a._engine.path(a.format[m](a,arguments),this);this.__set__&&this.__set__.push(c);return c},k.image=function(b,c,d,e,f){var g=a._engine.image(this,b||"about:blank",c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.text=function(b,c,d){var e=a._engine.text(this,b||0,c||0,r(d));this.__set__&&this.__set__.push(e);return e},k.set=function(b){!a.is(b,"array")&&(b=Array.prototype.splice.call(arguments,0,arguments.length));var c=new cG(b);this.__set__&&this.__set__.push(c);return c},k.setStart=function(a){this.__set__=a||this.set()},k.setFinish=function(a){var b=this.__set__;delete this.__set__;return b},k.setSize=function(b,c){return a._engine.setSize.call(this,b,c)},k.setViewBox=function(b,c,d,e,f){return a._engine.setViewBox.call(this,b,c,d,e,f)},k.top=k.bottom=null,k.raphael=a;var co=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,i=b.top+(h.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(h.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:i,x:j}};k.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=h.doc.elementFromPoint(a,b);if(h.win.opera&&e.tagName=="svg"){var f=co(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var i=d.getIntersectionList(g,null);i.length&&(e=i[i.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},k.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},k.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},k.getElementsByPoint=function(a,b){var c=this.set();this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)});return c},cl.isPointInside=function(b,c){var d=this.realPath=this.realPath||bi[this.type](this);return a.isPointInsidePath(d,b,c)},cl.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bi[this.type](this),b.bboxwt=bI(this.realPath),b.bboxwt.toString=cq,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bi[this.type](this);b.bbox=bI(bj(this.realPath,this.matrix)),b.bbox.toString=cq,b.dirty=b.dirtyT=0}return b.bbox},cl.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a},cl.glow=function(a){if(this.type=="text")return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bi[this.type](this);f=this.matrix?bj(f,this.matrix):f;for(var g=1;g<c+1;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cr={},cs=function(b,c,d,e,f,g,h,i,j){return j==null?bB(b,c,d,e,f,g,h,i):a.findDotsAtSegment(b,c,d,e,f,g,h,i,bC(b,c,d,e,f,g,h,i,j))},ct=function(b,c){return function(d,e,f){d=bR(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;o<p;o++){i=d[o];if(i[0]=="M")g=+i[1],h=+i[2];else{j=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6]);if(n+j>e){if(c&&!l.start){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cu=ct(1),cv=ct(),cw=ct(0,1);a.getTotalLength=cu,a.getPointAtLength=cv,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cw(a,b).end;var d=cw(a,c,1);return b?cw(d,b).end:d},cl.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cu(this.attrs.path)}},cl.getPointAtLength=function(a){if(this.type=="path")return cv(this.attrs.path,a)},cl.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cx=a.easing_formulas={linear:function(a){return a},"<":function(a){return A(a,1.7)},">":function(a){return A(a,.48)},"<>":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cx.easeIn=cx["ease-in"]=cx["<"],cx.easeOut=cx["ease-out"]=cx[">"],cx.easeInOut=cx["ease-in-out"]=cx["<>"],cx["back-in"]=cx.backIn,cx["back-out"]=cx.backOut;var cy=[],cz=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cA=function(){var b=+(new Date),c=0;for(;c<cy.length;c++){var d=cy[c];if(d.el.removed||d.paused)continue;var e=b-d.start,f=d.ms,h=d.easing,i=d.from,j=d.diff,k=d.to,l=d.t,m=d.el,o={},p,r={},s;d.initstatus?(e=(d.initstatus*d.anim.top-d.prev)/(d.percent-d.prev)*f,d.status=d.initstatus,delete d.initstatus,d.stop&&cy.splice(c--,1)):d.status=(d.prev+(d.percent-d.prev)*(e/f))/d.anim.top;if(e<0)continue;if(e<f){var t=h(e/f);for(var u in i)if(i[g](u)){switch(U[u]){case C:p=+i[u]+t*f*j[u];break;case"colour":p="rgb("+[cB(O(i[u].r+t*f*j[u].r)),cB(O(i[u].g+t*f*j[u].g)),cB(O(i[u].b+t*f*j[u].b))].join(",")+")";break;case"path":p=[];for(var v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(var x=1,y=i[u][v].length;x<y;x++)p[v][x]=+i[u][v][x]+t*f*j[u][v][x];p[v]=p[v].join(q)}p=p.join(q);break;case"transform":if(j[u].real){p=[];for(v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(x=1,y=i[u][v].length;x<y;x++)p[v][x]=i[u][v][x]+t*f*j[u][v][x]}}else{var z=function(a){return+i[u][a]+t*f*j[u][a]};p=[["m",z(0),z(1),z(2),z(3),z(4),z(5)]]}break;case"csv":if(u=="clip-rect"){p=[],v=4;while(v--)p[v]=+i[u][v]+t*f*j[u][v]}break;default:var A=[][n](i[u]);p=[],v=m.paper.customAttributes[u].length;while(v--)p[v]=+A[v]+t*f*j[u][v]}o[u]=p}m.attr(o),function(a,b,c){setTimeout(function(){eve("raphael.anim.frame."+a,b,c)})}(m.id,m,d.anim)}else{(function(b,c,d){setTimeout(function(){eve("raphael.anim.frame."+c.id,c,d),eve("raphael.anim.finish."+c.id,c,d),a.is(b,"function")&&b.call(c)})})(d.callback,m,d.anim),m.attr(k),cy.splice(c--,1);if(d.repeat>1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cE(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cE(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cy.length&&cz(cA)},cB=function(a){return a>255?255:a<0?0:a};cl.animateWith=function(b,c,d,e,f,g){var h=this;if(h.removed){g&&g.call(h);return h}var i=d instanceof cD?d:a.animation(d,e,f,g),j,k;cE(i,h,i.percents[0],null,h.attr());for(var l=0,m=cy.length;l<m;l++)if(cy[l].anim==c&&cy[l].el==b){cy[m-1].start=cy[l].start;break}return h},cl.onAnimation=function(a){a?eve.on("raphael.anim.frame."+this.id,a):eve.unbind("raphael.anim.frame."+this.id);return this},cD.prototype.delay=function(a){var b=new cD(this.anim,this.ms);b.times=this.times,b.del=+a||0;return b},cD.prototype.repeat=function(a){var b=new cD(this.anim,this.ms);b.del=this.del,b.times=w.floor(x(a,0))||1;return b},a.animation=function(b,c,d,e){if(b instanceof cD)return b;if(a.is(d,"function")||!d)e=e||d||null,d=null;b=Object(b),c=+c||0;var f={},h,i;for(i in b)b[g](i)&&Q(i)!=i&&Q(i)+"%"!=i&&(h=!0,f[i]=b[i]);if(!h)return new cD(b,c);d&&(f.easing=d),e&&(f.callback=e);return new cD({100:f},c)},cl.animate=function(b,c,d,e){var f=this;if(f.removed){e&&e.call(f);return f}var g=b instanceof cD?b:a.animation(b,c,d,e);cE(g,f,g.percents[0],null,f.attr());return f},cl.setTime=function(a,b){a&&b!=null&&this.status(a,y(b,a.ms)/a.ms);return this},cl.status=function(a,b){var c=[],d=0,e,f;if(b!=null){cE(a,this,-1,y(b,1));return this}e=cy.length;for(;d<e;d++){f=cy[d];if(f.el.id==this.id&&(!a||f.anim==a)){if(a)return f.status;c.push({anim:f.anim,status:f.status})}}if(a)return 0;return c},cl.pause=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.pause."+this.id,this,cy[b].anim)!==!1&&(cy[b].paused=!0);return this},cl.resume=function(a){for(var b=0;b<cy.length;b++)if(cy[b].el.id==this.id&&(!a||cy[b].anim==a)){var c=cy[b];eve("raphael.anim.resume."+this.id,this,c.anim)!==!1&&(delete c.paused,this.status(c.anim,c.status))}return this},cl.stop=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.stop."+this.id,this,cy[b].anim)!==!1&&cy.splice(b--,1);return this},eve.on("raphael.remove",cF),eve.on("raphael.clear",cF),cl.toString=function(){return"Raphaël’s object"};var cG=function(a){this.items=[],this.length=0,this.type="set";if(a)for(var b=0,c=a.length;b<c;b++)a[b]&&(a[b].constructor==cl.constructor||a[b].constructor==cG)&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},cH=cG.prototype;cH.push=function(){var a,b;for(var c=0,d=arguments.length;c<d;c++)a=arguments[c],a&&(a.constructor==cl.constructor||a.constructor==cG)&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},cH.pop=function(){this.length&&delete this[this.length--];return this.items.pop()},cH.forEach=function(a,b){for(var c=0,d=this.items.length;c<d;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var cI in cl)cl[g](cI)&&(cH[cI]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][m](c,b)})}}(cI));cH.attr=function(b,c){if(b&&a.is(b,E)&&a.is(b[0],"object"))for(var d=0,e=b.length;d<e;d++)this.items[d].attr(b[d]);else for(var f=0,g=this.items.length;f<g;f++)this.items[f].attr(b,c);return this},cH.clear=function(){while(this.length)this.pop()},cH.splice=function(a,b,c){a=a<0?x(this.length+a,0):a,b=x(0,y(this.length-a,b));var d=[],e=[],f=[],g;for(g=2;g<arguments.length;g++)f.push(arguments[g]);for(g=0;g<b;g++)e.push(this[a+g]);for(;g<this.length-a;g++)d.push(this[a+g]);var h=f.length;for(g=0;g<h+d.length;g++)this.items[a+g]=this[a+g]=g<h?f[g]:d[g-h];g=this.items.length=this.length-=b-h;while(this[g])delete this[g++];return new cG(e)},cH.exclude=function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]==a){this.splice(b,1);return!0}},cH.animate=function(b,c,d,e){(a.is(d,"function")||!d)&&(e=d||null);var f=this.items.length,g=f,h,i=this,j;if(!f)return this;e&&(j=function(){!--f&&e.call(i)}),d=a.is(d,D)?d:j;var k=a.animation(b,c,d,j);h=this.items[--g].animate(k);while(g--)this.items[g]&&!this.items[g].removed&&this.items[g].animateWith(h,k,k);return this},cH.insertAfter=function(a){var b=this.items.length;while(b--)this.items[b].insertAfter(a);return this},cH.getBBox=function(){var a=[],b=[],c=[],d=[];for(var e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}a=y[m](0,a),b=y[m](0,b),c=x[m](0,c),d=x[m](0,d);return{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},cH.clone=function(a){a=new cG;for(var b=0,c=this.items.length;b<c;b++)a.push(this.items[b].clone());return a},cH.toString=function(){return"Raphaël‘s set"},a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[g](d)&&(b.face[d]=a.face[d]);this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b];if(!a.svg){b.face["units-per-em"]=R(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[g](e)){var f=a.glyphs[e];b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"};if(f.k)for(var h in f.k)f[g](h)&&(b.glyphs[e].k[h]=f.k[h])}}return a},k.getFont=function(b,c,d,e){e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;if(!!a.fonts){var f=a.fonts[b];if(!f){var h=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,p)+"(\\s|$)","i");for(var i in a.fonts)if(a.fonts[g](i)&&h.test(i)){f=a.fonts[i];break}}var j;if(f)for(var k=0,l=f.length;k<l;k++){j=f[k];if(j.face["font-weight"]==c&&(j.face["font-style"]==d||!j.face["font-style"])&&j.face["font-stretch"]==e)break}return j}},k.print=function(b,d,e,f,g,h,i){h=h||"middle",i=x(y(i||0,1),-1);var j=r(e)[s](p),k=0,l=0,m=p,n;a.is(f,e)&&(f=this.getFont(f));if(f){n=(g||16)/f.face["units-per-em"];var o=f.face.bbox[s](c),q=+o[0],t=o[3]-o[1],u=0,v=+o[1]+(h=="baseline"?t+ +f.face.descent:t/2);for(var w=0,z=j.length;w<z;w++){if(j[w]=="\n")k=0,B=0,l=0,u+=t;else{var A=l&&f.glyphs[j[w-1]]||{},B=f.glyphs[j[w]];k+=l?(A.w||f.w)+(A.k&&A.k[j[w]]||0)+f.w*i:0,l=1}B&&B.d&&(m+=a.transformPath(B.d,["t",k*n,u*n,"s",n,n,q,v,"t",(b-q)/n,(d-v)/n]))}}return this.path(m).attr({fill:"#000",stroke:"none"})},k.add=function(b){if(a.is(b,"array")){var c=this.set(),e=0,f=b.length,h;for(;e<f;e++)h=b[e]||{},d[g](h.type)&&c.push(this[h.type]().attr(h))}return c},a.format=function(b,c){var d=a.is(c,E)?[0][n](c):arguments;b&&a.is(b,D)&&d.length-1&&(b=b.replace(e,function(a,b){return d[++b]==null?p:d[b]}));return b||p},a.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),typeof e=="function"&&f&&(e=e()))}),e=(e==null||e==d?a:e)+"";return e};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),a.ninja=function(){i.was?h.win.Raphael=i.is:delete Raphael;return a},a.st=cH,function(b,c,d){function e(){/in/.test(b.readyState)?setTimeout(e,9):a.eve("raphael.DOMload")}b.readyState==null&&b.addEventListener&&(b.addEventListener(c,d=function(){b.removeEventListener(c,d,!1),b.readyState="complete"},!1),b.readyState="loading"),e()}(document,"DOMContentLoaded"),i.was?h.win.Raphael=a:Raphael=a,eve.on("raphael.DOMload",function(){b=!0})}(),window.Raphael.svg&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){typeof d=="string"&&(d=q(d));for(var f in e)e[b](f)&&(f.substring(0,6)=="xlink:"?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){e=c(e).replace(a._radial_gradient,function(a,b,c){j="radial";if(b&&c){m=d(b),n=d(c);var e=(n>.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/);if(j=="linear"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient);if(!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,j=="radial"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x<y;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}q(o,{fill:"url(#"+k+")",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1;return 1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if(d.type=="path"){var g=c(e).toLowerCase().split("-"),h=d.paper,i=f?"end":"start",j=d.node,k=d.attrs,m=k["stroke-width"],n=g.length,r="classic",s,t,u,v,w,x=3,y=3,z=5;while(n--)switch(g[n]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":r=g[n];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}r=="open"?(x+=2,y+=2,z+=2,u=1,v=f?4:1,w={fill:"none",stroke:k.stroke}):(v=u=x/2,w={fill:k.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={};if(r!="none"){var A="raphael-marker-"+r,B="raphael-marker-"+i+r+x+y;a._g.doc.getElementById(A)?p[A]++:(h.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[r],id:A})),p[A]=1);var C=a._g.doc.getElementById(B),D;C?(p[B]++,D=C.getElementsByTagName("use")[0]):(C=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:v,refY:y/2}),D=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),C.appendChild(D),h.defs.appendChild(C),p[B]=1),q(D,w);var F=u*(r!="diamond"&&r!="oval");f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-F*m):(s=F*m,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),w={},w["marker-"+i]="url(#"+B+")";if(t||s)w.d=Raphael.getSubpath(k.path,s,t);q(j,w),d._.arrows[i+"Path"]=A,d._.arrows[i+"Marker"]=B,d._.arrows[i+"dx"]=F,d._.arrows[i+"Type"]=r,d._.arrows[i+"String"]=e}else f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-s):(s=0,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),d._.arrows[i+"Path"]&&q(j,{d:Raphael.getSubpath(k.path,s,t)}),delete d._.arrows[i+"Path"],delete d._.arrows[i+"Marker"],delete d._.arrows[i+"dx"],delete d._.arrows[i+"Type"],delete d._.arrows[i+"String"];for(w in p)if(p[b](w)&&!p[w]){var G=a._g.doc.getElementById(w);G&&G.parentNode.removeChild(G)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){b=u[c(b).toLowerCase()];if(b){var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;while(h--)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];k[o]=p;switch(o){case"blur":d.blur(p);break;case"href":case"title":case"target":var u=i.parentNode;if(u.tagName.toLowerCase()!="a"){var w=q("a");u.insertBefore(w,i),w.appendChild(i),u=w}o=="target"?u.setAttributeNS(n,"show",p=="blank"?"new":p):u.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var x=c(p).split(j);if(x.length==4){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var z=q("clipPath"),A=q("rect");z.id=a.createUUID(),q(A,{x:x[0],y:x[1],width:x[2],height:x[3]}),z.appendChild(A),d.paper.defs.appendChild(z),q(i,{"clip-path":"url(#"+z.id+")"}),d.clip=A}if(!p){var B=i.getAttribute("clip-path");if(B){var C=a._g.doc.getElementById(B.replace(/(^url\(#|\)$)/g,l));C&&C.parentNode.removeChild(C),q(i,{"clip-path":l}),delete d.clip}}break;case"path":d.type=="path"&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":i.setAttribute(o,p),d._.dirty=1;if(k.fx)o="x",p=k.x;else break;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if(o=="rx"&&d.type=="rect")break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":i.setAttribute(o,p),d._.dirty=1;if(k.fy)o="y",p=k.y;else break;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if(o=="ry"&&d.type=="rect")break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":d.type=="rect"?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":d.type=="image"&&i.setAttributeNS(n,"href",p);break;case"stroke-width":if(d._.sx!=1||d._.sy!=1)p/=g(h(d._.sx),h(d._.sy))||1;d.paper._vbSize&&(p*=d.paper._vbSize),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var D=c(p).match(a._ISURL);if(D){z=q("pattern");var F=q("image");z.id=a.createUUID(),q(z,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(F,{x:0,y:0,"xlink:href":D[1]}),z.appendChild(F),function(b){a._preload(D[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(F,{width:a,height:c}),d.paper.safari()})}(z),d.paper.defs.appendChild(z),q(i,{fill:"url(#"+z.id+")"}),d.pattern=z,d.pattern&&s(d);break}var G=a.getRGB(p);if(!G.error)delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});else if((d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(H){var I=H.getElementsByTagName("stop");q(I[I.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}G[b]("opacity")&&q(i,{"fill-opacity":G.opacity>1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(p),i.setAttribute(o,G.hex),o=="stroke"&&G[b]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),o=="stroke"&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":(d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break};default:o=="font-size"&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if(d.type=="text"&&!!(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split("\n"),k=[],m;for(var n=0,o=j.length;n<o;n++)m=q("tspan"),n&&q(m,{dy:i*x,x:g.x}),m.appendChild(a._g.doc.createTextNode(j[n])),h.appendChild(m),k[n]=m}else{k=h.getElementsByTagName("tspan");for(n=0,o=k.length;n<o;n++)n?q(k[n],{dy:i*x,x:g.x}):q(k[0],{dy:0})}q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(k[0],{dy:r})}},z=function(b,c){var d=0,e=0;this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},A=a.el;z.prototype=A,A.constructor=z,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new z(c,b);d.type="path",w(d,{fill:"none",stroke:"#000",path:a});return d},A.rotate=function(a,b,e){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this.transform(this._.transform.concat([["r",a,b,e]]));return this},A.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]]));return this},A.translate=function(a,b){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]]));return this},A.transform=function(c){var d=this._;if(c==null)return d.transform;a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix});if(d.sx!=1||d.sy!=1){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},A.hide=function(){!this.removed&&this.paper.safari(this.node.style.display="none");return this},A.show=function(){!this.removed&&this.paper.safari(this.node.style.display="");return this},A.remove=function(){if(!this.removed&&!!this.node.parentNode){var b=this.paper;b.__set__&&b.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&b.defs.removeChild(this.gradient),a._tear(this,b),this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.removeChild(this.node.parentNode):this.node.parentNode.removeChild(this.node);for(var c in this)this[c]=typeof this[c]=="function"?a._removedFactory(c):null;this.removed=!0}},A._getBBox=function(){if(this.node.style.display=="none"){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}a&&this.hide();return b},A.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;if(c=="transform")return this._.transform;var g=c.split(j),h={};for(var i=0,l=g.length;i<l;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(d==null&&a.is(c,"array")){h={};for(i=0,l=c.length;i<l;i++)h[c[i]]=this.attr(c[i]);return h}if(d!=null){var m={};m[c]=d}else c!=null&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}w(this,m);return this},A.toFront=function(){if(this.removed)return this;this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.appendChild(this.node.parentNode):this.node.parentNode.appendChild(this.node);var b=this.paper;b.top!=this&&a._tofront(this,b);return this},A.toBack=function(){if(this.removed)return this;var b=this.node.parentNode;b.tagName.toLowerCase()=="a"?b.parentNode.insertBefore(this.node.parentNode,this.node.parentNode.parentNode.firstChild):b.firstChild!=this.node&&b.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper);var c=this.paper;return this},A.insertAfter=function(b){if(this.removed)return this;var c=b.node||b[b.length-1].node;c.nextSibling?c.parentNode.insertBefore(this.node,c.nextSibling):c.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},A.insertBefore=function(b){if(this.removed)return this;var c=b.node||b[0].node;c.parentNode.insertBefore(this.node,c),a._insertbefore(this,b,this.paper);return this},A.blur=function(b){var c=this;if(+b!==0){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter")},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new z(e,a);f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs);return f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs);return h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new z(f,a);g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs);return g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image";return h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new z(f,b);g.attrs={x:c,y:d,"text-anchor":"middle",text:e,font:a._availableAttrs.font,stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs);return g},a._engine.setSize=function(a,b){this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox);return this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h=q("svg"),i="overflow:hidden;",j;d=d||0,e=e||0,f=f||512,g=g||342,q(h,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg"}),c==1?(h.style.cssText=i+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(h),j=1):(h.style.cssText=i+"position:relative",c.firstChild?c.insertBefore(h,c.firstChild):c.appendChild(h)),c=new a._Paper,c.width=f,c.height=g,c.canvas=h,c.clear(),c._left=c._top=0,j&&(c.renderfix=function(){}),c.renderfix();return c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f=g(c/this.width,d/this.height),h=this.top,i=e?"meet":"xMinYMin",j,l;a==null?(this._vbSize&&(f=1),delete this._vbSize,j="0 0 "+this.width+m+this.height):(this._vbSize=f,j=a+m+b+m+c+m+d),q(this.canvas,{viewBox:j,preserveAspectRatio:i});while(f&&h)l="stroke-width"in h.attrs?h.attrs["stroke-width"]:1,h.attr({"stroke-width":l}),h._.dirty=1,h._.dirtyT=1,h=h.prev;this._viewBox=[a,b,c,d,!!e];return this},a.prototype.renderfix=function(){var a=this.canvas,b=a.style,c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(d){c=a.createSVGMatrix()}var e=-c.e%1,f=-c.f%1;if(e||f)e&&(this._left=(this._left+e)%1,b.left=this._left+"px"),f&&(this._top=(this._top+f)%1,b.top=this._top+"px")},a.prototype.clear=function(){a.eve("raphael.clear",this);var b=this.canvas;while(b.firstChild)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null};var B=a.st;for(var C in A)A[b](C)&&!B[b](C)&&(B[C]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(C))}(window.Raphael),window.Raphael.vml&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/ig,e=a._pathToAbsolute;c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g;if(e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e=b.toLowerCase()=="m",g=p[b];c.replace(s,function(a){e&&d.length==2&&(g+=d+p[b=="m"?"l":"L"],d=[]),d.push(f(a*u))});return g+d});return g}var h=e(b),i,j;g=[];for(var k=0,l=h.length;k<l;k++){i=h[k],j=h[k][0].toLowerCase(),j=="z"&&(j="x");for(var m=1,r=i.length;m<r;m++)j+=f(i[m]*u)+(m!=r-1?",":o);g.push(j)}return g.join(n)},y=function(b,c,d){var e=a.matrix();e.rotate(-b,.5,.5);return{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q,r=u/b,s=u/c;m.visibility="hidden";if(!!b&&!!c){l.coordsize=i(r)+n+i(s),m.rotation=f*(b*c<0?-1:1);if(f){var t=y(f,d,e);d=t.dx,e=t.dy}b<0&&(p+="x"),c<0&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-r+n+e*-s;if(k||g.fillsize){var v=l.getElementsByTagName(j);v=v&&v[0],l.removeChild(v),k&&(t=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),v.position=t.dx*o+n+t.dy*o),g.fillsize&&(v.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(v)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";while(g--)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q,r=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),s=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),t=e;for(var y in i)i[b](y)&&(m[y]=i[y]);r&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur);if(i.path&&e.type=="path"||r)l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e.type=="image"&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0));"transform"in i&&e.transform(i.transform);if(s){var B=+m.cx,D=+m.cy,E=+m.rx||+m.r||0,G=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((B-E)*u),f((D-G)*u),f((B+E)*u),f((D+G)*u),f(B*u))}if("clip-rect"in i){var H=c(i["clip-rect"]).split(k);if(H.length==4){H[2]=+H[2]+ +H[0],H[3]=+H[3]+ +H[1];var I=l.clipRect||a._g.doc.createElement("div"),J=I.style;J.clip=a.format("rect({1}px {2}px {3}px {0}px)",H),l.clipRect||(J.position="absolute",J.top=0,J.left=0,J.width=e.paper.width+"px",J.height=e.paper.height+"px",l.parentNode.insertBefore(I,l),I.appendChild(l),l.clipRect=I)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var K=e.textpath.style;i.font&&(K.font=i.font),i["font-family"]&&(K.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(K.fontSize=i["font-size"]),i["font-weight"]&&(K.fontWeight=i["font-weight"]),i["font-style"]&&(K.fontStyle=i["font-style"])}"arrow-start"in i&&A(t,i["arrow-start"]),"arrow-end"in i&&A(t,i["arrow-end"],1);if(i.opacity!=null||i["stroke-width"]!=null||i.fill!=null||i.src!=null||i.stroke!=null||i["stroke-width"]!=null||i["stroke-opacity"]!=null||i["fill-opacity"]!=null||i["stroke-dasharray"]!=null||i["stroke-miterlimit"]!=null||i["stroke-linejoin"]!=null||i["stroke-linecap"]!=null){var L=l.getElementsByTagName(j),M=!1;L=L&&L[0],!L&&(M=L=F(j)),e.type=="image"&&i.src&&(L.src=i.src),i.fill&&(L.on=!0);if(L.on==null||i.fill=="none"||i.fill===null)L.on=!1;if(L.on&&i.fill){var N=c(i.fill).match(a._ISURL);if(N){L.parentNode==l&&l.removeChild(L),L.rotate=!0,L.src=N[1],L.type="tile";var O=e.getBBox(1);L.position=O.x+n+O.y,e._.fillpos=[O.x,O.y],a._preload(N[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else L.color=a.getRGB(i.fill).hex,L.src=o,L.type="solid",a.getRGB(i.fill).error&&(t.type in{circle:1,ellipse:1}||c(i.fill).charAt()!="r")&&C(t,i.fill,L)&&(m.fill="none",m.gradient=i.fill,L.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var P=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);P=h(g(P,0),1),L.opacity=P,L.src&&(L.color="none")}l.appendChild(L);var Q=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],T=!1;!Q&&(T=Q=F("stroke"));if(i.stroke&&i.stroke!="none"||i["stroke-width"]||i["stroke-opacity"]!=null||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])Q.on=!0;(i.stroke=="none"||i.stroke===null||Q.on==null||i.stroke==0||i["stroke-width"]==0)&&(Q.on=!1);var U=a.getRGB(i.stroke);Q.on&&i.stroke&&(Q.color=U.hex),P=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+U.o+1||2)-1);var V=(d(i["stroke-width"])||1)*.75;P=h(g(P,0),1),i["stroke-width"]==null&&(V=m["stroke-width"]),i["stroke-width"]&&(Q.weight=V),V&&V<1&&(P*=V)&&(Q.weight=1),Q.opacity=P,i["stroke-linejoin"]&&(Q.joinstyle=i["stroke-linejoin"]||"miter"),Q.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(Q.endcap=i["stroke-linecap"]=="butt"?"flat":i["stroke-linecap"]=="square"?"square":"round");if(i["stroke-dasharray"]){var W={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};Q.dashstyle=W[b](i["stroke-dasharray"])?W[i["stroke-dasharray"]]:o}T&&l.appendChild(Q)}if(t.type=="text"){t.paper.canvas.style.display=o;var X=t.paper.span,Y=100,Z=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=X.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),Z=d(m["font-size"]||Z&&Z[0])||10,p.fontSize=Z*Y+"px",t.textpath.string&&(X.innerHTML=c(t.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var $=X.getBoundingClientRect();t.W=m.w=($.right-$.left)/Y,t.H=m.h=($.bottom-$.top)/Y,t.X=m.x,t.Y=m.y+t.H/2,("x"in i||"y"in i)&&(t.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));var _=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var ba=0,bb=_.length;ba<bb;ba++)if(_[ba]in i){t._.dirty=1;break}switch(m["text-anchor"]){case"start":t.textpath.style["v-text-align"]="left",t.bbx=t.W/2;break;case"end":t.textpath.style["v-text-align"]="right",t.bbx=-t.W/2;break;default:t.textpath.style["v-text-align"]="center",t.bbx=0}t.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=b.attrs,i=Math.pow,j,k,l="linear",m=".5 .5";b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){l="radial",b&&c&&(b=d(b),c=d(c),i(b-.5,2)+i(c-.5,2)>.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\s*\-\s*/);if(l=="linear"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method="none",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s<t;s++)q[s].offset&&r.push(q[s].offset+n+q[s].color);g.colors=r.length?r.join():"0% "+g.color,l=="radial"?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=m,g.angle=0):(g.type="gradient",g.angle=(270-p)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(b==null)return this._.transform;var d=this.paper._viewBoxShift,e=d?"s"+[d.scale,d.scale]+"-1-1t"+[d.dx,d.dy]:o,f;d&&(f=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,e+b);var g=this.matrix.clone(),h=this.skew,i=this.node,j,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");g.translate(-0.5,-0.5);if(l||k||this.type=="image"){h.matrix="1 0 0 1",h.offset="0 0",j=g.split();if(k&&j.noRotation||!j.isSimple){i.style.filter=g.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;i.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else i.style.filter=o,z(this,j.scalex,j.scaley,j.dx,j.dy,j.rotate)}else i.style.filter=o,h.matrix=c(g),h.offset=g.offset();f&&(this._.transform=f);return this},E.rotate=function(a,b,e){if(this.removed)return this;if(a!=null){a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]]));return this}},E.translate=function(a,b){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]]));return this},E.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1;return this},E.hide=function(){!this.removed&&(this.node.style.display="none");return this},E.show=function(){!this.removed&&(this.node.style.display=o);return this},E._getBBox=function(){if(this.removed)return{};return{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&!!this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c==j&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;var g=c.split(k),h={};for(var i=0,m=g.length;i<m;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&d==null&&a.is(c,"array")){h={};for(i=0,m=c.length;i<m;i++)h[c[i]]=this.attr(c[i]);return h}var n;d!=null&&(n={},n[c]=d),d==null&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&this.type=="text"&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper);return this},E.toBack=function(){if(this.removed)return this;this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper));return this},E.insertAfter=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},E.insertBefore=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper);return this},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;d=d.replace(r,o),+b!==0?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur)},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");f.on=!0,c.appendChild(f),d.skew=f,d.transform(o);return d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect";return i},a._engine.ellipse=function(a,b,c,d,e){var f=a.path(),g=f.attrs;f.X=b-d,f.Y=c-e,f.W=d*2,f.H=e*2,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e});return f},a._engine.circle=function(a,b,c,d){var e=a.path(),f=e.attrs;e.X=b-d,e.Y=c-d,e.W=e.H=d*2,e.type="circle",B(e,{cx:b,cy:c,r:d});return e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0);return i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");m.on=!0,h.appendChild(m),k.skew=m,k.transform(o);return k},a._engine.setSize=function(b,c){var d=this.canvas.style;this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox);return this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var h=this.width,i=this.height,j=1/g(d/h,e/i),k,l;f&&(k=i/e,l=h/d,d*k<h&&(b-=(h-d*k)/2/k),e*l<i&&(c-=(i-e*l)/2/l)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:j},this.forEach(function(a){a.transform("...")});return this};var F;a._engine.initWin=function(a){var b=a.document;b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error("VML container not found.");var i=new a._Paper,j=i.canvas=a._g.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin="0 0",i.span=a._g.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}(window.Raphael)
0 \ No newline at end of file 11 \ No newline at end of file
assets 0 → 100644
config.json 0 → 100644
  1 +{
  2 + "name": "项目文档中心",
  3 + "ver": "",
  4 + "testing": false
  5 +}
index.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html>
  3 +
  4 + <head>
  5 + <meta charset="utf-8">
  6 + <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
  7 + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  8 + <meta name="renderer" content="webkit">
  9 + <title>项目文档中心</title>
  10 + <link rel="stylesheet" type="text/css" href="amWiki/css/markdownbody.github.css" />
  11 + <link rel="stylesheet" type="text/css" href="amWiki/css/lhjs.github-gist.css" />
  12 + <link rel="stylesheet" type="text/css" href="amWiki/css/amWiki.css" />
  13 +
  14 + </head>
  15 +
  16 + <body>
  17 + <!-- 头部 -->
  18 + <header class="header">
  19 + <div class="header-inner">
  20 + <a class="logo" href="?file=首页">
  21 + <img src="amWiki/images/logo.png" /><i></i>
  22 + <b>项目文档中心</b>
  23 + <span>v1.0.0</span>
  24 + </a>
  25 + <div class="menu-icon" id="menuIcon">
  26 + <svg>
  27 + <use xlink:href="#icon:navStart"></use>
  28 + </svg>
  29 + </div>
  30 + </div>
  31 + </header>
  32 + <!-- 页面 -->
  33 + <div class="container" id="container">
  34 + <div class="nav" id="nav">
  35 + <div class="menu-filter">
  36 + <svg>
  37 + <use xlink:href="#icon:navFilter"></use>
  38 + </svg>
  39 + <input type="text" id="menuFilter" value="" placeholder="请输入筛选条件" title="请输入筛选条件" />
  40 + <i class="off" title="清空筛选">&times;</i>
  41 + </div>
  42 + <div class="menu-search" id="searchShow" title="全库搜索">
  43 + <svg>
  44 + <use xlink:href="#icon:search"></use>
  45 + </svg>
  46 + </div>
  47 + <nav class="menubar scroller" id="menuBar" data-x-rolling="true">
  48 + <div class="scroller-inner">
  49 + <div class="scroller-content"></div>
  50 + </div>
  51 + </nav>
  52 + </div>
  53 + <div class="main scroller" id="main">
  54 + <div class="main-inner scroller-inner">
  55 + <!-- 正文 -->
  56 + <article class="markdown-body scroller-content" id="view"></article>
  57 + <script id="template:footnote" type="text/html">
  58 + <sup><a href="#fn:foot{{index}}" name="fn:note{{index}}" title="{{title}}">[{{index}}]</a></sup>
  59 + <ol class="footnote"><i>[参考资料]:</i>{{list}}</ol>
  60 + <li id="fn:foot{{index}}">{{content}} {{back}}</li>
  61 + <li class="footnote-none" data-msg="匹配缺失">{{content}}</li>
  62 + <a href="#fn:note{{index}}">
  63 + <svg>
  64 + <use xlink:href="#icon:footnoteBack"></use>
  65 + </svg>
  66 + </a>
  67 + </script>
  68 + <!-- 上下翻页 -->
  69 + <div class="main-sibling scroller-content" id="mainSibling">
  70 + <p><span>上一篇:</span>
  71 + <a href="#"></a>
  72 + </p>
  73 + <p><span>下一篇:</span>
  74 + <a href="#"></a>
  75 + </p>
  76 + </div>
  77 + <!-- 全库搜索 -->
  78 + <div class="search-box" id="searchBox">
  79 + <div class="search-update">
  80 + <input type="button" id="searchUpdate" value="更新所有缓存" />
  81 + <div class="text">
  82 + <p>上次完全更新:<time id="cacheLasttime">0000-00-00 00:00:00</time></p>
  83 + <p>文档总数:<b id="cacheDocTotal">0</b> <i>/</i> <span>已缓存:<i id="cacheState">0%</i></span></p>
  84 + </div>
  85 + </div>
  86 + <h2>全库搜索</h2>
  87 + <div class="search-input">
  88 + <input type="text" id="searchText" placeholder="请输入搜索内容" />
  89 + <input type="button" id="search" value="搜 索" />
  90 + </div>
  91 + <div class="search-results" id="results">
  92 + <div class="search-result-message" id="resultMsg"></div>
  93 + <ul class="search-list"></ul>
  94 + <div class="search-result-more" id="resultMore">显示更多</div>
  95 + <script id="template:searchResult" type="text/html">
  96 + <li class="search-item">
  97 + <a href="?file={{path}}">
  98 + <div class="content">
  99 + <strong>{{title}}</strong> {{api}} {{content}}
  100 + </div>
  101 + <div class="bottom">
  102 + <p>位置:<span>{{path}}</span></p>
  103 + <div class="time">最后缓存于
  104 + <time>{{time}}</time>
  105 + </div>
  106 + </div>
  107 + </a>
  108 + </li>
  109 + </script>
  110 + </div>
  111 + </div>
  112 + <!-- 接口测试 -->
  113 +
  114 + </div>
  115 + </div>
  116 + </div>
  117 + <aside>
  118 + <!-- 侧边目录 -->
  119 + <div class="contents" id="contents">
  120 + <div class="btn">
  121 + <svg>
  122 + <use xlink:href="#icon:contents"></use>
  123 + </svg>
  124 + <span>目录</span>
  125 + </div>
  126 + <div class="contents-list">
  127 + <p>
  128 + <a id="contentsTitle" href="#客户日志流水接口示例">客户日志流水接口示例</a>
  129 + </p>
  130 + <div class="markdown-contents"></div>
  131 + </div>
  132 + </div>
  133 + <!-- 返回顶部 -->
  134 + <div class="back-top" id="backTop">
  135 + <a class="back-icon" href="#">
  136 + <svg>
  137 + <use xlink:href="#icon:backTop"></use>
  138 + </svg>
  139 + </a>
  140 + <a class="back-text" href="#">返回顶部</a>
  141 + </div>
  142 + </aside>
  143 + <!-- 图片预览 -->
  144 + <section class="imgsv" id="imgsView">
  145 + <div class="imgsv-background"></div>
  146 + <div class="imgsv-view" id="imgsViewInner"></div>
  147 + <ul class="imgsv-panel">
  148 + <li class="prev off">Prev</li>
  149 + <li class="next">Next</li>
  150 + <li class="original">1:1</li>
  151 + <li class="suit">适合</li>
  152 + </ul>
  153 + </section>
  154 + <footer>
  155 + <!-- 签名 -->
  156 + <div class="signature">Powered by
  157 + <a href="https://github.com/TevinLi/amWiki" target="_blank">amWiki</a>
  158 + </div>
  159 + </footer>
  160 + <!-- mounts -->
  161 + <div class="hidden" aw-include="mountLinks">
  162 + <script>AWConfig={"name":"项目文档中心","ver":"","testing":false,"version":"","logo":"amWiki/images/logo.png","colour":"#4296eb","pageMounts":false,"githubUrl":"","libraryPrefix":""}</script>
  163 + </div>
  164 + <!-- js -->
  165 + <div class="hidden">
  166 + <script type="text/javascript" src="amWiki/js/gbk.js"></script>
  167 + <script type="text/javascript" src="amWiki/js/pinyin.js"></script>
  168 + <script type="text/javascript" src="amWiki/js/jquery-compat-3.1.0.min.js"></script>
  169 + <script type="text/javascript" src="amWiki/js/marked.min.js"></script>
  170 + <script type="text/javascript" src="amWiki/js/highlight.pack.js"></script>
  171 + <script type="text/javascript" src="amWiki/js/raphael-min.js"></script>
  172 + <script type="text/javascript" src="amWiki/js/flowchart.min.js"></script>
  173 + <script type="text/javascript" src="amWiki/js/amWiki.tools.js"></script>
  174 + <script type="text/javascript" src="amWiki/js/amWiki.storage.js"></script>
  175 + <script type="text/javascript" src="amWiki/js/amWiki.search.js"></script>
  176 + <script type="text/javascript" src="amWiki/js/amWiki.search.worker.js"></script>
  177 + <script type="text/javascript" src="amWiki/js/amWiki.docs.js"></script>
  178 +
  179 + <script type="text/javascript" src="amWiki/js/amWiki.scrollbar.js"></script>
  180 + <script type="text/javascript" src="amWiki/js/amWiki.imgsView.js"></script>
  181 + <script type="text/javascript" src="amWiki/js/amWiki.js"></script>
  182 +
  183 + </div>
  184 + <!-- svg -->
  185 + <div class="hidden" id="svgSymbols"></div>
  186 + <!-- 低版本浏览器警告 -->
  187 + <div id="lowBrowser">
  188 + <div></div>
  189 + <p><span>您的浏览器版本过低,不支持浏览本Wiki,请升级或更换您的浏览器再试!</span></p>
  190 + <script>
  191 + (function(win) {
  192 + var notice = document.getElementById('lowBrowser');
  193 + //jQuery 3.x 需要 addEventListener 方法支持
  194 + if(typeof win.addEventListener == 'undefined') {
  195 + notice.style.display = 'block';
  196 + } else {
  197 + var comments = notice.previousSibling;
  198 + if(comments.nodeType == 8) {
  199 + comments.parentNode.removeChild(comments);
  200 + } else if(comments.previousSibling.nodeType == 8) {
  201 + comments = comments.previousSibling;
  202 + comments.parentNode.removeChild(comments);
  203 + }
  204 + notice.parentNode.removeChild(notice);
  205 + }
  206 + notice = comments = null;
  207 + })(window);
  208 + </script>
  209 + </div>
  210 + </body>
  211 +
  212 +</html>
library/$navigation.md 0 → 100644
  1 +
  2 +#### [首页](?file=home-首页)
  3 +
  4 +##### 首页
  5 +- [amWiki轻文库简介](?file=01-首页/01-amWiki轻文库简介 "amWiki轻文库简介")
  6 +- [amWiki功能导图](?file=01-首页/02-amWiki功能导图 "amWiki功能导图")
  7 +- [如何开始一个新amWiki轻文库](?file=01-首页/03-如何开始一个新amWiki轻文库 "如何开始一个新amWiki轻文库")
  8 +- [如何编辑amWiki轻文库](?file=01-首页/04-如何编辑amWiki轻文库 "如何编辑amWiki轻文库")
  9 +- **学习markdown**
  10 + - [Markdown快速开始](?file=01-首页/05-学习markdown/01-Markdown快速开始 "Markdown快速开始")
  11 + - [amWiki与语法高亮](?file=01-首页/05-学习markdown/02-amWiki与语法高亮 "amWiki与语法高亮")
  12 + - [amWiki与流程图](?file=01-首页/05-学习markdown/03-amWiki与流程图 "amWiki与流程图")
  13 + - [Atom对Markdown的原生支持](?file=01-首页/05-学习markdown/05-Atom对Markdown的原生支持 "Atom对Markdown的原生支持")
  14 +- [使用测试模块测试接口](?file=01-首页/06-使用测试模块测试接口 "使用测试模块测试接口")
  15 +- [amWiki转接到任意域名进行接口测试](?file=01-首页/07-amWiki转接到任意域名进行接口测试 "amWiki转接到任意域名进行接口测试")
  16 +
  17 +##### 车场概览
  18 +- [通用API接口文档示例](?file=02-车场概览/001-通用API接口文档示例 "通用API接口文档示例")
  19 +- [超长文档页内目录示例](?file=02-车场概览/002-超长文档页内目录示例 "超长文档页内目录示例")
  20 +
  21 +##### 车场运营
  22 +- **运行监控**
  23 + - [停车场](?file=03-车场运营/001-运行监控/0001-停车场 "停车场")
  24 + - [PDA](?file=03-车场运营/001-运行监控/0002-PDA "PDA")
  25 + - [诱导屏](?file=03-车场运营/001-运行监控/0003-诱导屏 "诱导屏")
  26 +- **排班管理**
  27 +- **授权车管理**
  28 +- [停车记录](?file=03-车场运营/004-停车记录 "停车记录")
  29 +- **收益分析**
  30 +- **运行分析**
library/01-首页/01-amWiki轻文库简介.md 0 → 100644
  1 +# amWiki 轻文库简介
  2 +
  3 +![amWiki logo](https://amwiki.xf09.net/docs/assets/logo.png)
  4 +amWiki 是一款基于 Javascript 脚本语言、依赖 Atom 编辑器、使用 Markdown 标记语法的轻量级开源 wiki 文库系统。
  5 +amWiki 致力于让大家可以更简单、更便捷的建设个人和团队文库系统!
  6 +
  7 +[[view amWiki on Github](https://github.com/TevinLi/amWiki)]
  8 +
  9 +GitHub:
  10 +[![](https://img.shields.io/github/stars/TevinLi/amWiki.svg?style=social&label=Star)](https://github.com/TevinLi/amWiki "GitHub Stars")
  11 +[![](https://img.shields.io/github/forks/TevinLi/amWiki.svg?style=social&label=Fork)](https://github.com/TevinLi/amWiki "GitHub Forks")
  12 +[![](https://img.shields.io/github/issues-raw/TevinLi/amWiki.svg)](https://github.com/TevinLi/amWiki "GitHub Open Issues")
  13 +[![](https://img.shields.io/github/issues-closed-raw/TevinLi/amWiki.svg)](https://github.com/TevinLi/amWiki "GitHub Closed Issues")
  14 +[![](https://img.shields.io/github/contributors/TevinLi/amWiki.svg)](https://github.com/TevinLi/amWiki "GitHub Contributors")
  15 +Apm:
  16 +[![apm](https://img.shields.io/apm/v/amWiki.svg)](https://atom.io/packages/amWiki "Apm Version")
  17 +[![apm](https://img.shields.io/apm/dm/amWiki.svg)](https://atom.io/packages/amWiki "Apm Downloads")
  18 +[![apm](https://img.shields.io/apm/l/amWiki.svg)](https://atom.io/packages/amWiki "MIT License")
  19 +
  20 +## amWiki 优势
  21 +- 文档系统采用 Markdown 语法 [>>Markdown 快速开始](?file=001-学习amWiki/05-学习markdown/01-Markdown快速开始)
  22 +- 无需服务端开发,只需支持 http 访问的静态网页空间
  23 +- 不使用数据库,使用 `.md` 扩展名存储文档为本地文件
  24 +- 一键创建新文库,自动生成一套 Html 页面
  25 +- 自动更新文库导航目录
  26 +- 支持截图直接粘帖为本地 png 并插入当前 Markdown 文档
  27 +- Web 端页面自适应显示,适合各种 Web 平台与屏幕尺寸
  28 +- 支持接口文档自动抓取内容生成简单的 Ajax 测试
  29 +- ... (更多内容期待您的发现)
  30 +
  31 +## 效果演示
  32 +**Web端**
  33 +一键创建新文库默认生成Web端效果一览:[https://tevinli.github.io/amWiki/](https://tevinli.github.io/amWiki/index.html)
  34 +
  35 +**工作端**
  36 +工作端需要您安装 Atom 与 amWiki 才能体验
library/01-首页/02-amWiki功能导图.md 0 → 100644
  1 +# amWiki 功能导图
  2 +
  3 +![amWiki功能导图](https://amwiki.xf09.net/docs/assets/mapping.png)
  4 +
  5 +**说明**:灰色文字代表的功能部分,表示目前版本没有,但是已经列入开发计划
library/01-首页/03-如何开始一个新amWiki轻文库.md 0 → 100644
  1 +# 如何开始一个新 amWiki 轻文库
  2 +
  3 +## 开始一个新文库的步骤
  4 +
  5 +1. ##### 下载 Github 出品的开源文本编辑器 [Atom](https://atom.io/ "打开Atom官网"),并安装
  6 +![](https://amwiki.xf09.net/docs/assets/001.tiny/02-0e63f48d.png)
  7 +
  8 +2. ##### 安装 Atom 完成之后,再安装插件 amWiki,您可以通过以下三种途径安装:
  9 + - 【方式一】:通过 Atom 菜单,File -> Setting -> Install -> 搜索 `amWiki`
  10 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/02-ec2b10b3.png)
  11 + <br>
  12 + - 【方式二】:运行:`apm install amWiki`
  13 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/02-37a29814.png)
  14 + <br>
  15 + - 【方式三】:从Github的 [amWiki版本发布](https://github.com/TevinLi/amWiki/releases) 下载zip,(windows)解压到 `C:\Users\Administrator\.atom\packages`,并将文件夹名 `amWiki-x.x.x` 改为 `amWiki`
  16 +
  17 +3. ##### 重启 Atom (必须)
  18 +
  19 +4. ##### 在本地您需要创建文库的位置创建一个文件夹 (非 Atom 编辑器中)
  20 +
  21 +5. ##### 在 Atom 中 `Add Project Folder` (添加项目文件夹),并指向刚创建的文件夹
  22 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/03-7ce48bba.png)
  23 +
  24 +6. ##### 在 Atom 刚创建的项目下新建 `config.json` 文件,并按 json 格式配置以下属性:
  25 + - **name**,您的文库名称,设置但为空或不设置将显示默认名
  26 + - **ver**,文本版本号或维护者名号,设置但为空将不显示,注意诺不设置此属性将显示 amWiki 作者
  27 + - **logo**,logo 的 url,设置但为空或不设置将显示默认 logo
  28 + - **colour**,自定义颜色,默认为蓝色
  29 + - **testing**,是否启用接口测试模块,默认值 false
  30 + - 例如:
  31 + ```javascript
  32 + {
  33 + "name": "A3项目文档中心",
  34 + "ver": "",
  35 + "logo": "http://abc.com/logo.jpg",
  36 + "testing": true
  37 + }
  38 + ```
  39 +7. ##### 保持 `config.json` 处于当前打开状态,在 Atom 菜单点击:
  40 +
  41 + amWiki文库 -> 通过“config.json”创建新文库
  42 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/02-78f2030d.png)
  43 +
  44 +8. ##### 此时项目中自动创建了许多内容,其中 library 文件夹即为您的文库文件夹
  45 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/02-d72e59a9.png)
  46 +
  47 +9. ##### 使用 `F12` 启动本地静态服务器,访问刚刚自动创建的 index.html
  48 +
  49 +
  50 +## 文库目录结构
  51 +项目目录自动生创建的内容如下
  52 +
  53 + index.html // http 访问入口页面
  54 + amWiki/ // amWiki Web 端程序文件夹
  55 + library/ // 您的 Markdown 文库目录,所有文件必须使用 .md 格式
  56 + ├ $navigation.md // amWiki 文库目录导航文件,可自动/手动更新
  57 + ├ 首页.md // Web 端打开页面时页面页面默认显示的内容
  58 + ├ 001-学习amWiki/ // Markdown 文件夹01
  59 + │ ├ 001-关于amWiki // 一些 Markdown 文档,支持二级目录
  60 + │ └ 002-...
  61 + ├ 002-文档示范/ // Markdown 文件夹02
  62 + │ ├ 001-通用api // 一些 Markdown 文档,支持二级目录
  63 + │ └ 002-...
  64 + └ 003-... // 更多 Markdown 文件夹
  65 + (assetes/) // 如果您粘帖截图,图片文件将自动创建在此处
  66 +
  67 +
  68 +## 如何使用
  69 +一键创建新文库后,您可以通过以下方式开始 amWiki 文库之旅:
  70 +
  71 +1. 在 Atom 编辑器中使用快捷键 `F12` 或在浏览器中使用 http 访问刚刚创建的 index.html。
  72 +2. PC 端使用左侧导航栏、移动端使用右上角弹出菜单来切换页面。
  73 +3. 在导航栏顶部,可以使用筛选功能通过输入关键词对整个导航目录进行筛选。
  74 +4. 如果存在页内目录,直接点击,页内目录使用 hash 滚动;同时您可以直接带 hash 分享,以方便他人快速浏览指定内容。
library/01-首页/04-如何编辑amWiki轻文库.md 0 → 100644
  1 +# 如何编辑 amWiki 轻文库
  2 +
  3 +文库创建后,您就可以编辑自己的文库了
  4 +
  5 +## 基本编辑
  6 +
  7 +1. ##### 新建文件或文件夹,组织您自己的文库
  8 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-88742d4f.png)
  9 +
  10 +2. ##### 每个文件夹或文件要求使用 `id-名称.md` 来命名,其中:
  11 +
  12 + 1. id 仅允许 **整数** 或 **浮点数** 类型,且 **不可重复**
  13 + 2. 必须使用连 **接符** 或 **下划线** 将 id 与后续具体名称相连
  14 + 3. 文件只能使用 **.md** 扩展名
  15 +
  16 + 如果未能满足以上条件,将弹出以下错误提示:
  17 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-4801dadd.png)
  18 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-79e0b528.png)
  19 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-0c4d9e7d.png)
  20 + 正确的命名,例如:
  21 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-12e1b01c.png)
  22 +
  23 +3. ##### 使用 Markdown 语法编辑您的文档
  24 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-b3be9411.png)
  25 +
  26 +## 扩展编辑
  27 +
  28 +1. ##### library 文件夹下 `首页.md` 文档为默认打开时的显示内容
  29 + 您可以适当修改此文档内容以符合您的项目需求
  30 +
  31 +5. ##### `$navigation.md` 导航文件无需人工维护,创建新文件夹或文件时将自动更新,也可以在菜单栏手动刷新:
  32 +
  33 + 菜单栏 -> amWiki文库 -> 手动更新当前文库导航文件
  34 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-b7efbbde.png)
  35 +
  36 +6. ##### 如果需要在 Markdown 文档中插入图片,**请先截图**,然后在文档对应位置使用快捷键:`Ctrl + Shift + V`
  37 + 此时,光标位置将多出一段 Markdown 图片代码,例如:
  38 +
  39 + ![](assets/001/04-b7efbbde.png)
  40 +
  41 + 同时,将在项目目录依次创建文件夹 assets、001 (如果不存在的话),以及此文件夹下名称为 04-b7efbbde.png 的图片文件
  42 +
  43 +7. ##### 对于较长文章,可以使用页内目录,依次进行如下操作,或使用快捷键 `Ctrl + D`,即可在光标处插入页内目录。
  44 + 菜单栏 -> amWiki文库 -> 提取h2、h3标题为页内目录
  45 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/04-3eb34e61.png)
  46 + 注意:请按顺序使用h1、h2、h3,且h1仅使用一次。
  47 +
  48 +8. ##### 如果启用了测试模块,想对一篇文档激活接口测试功能,请参照 [使用测试模块测试接口](?file=001-学习amWiki/06-使用测试模块测试接口)
  49 +
  50 +
  51 +## 维护与延伸
  52 +
  53 +1. 本插件升级后,您想更新 `(projectName)/amWiki/` 文件夹下 web 端的工作文件,您只需重新打开 `config.json` 文件,然后在 Atom 菜单上选择 `通过“config.json”创建新文库` 即可。
  54 +这个二次创建操作不会影响您 library 与 assetes 文件夹下的内容。
  55 +
  56 +2. 借助版本管理 SVN、Git、Hg,传输协议FTP/SFTP,文件同步Dropbox、百度云等等工具,便捷实现网络访问。
library/01-首页/05-学习markdown/01-Markdown快速开始.md 0 → 100644
  1 +# Markdown 快速开始
  2 +
  3 +>1. [简介](#简介 "简介")
  4 +1. [语法快速入门](#语法快速入门 "语法快速入门")
  5 + 1. [【标题】](#【标题】 "【标题】")
  6 + 1. [【修辞和强调】](#【修辞和强调】 "【修辞和强调】")
  7 + 1. [【删除线】](#【删除线】 "【删除线】")
  8 + 1. [【列表】](#【列表】 "【列表】")
  9 + 1. [【链接】](#【链接】 "【链接】")
  10 + 1. [【图片】](#【图片】 "【图片】")
  11 + 1. [【代码】](#【代码】 "【代码】")
  12 + 1. [【代码段】](#【代码段】 "【代码段】")
  13 + 1. [【表格】](#【表格】 "【表格】")
  14 + 1. [【引用】](#【引用】 "【引用】")
  15 + 1. [【分割线】](#【分割线】 "【分割线】")
  16 + 1. [【换行】](#【换行】 "【换行】")
  17 + 1. [【html】](#【html】 "【html】")
  18 +1. [研究更多 markdown 语法详细细节](#研究更多 markdown 语法详细细节 "研究更多 markdown 语法详细细节")
  19 +
  20 +
  21 +## 简介
  22 +Markdown是为那些需要经常码字或者进行文字排版的、对码字手速和排版顺畅度有要求的人群设计的,他们希望用键盘把文字内容啪啪啪地打出来后就已经排版好了,最好从头到尾都不要使用鼠标。
  23 +这些人包括经常需要写文档的码农、博客写手、网站小编、出版业人士等等。
  24 +Markdown的语法简洁明了、学习容易,得到了许多著名网络平台的支持,例如代码托管平台[Github](https://github.com/)、博客平台[WordPress](https://cn.wordpress.org/)等等。
  25 +
  26 +## 语法快速入门
  27 +
  28 +### <font color=#C71585>【标题】</font>
  29 +在行首插入1到6个#,对应1到6阶标题
  30 + # 这是 H1
  31 + ## 这是 H2
  32 + ### 这是 H3
  33 + #### 这是 H4
  34 + ##### 这是 H5
  35 + ###### 这是 H6
  36 +渲染效果:
  37 +# 这是 H1
  38 +## 这是 H2
  39 +### 这是 H3
  40 +#### 这是 H4
  41 +##### 这是 H5
  42 +###### 这是 H6
  43 +
  44 +### <font color=#C71585>【修辞和强调】</font>
  45 +使用星号和底线来标记需要强调的区段
  46 +
  47 + **加粗**
  48 + __加粗__
  49 + *斜体*
  50 + _斜体_
  51 +
  52 +渲染效果:
  53 +**加粗**
  54 +__加粗__
  55 +*斜体*
  56 +_斜体_
  57 +
  58 +### <font color=#C71585>【删除线】</font>
  59 +
  60 + ~~要删掉的内容~~
  61 +
  62 +渲染效果:
  63 +~~要删掉的内容~~
  64 +
  65 +### <font color=#C71585>【列表】</font>
  66 +**无序列表** 使用星号、加号和减号来做为列表的项目标记
  67 + * Candy.
  68 + * Gum.
  69 + + Booze.
  70 + * Booze. 长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本
  71 + 这里是断行-文本长文本长文本长文本
  72 + 这里是断行-文本长文本长文本长文本
  73 + - Booze.
  74 + + 嵌套
  75 + * 嵌套
  76 +
  77 +渲染效果:
  78 +* Candy.
  79 +* Gum.
  80 ++ Booze.
  81 +* Booze. 长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本
  82 +这里是断行-文本长文本长文本长文本
  83 +这里是断行-文本长文本长文本长文本
  84 +- Booze.
  85 + + 嵌套
  86 + * 嵌套
  87 +
  88 +**有序列表** 则是使用一般的数字接着一个英文句点作为项目标记
  89 + 1. Red
  90 + 50. Green
  91 + 1000. Blue
  92 +
  93 +渲染效果:
  94 +1. Red
  95 +50. Green
  96 +1000. Blue
  97 +
  98 +### <font color=#C71585>【链接】</font>
  99 +在方括号后面用圆括号接上链接
  100 +
  101 + 这是一个[链接显示文本](http://www.baidu.com "链接title文本")
  102 +
  103 +渲染效果:
  104 +这是一个[链接显示文本](http://www.baidu.com "链接title文本")
  105 +
  106 +### <font color=#C71585>【图片】</font>
  107 +图片的语法和链接很像
  108 +
  109 + ![alt文本](amWiki/images/logo.png "Title")
  110 +
  111 +渲染效果:
  112 +![alt文本](amWiki/images/logo.png "Title")
  113 +
  114 +### <font color=#C71585>【代码】</font>
  115 +使用反引号 \` 来标记代码区段
  116 +
  117 + 我是`code`,`<div>division</div>`
  118 +
  119 +渲染效果:
  120 +我是`code`,`<div>division</div>`
  121 +
  122 +### <font color=#C71585>【代码段】</font>
  123 +如果要建立一个已经格式化好的代码区块,只要每行都缩进 4 个空格或是一个 tab 就可以了
  124 +
  125 + var name = 'Candy'
  126 +
  127 +渲染效果:
  128 +
  129 + var name = 'Candy'
  130 +
  131 +### <font color=#C71585>【表格】</font>
  132 +使用竖线分割内容,且同时使用“---”与“:”指定对齐方式
  133 +
  134 + | Header01 | Header02 | Header03
  135 + | -------- | :------: | ---:
  136 + | 默认 | 居中 | 右
  137 +
  138 +渲染效果:
  139 +
  140 +| Header01 | Header02 | Header03
  141 +| -------- | :------: | ---:
  142 +| 默认 | 居中 | 右
  143 +
  144 +### <font color=#C71585>【引用】</font>
  145 +只需要在文本前加入 > 这种尖括号(大于号)即可
  146 +
  147 + >这里是一段引用
  148 +
  149 +渲染效果:
  150 +>这里是一段引用
  151 +
  152 +### <font color=#C71585>【分割线】</font>
  153 +只需要三个 \- 号
  154 +
  155 + ---
  156 +
  157 +渲染效果:
  158 +
  159 +---
  160 +
  161 +### <font color=#C71585>【换行】</font>
  162 +只需要两个以上的空格然后回车
  163 +
  164 + 我是首行
  165 + 我换行了
  166 +
  167 +渲染效果:
  168 +我是首行
  169 +我换行了
  170 +
  171 +### <font color=#C71585>【html】</font>
  172 +可以直接在文档里书写 HTML,不需要额外标注这是 HTML
  173 +
  174 + <div>division</div>
  175 +
  176 +渲染效果:
  177 +<div>division</div>
  178 +
  179 +
  180 +## 研究更多 markdown 语法详细细节
  181 +
  182 +- [创始人 John Gruber 的 Markdown 语法说明](http://daringfireball.net/projects/markdown/syntax)
  183 +- [Markdown 中文版语法说明](http://wowubuntu.com/markdown/)
library/01-首页/05-学习markdown/02-amWiki与语法高亮.md 0 → 100644
  1 +# amWiki 与语法高亮
  2 +
  3 +amWiki使用 [highlight.js](https://github.com/isagalaev/highlight.js) 进行预语法高亮渲染,它能对多达一百多种语言、样式提供语法高亮解析
  4 +使用两组每组三个反引号分单独两行将代码包围起来,并在第一组反引号后写上语言类型即可使用语法高亮,例如:
  5 + ```js
  6 + //some js code here
  7 + ```
  8 +
  9 +## javascript / js 代码
  10 +普通代码块效果:
  11 +```
  12 +//发送验证码
  13 +function cd(num) {
  14 + $('#code').val(num + '秒后可重发');
  15 + setTimeout(function() {
  16 + if (num - 1 >= 0) {
  17 + cd(num - 1);
  18 + } else {
  19 + $('#code').removeClass('bg-gray').prop('disabled', false).val('重新发送验证码');
  20 + }
  21 + },
  22 + 1000);
  23 +}
  24 +```
  25 +```
  26 +{
  27 + "state": {
  28 + "code": 10200, //code状态码
  29 + "msg": "ok" //状态描述
  30 + },
  31 + "data": {
  32 + "team_num": 13, //队伍数
  33 + "position": "海珠区新港中路" //位置
  34 + }
  35 +}
  36 +```
  37 +
  38 +添加 `js`、`javascript` 标记后的效果:
  39 +```javascript
  40 +//发送验证码
  41 +function cd(num) {
  42 + $('#code').val(num + '秒后可重发');
  43 + setTimeout(function() {
  44 + if (num - 1 >= 0) {
  45 + cd(num - 1);
  46 + } else {
  47 + $('#code').removeClass('bg-gray').prop('disabled', false).val('重新发送验证码');
  48 + }
  49 + },
  50 + 1000);
  51 +}
  52 +```
  53 +```js
  54 +{
  55 + "state": {
  56 + "code": 10200, //code状态码
  57 + "msg": "ok" //状态描述
  58 + },
  59 + "data": {
  60 + "team_num": 13, //队伍数
  61 + "position": "海珠区新港中路" //位置
  62 + }
  63 +}
  64 +```
  65 +amWiki对javascript代码片段做了再次增强,可以点击代码块右上角按钮隐藏/显示注释
  66 +当注释处于隐藏状态时不会被复制,比较适合模拟返回json数据的接口时直接拷贝(json不允许注释)
  67 +
  68 +## Html 代码
  69 +普通代码段效果:
  70 +```
  71 +<body>
  72 + <div class="loading"><img src="/assets/images/loading.gif"></div>
  73 + <header>some text</header>
  74 + <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
  75 +</body>
  76 +```
  77 +添加 `html` 标记后的效果:
  78 +```html
  79 +<body>
  80 + <div class="loading"><img src="/assets/images/loading.gif"></div>
  81 + <header>some text</header>
  82 + <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
  83 +</body>
  84 +```
  85 +
  86 +## css 代码
  87 +普通代码段效果:
  88 +```
  89 +/* 紧凑 */
  90 +html,body{display:block;width:100%;height:100%;min-width:320px;}
  91 +a,img{-webkit-touch-callout:none;}
  92 +/* 展开 */
  93 +input[type="button"],
  94 +input[type="submit"],
  95 +input[type="reset"],
  96 +textarea {
  97 + -webkit-appearance: none;
  98 +}
  99 +```
  100 +
  101 +添加 `css` 标记后的效果:
  102 +```css
  103 +/* 紧凑 */
  104 +html,body{display:block;width:100%;height:100%;min-width:320px;}
  105 +a,img{-webkit-touch-callout:none;}
  106 +/* 展开 */
  107 +input[type="button"],
  108 +input[type="submit"],
  109 +input[type="reset"],
  110 +textarea {
  111 + -webkit-appearance: none;
  112 +}
  113 +```
  114 +
  115 +## php 代码
  116 +普通代码段效果:
  117 +```
  118 +private function addQuestData($data, $filing_id)
  119 + {
  120 + $quest_num = $data['status'] == 10 ? 1 : 2;
  121 + $where = [
  122 + ['user_filing_id', '=', $filing_id],
  123 + ['project_id', '=', $data['project_id']],
  124 + ['mobile','=', $data['mobile']],
  125 + ['quest_num', '=', $quest_num]
  126 + ];
  127 + }
  128 +```
  129 +添加 `php` 标记后的效果:
  130 +```php
  131 +private function addQuestData($data, $filing_id)
  132 + {
  133 + $quest_num = $data['status'] == 10 ? 1 : 2;
  134 + $where = [
  135 + ['user_filing_id', '=', $filing_id],
  136 + ['project_id', '=', $data['project_id']],
  137 + ['mobile','=', $data['mobile']],
  138 + ['quest_num', '=', $quest_num]
  139 + ];
  140 + }
  141 +```
  142 +
  143 +## sql 代码
  144 +普通代码段效果:
  145 +```
  146 +SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
  147 +```
  148 +添加 `sql` 标记后的效果:
  149 +```sql
  150 +SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
  151 +```
  152 +
  153 +## java 代码
  154 +普通代码段效果:
  155 +```
  156 +public class Test {
  157 + public static void main(String args[]) {
  158 + int x = 10;
  159 + while( x < 20 ) {
  160 + System.out.print("value of x : " + x );
  161 + x++;
  162 + System.out.print("\n");
  163 + }
  164 + }
  165 +}
  166 +```
  167 +添加 `java` 标记后的效果:
  168 +```java
  169 +public class Test {
  170 + public static void main(String args[]) {
  171 + int x = 10;
  172 + while( x < 20 ) {
  173 + System.out.print("value of x : " + x );
  174 + x++;
  175 + System.out.print("\n");
  176 + }
  177 + }
  178 +}
  179 +```
library/01-首页/05-学习markdown/03-amWiki与流程图.md 0 → 100644
  1 +# amWiki 与流程图
  2 +
  3 +amWiki 使用 [flowchart.js](https://github.com/adrai/flowchart.js) 进行流程图渲染,它是一款将文本表达式绘制为简单的 svg 流程图的图形库
  4 +流程图代码块和语法高亮类似,不过类型声明须用 `flow` 关键字
  5 + ```flow
  6 + //your flow text here
  7 + ```
  8 +
  9 +## 流程图样例
  10 +代码:
  11 +
  12 + ```flow
  13 + st=>start: Start :>https://amwiki.xf09.net[blank]
  14 + e=>end: End :>https://amwiki.xf09.net[blank]
  15 + op1=>operation: My Operation
  16 + op2=>operation: Stuff
  17 + sub1=>subroutine: My Subroutine
  18 + cond=>condition: Yes or No? :>https://amwiki.xf09.net[blank]
  19 + c2=>condition: Good idea
  20 + io=>inputoutput: catch something...
  21 +
  22 + st->op1(right)->cond
  23 + cond(yes, right)->c2
  24 + cond(no)->sub1(left)->op1
  25 + c2(yes)->io->e
  26 + c2(no)->op2->e
  27 + ```
  28 +效果:
  29 +
  30 +```flow
  31 +st=>start: Start :>https://amwiki.xf09.net[blank]
  32 +e=>end: End :>https://amwiki.xf09.net[blank]
  33 +op1=>operation: My Operation
  34 +op2=>operation: Stuff
  35 +sub1=>subroutine: My Subroutine
  36 +cond=>condition: Yes or No? :>https://amwiki.xf09.net[blank]
  37 +c2=>condition: Good idea
  38 +io=>inputoutput: catch something...
  39 +
  40 +st->op1(right)->cond
  41 +cond(yes, right)->c2
  42 +cond(no)->sub1(left)->op1
  43 +c2(yes)->io->e
  44 +c2(no)->op2->e
  45 +```
  46 +
  47 +## 流程图语法介绍
  48 +流程图语法分两个部分,一个是声明元素,一个是定义流程
  49 +
  50 +### 声明元素
  51 +语法:
  52 +
  53 + tag=>type: content :>url
  54 +
  55 +1. `tag` 设置元素名称
  56 +2. `=>` 元素定义符
  57 +2. `type:` 设置元素类型,共分6种:
  58 + - **start**:开始,圆角矩形
  59 + - **end**:结束,圆角矩形
  60 + - **operation**:操作/行动方案,普通矩形
  61 + - **subroutine**:子主题/模块,双边线矩形
  62 + - **condition**:条件判断/问题审核,菱形
  63 + - **inputoutput**:输入输出,平行四边形
  64 +3. `content` 设置元素显示内容,中英均可
  65 +4. `:>url` 设置元素连接,可选,后接 [blank] 可以新建窗口打开
  66 +
  67 +提示:注意空格,`=>` 前后都不能接空格;`type:` 后必须接空格;`:>` 是语法标记,中间不能有空格
  68 +
  69 +### 定义流程
  70 +语法:
  71 +
  72 + tag1(branch,direction)->tag2
  73 +
  74 +1. `->` 流程定义符,连接两个元素
  75 +2. `branch` 设置 condition 类型元素的两个分支,有 `yes`/`no` 两个值,其他元素无效
  76 +3. `direction` 定义流程走线方向,有 `left`/`right`/`top`/`bottom` 四个值,所有元素有效,此项配置可选 (ps:此属性容易造成渲染 bug)
  77 +
  78 +小提示:
  79 +- 继续注意空格,`->` 前后都不能有空格
  80 +- 由于 condition 类型有两个分支,我们一般遇到 condition 元素就换行书写,比如:
  81 + st->op1-c2
  82 + c2(yes)->io->e
  83 + c2(no)->op2->e
library/01-首页/05-学习markdown/05-Atom对Markdown的原生支持.md 0 → 100644
  1 +# Atom 编辑器对 Markdown 的原生支持
  2 +
  3 +Atom 是 Github 开发的开源跨平台的编辑器,原生支持编辑 Markdown 文档
  4 +
  5 +## 自动完成 Markdown 语法标记
  6 +
  7 +### 代码段效果-code
  8 +输入 `c + Enter`
  9 +
  10 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-2c594bb9.png)
  11 +
  12 +### 粗体效果-bold
  13 +输入 `b + Enter`
  14 +
  15 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-8620325c.png)
  16 +
  17 +### 斜体效果-italic
  18 +输入 `i + Enter`
  19 +
  20 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-0e8a6768.png)
  21 +
  22 +### 链接效果-link
  23 +输入 `l + Enter`
  24 +
  25 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-5bd90b0f.png)
  26 +
  27 +### 图片效果-img
  28 +输入 `im + Enter`
  29 +
  30 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-e03a0fc8.png)
  31 +
  32 +### 表格效果-table
  33 +输入 `ta + Enter`
  34 +
  35 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-fbed2544.png)
  36 +
  37 +<!--
  38 +### todo效果-list
  39 +输入`t + Enter`
  40 +
  41 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-01a27e09.png)
  42 +-->
  43 +
  44 +## 自动补齐二次单词输入
  45 +在第二次输入时,单词可以自动识别与补齐,回车即可完成输入
  46 +
  47 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-efba45f0.png)
  48 +
  49 +## 内置 Markdown 即时预览插件
  50 +编辑 Markdown 文档时,使用快捷键 `ctrl + shift + m` 即可在窗口右侧打开 Atom 内置的 markdown-preview 即时预览模块
  51 +
  52 +![](https://amwiki.xf09.net/docs/assets/001.tiny/13-75213ccd.png)
library/01-首页/06-使用测试模块测试接口.md 0 → 100644
  1 +# 使用测试模块测试接口
  2 +
  3 +让文档与测试一步搞定!
  4 +
  5 +## 激活测试的条件
  6 +##### 当一篇文档中使用了 `“请求地址”`、`“请求类型”`、`“请求参数”` 三个字段作为 `h3标题` 并配套对应内容时,将激活接口测试功能
  7 +![](https://amwiki.xf09.net/docs/assets/001.tiny/06-8a6d91f1.png)
  8 +(详细书写格式请参照[通用API接口文档示例](?file=002-文档示范/001-通用API接口文档示例))
  9 +
  10 +##### 此时文档右上角将出现 `“接口测试”` 按钮,例如:
  11 +![](https://amwiki.xf09.net/docs/assets/001.tiny/04-e412c7fd.png)
  12 +
  13 +## 接口测试的工作原理与步骤
  14 +1. 当测试模块处于打开状态时,每次打开文档都会扫描文档转换 html 后的内容,满足三个 h3 时即开启测试功能
  15 +2. 开启当前文档测试功能后,即会从页面上 **抓取** 符合一定格式的测试内容
  16 +3. 格式化抓取的内容并生成可再次修改的表单
  17 +4. 用户点击发送请求时,先并入全局参数到当前参数列表,再发送请求
  18 +5. 收到请求结果,格式化显示
  19 +
  20 +## 接口测试文档的格式要求
  21 +
  22 +### 请求地址的格式
  23 +请求地址可以使用带 http 与不带 http 两种,下面两种写法都是合适的
  24 +
  25 + /api/customer-flow
  26 + http://localhost/api/customer-flow
  27 +
  28 +注意,不带 http 将自动和当前域名拼合为完整绝对路径,而不是使用相对路径
  29 +
  30 +### 请求类型的格式
  31 +amWiki 暂时只支持 **Get**、**Post**、**Put**、**Delete** 四种普通 ajax 请求,不支持文件上传和其他高级方式通讯
  32 +
  33 +### 请求参数的格式
  34 +- 当接口不需要参数时,直接使用 **“无”** 即可
  35 +![](https://amwiki.xf09.net/docs/assets/001.tiny/06-e030ca95.png)
  36 +- 请求参数列表必须使用 **表格**,且必须按 `参数名`、`类型`、`必填`、`描述`、`默认值`、`参考值` 的栏目顺序建立表格,否则不能正常抓取。
  37 +![](https://amwiki.xf09.net/docs/assets/001.tiny/06-5a7fda87.png)
  38 +其中:
  39 + - 默认值与参考值同属参数的值,但是优先显示默认值,只有当没有默认值时参考值才有效,参考值是为了方便测试之用
  40 + - 参考值一栏可选,不写参考值的整个表格栏位,不会影响测试功能
  41 +
  42 +## 测试功能应用
  43 +
  44 +### 测试面板
  45 +抓取测试内容生成测试表单如下
  46 +![](https://amwiki.xf09.net/docs/assets/001.tiny/06-c0d8d3cb.png)
  47 +
  48 +### 全局参数面板
  49 +全局参数影响所有接口,在全局参数面板可以进行新增、删除全局参数以及临时启用/禁用全局参数等操作
  50 +![](https://amwiki.xf09.net/docs/assets/001.tiny/06-c19f1829.png)
  51 +
  52 +### 返回响应
  53 +成功的响应:
  54 +![](https://amwiki.xf09.net/docs/assets/001.tiny/06-6f851b27.png)
  55 +失败的响应:
  56 +![](https://amwiki.xf09.net/docs/assets/001.tiny/06-bf211990.png)
  57 +
  58 +## 测试模块的问题
  59 +- 测试模只能请求同域接口,不能跨域。 (跨域解决方案请参考[amWiki转接到任意域名进行接口测试](?file=001-学习amWiki/30-amWiki转接到任意域名进行接口测试))
  60 +- 如果接口需要登录权限,请先登录您自己的系统。
library/01-首页/07-amWiki转接到任意域名进行接口测试.md 0 → 100644
  1 +# amWiki 转接到任意域名进行接口测试
  2 +
  3 +我们分两种情况进行文档转接,一种是我们有域名服务器操作权限,一种是没有
  4 +
  5 +## 有域名服务器操作权限的转接
  6 +如果我们有域名服务器操作权限,那要把其他域名下的文档转接到当前域名下,其实很简单,就是一个 **反向代理** 的过程
  7 +
  8 +以 nginx 为例,将地址 https://amwiki.xf09.net/docs/ 下所有文档转接到任意域名(_无需https_) /wiki 路径下
  9 +```nginx
  10 +server {
  11 + listen 81;
  12 + server_name abc123.com;
  13 + location /wiki {
  14 + proxy_pass https://amwiki.xf09.net/docs/;
  15 + proxy_redirect off;
  16 + #proxy_set_header Host $host;
  17 + proxy_set_header X-Real-IP $remote_addr;
  18 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19 + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  20 + proxy_max_temp_file_size 0k;
  21 + proxy_connect_timeout 90;
  22 + proxy_send_timeout 90;
  23 + proxy_read_timeout 90;
  24 + proxy_buffer_size 4k;
  25 + proxy_buffers 4 32k;
  26 + proxy_busy_buffers_size 64k;
  27 + proxy_temp_file_write_size 64k;
  28 + }
  29 + # other settings ...
  30 +}
  31 +```
  32 +
  33 +## 无域名服务器操作权限
  34 +此时,如果想要将我们的文档转接到对应域名上去,需要利用抓包工具 Fiddler 进行 **请求代理**
  35 +(_请下载安装抓包工具 [Fiddler](http://www.telerik.com/fiddler),并了解 AutoResponder 面板的使用_)
  36 +
  37 +由于 https 特殊性,我们分两种情况来讨论:
  38 +
  39 +### http 请求代理
  40 +当原域名基于 http 通信时,由于 http 请求是一种很开放的通信,我们可以直接用 fiddler 非常简单的进行转接
  41 +
  42 +比如,我们继续把地址 https://amwiki.xf09.net/docs/ 下所有文档转接到任意域名 /wiki 路径下
  43 +只需要如下配置 AutoResponder:
  44 +
  45 +![](https://amwiki.xf09.net/docs/assets/001.tiny/07-c1ef9812.png)
  46 +规则代码如下:
  47 +
  48 + regex:.+abc123\.com\/wiki\/(.+)$
  49 + https://amwiki.xf09.net/docs/$1
  50 +
  51 +第一行代码为请求匹配,其中 `regex:` 表示按正则表达式进行匹配,`.+abc123\.com\/wiki\/` 表示需要代理的路径,`(.+)$` (和第二行配合)表示转接后续的路径,即将后续路径替换到第二行代码中的 `$1`
  52 +
  53 +| | 转接地址 | 实际请求地址 |
  54 +| : ---| :--- | :--- |
  55 +| 例1 | http://abc123.com/wiki/index.html | https://amwiki.xf09.net/docs/index.html |
  56 +| 例2 | http://abc123.com/wiki/amWiki/js/amWiki.js | https://amwiki.xf09.net/docs/amWiki/js/amWiki.js |
  57 +
  58 +### https 请求代理
  59 +当原域名基于 https 通讯是,我们需要更多的操作才能使用代理 (Fiddler 抓包 https 的原理,有兴趣可自行知乎一下)
  60 +
  61 +- **第一步,开启 https 解码**
  62 + Tools -> Fiddler Options -> HTTPS -> 依次勾选如下
  63 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/07-ea6ad78e.png)
  64 +- **第二步,是安装 Fiddler 根证书**
  65 + 打开 http://localhost:8888/ 下载Fiddler 根证书并安装
  66 + ![](https://amwiki.xf09.net/docs/assets/001.tiny/07-c59334fc.png)
  67 +- **第三步,按照 http 的方式进行代理**
  68 + 例如,我们转接到百度域名的一个路径下
  69 +
  70 + regex:.+www\.baidu\.com\/wiki\/(.+)$
  71 + https://amwiki.xf09.net/docs/$1
  72 +
  73 + 此时,我们打开 https://www.baidu.com/wiki/index.html 会发现,不再是“很抱歉,您要访问的页面不存在!”了
library/02-车场概览/001-通用API接口文档示例.md 0 → 100644
  1 +# 客户日志流水接口示例
  2 +>维护人员:**Tevin**
  3 +>创建时间:2016-04-06
  4 +
  5 +## 接口简介
  6 +实时查询客户各种操作(例如登录,拓客等)的流水日志
  7 +
  8 +## 接口详情
  9 +
  10 +### 请求地址
  11 +/api/customer-flow
  12 +
  13 +### 请求类型
  14 +GET
  15 +
  16 +### 请求参数
  17 +| 参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
  18 +| --- | :---: | :---: | --- | --- | --- |
  19 +| customer_id | number | 是 | 客户id | - | 132 |
  20 +| type | number | 否 | 客户类型,0所有、1扩展、2报备、3成交 | - | 1 |
  21 +
  22 +### 返回正确JSON示例
  23 +```javascript
  24 +{
  25 + "state": {
  26 + "code": 10200,
  27 + "msg": "ok"
  28 + },
  29 + "data": {
  30 + "id": 307, //流水id
  31 + "real_name": "Tevin", //用户名称
  32 + "mobile": "暂无", //用户手机
  33 + "origin": "暂无", //用户来源
  34 + "created_at": "2016-04-04 20:00:00", //加入时间
  35 + "last_login": "2016-05-22 15:30:21", //最后登录时间
  36 + "log": [] //日志列表
  37 + }
  38 +}
  39 +```
  40 +### 返回错误JSON示例
  41 +```javascript
  42 +{
  43 + "state": {
  44 + "code": 10500
  45 + "msg": "服务器未知报错"
  46 + }
  47 +}
  48 +```
  49 +
  50 +### 备注说明
  51 +无
  52 +
  53 +### 修改日志
  54 +- 【2016-05-22】
  55 + 新增了last_login最后登录时间字段
library/02-车场概览/002-超长文档页内目录示例.md 0 → 100644
  1 +# 微信JS-SDK说明文档(超长文档页内目录示例)
  2 +
  3 +>1. [概述](#概述 "概述")
  4 + 1. [JSSDK使用步骤](#JSSDK使用步骤 "JSSDK使用步骤")
  5 + 1. [接口调用说明](#接口调用说明 "接口调用说明")
  6 +1. [基础接口](#基础接口 "基础接口")
  7 + 1. [判断当前客户端版本是否支持指定JS接口](#判断当前客户端版本是否支持指定JS接口 "判断当前客户端版本是否支持指定JS接口")
  8 + 1. [分享接口](#分享接口 "分享接口")
  9 + 1. [获取“分享到朋友圈”按钮点击状态及自定义分享内容接口](#获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 "获取“分享到朋友圈”按钮点击状态及自定义分享内容接口")
  10 + 1. [获取“分享给朋友”按钮点击状态及自定义分享内容接口](#获取“分享给朋友”按钮点击状态及自定义分享内容接口 "获取“分享给朋友”按钮点击状态及自定义分享内容接口")
  11 + 1. [获取“分享到QQ”按钮点击状态及自定义分享内容接口](#获取“分享到QQ”按钮点击状态及自定义分享内容接口 "获取“分享到QQ”按钮点击状态及自定义分享内容接口")
  12 + 1. [获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口](#获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 "获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口")
  13 + 1. [获取“分享到QQ空间”按钮点击状态及自定义分享内容接口](#获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 "获取“分享到QQ空间”按钮点击状态及自定义分享内容接口")
  14 +1. [图像接口](#图像接口 "图像接口")
  15 + 1. [拍照或从手机相册中选图接口](#拍照或从手机相册中选图接口 "拍照或从手机相册中选图接口")
  16 + 1. [预览图片接口](#预览图片接口 "预览图片接口")
  17 + 1. [上传图片接口](#上传图片接口 "上传图片接口")
  18 + 1. [下载图片接口](#下载图片接口 "下载图片接口")
  19 +1. [音频接口](#音频接口 "音频接口")
  20 + 1. [开始录音接口](#开始录音接口 "开始录音接口")
  21 + 1. [停止录音接口](#停止录音接口 "停止录音接口")
  22 + 1. [监听录音自动停止接口](#监听录音自动停止接口 "监听录音自动停止接口")
  23 + 1. [播放语音接口](#播放语音接口 "播放语音接口")
  24 + 1. [暂停播放接口](#暂停播放接口 "暂停播放接口")
  25 + 1. [停止播放接口](#停止播放接口 "停止播放接口")
  26 + 1. [监听语音播放完毕接口](#监听语音播放完毕接口 "监听语音播放完毕接口")
  27 + 1. [上传语音接口](#上传语音接口 "上传语音接口")
  28 + 1. [下载语音接口](#下载语音接口 "下载语音接口")
  29 +1. [智能接口](#智能接口 "智能接口")
  30 + 1. [识别音频并返回识别结果接口](#识别音频并返回识别结果接口 "识别音频并返回识别结果接口")
  31 +1. [设备信息](#设备信息 "设备信息")
  32 + 1. [获取网络状态接口](#获取网络状态接口 "获取网络状态接口")
  33 +1. [地理位置](#地理位置 "地理位置")
  34 + 1. [使用微信内置地图查看位置接口](#使用微信内置地图查看位置接口 "使用微信内置地图查看位置接口")
  35 + 1. [获取地理位置接口](#获取地理位置接口 "获取地理位置接口")
  36 +1. [摇一摇周边](#摇一摇周边 "摇一摇周边")
  37 + 1. [开启查找周边ibeacon设备接口](#开启查找周边ibeacon设备接口 "开启查找周边ibeacon设备接口")
  38 + 1. [关闭查找周边ibeacon设备接口](#关闭查找周边ibeacon设备接口 "关闭查找周边ibeacon设备接口")
  39 + 1. [监听周边ibeacon设备接口](#监听周边ibeacon设备接口 "监听周边ibeacon设备接口")
  40 +1. [界面操作](#界面操作 "界面操作")
  41 + 1. [隐藏右上角菜单接口](#隐藏右上角菜单接口 "隐藏右上角菜单接口")
  42 + 1. [显示右上角菜单接口](#显示右上角菜单接口 "显示右上角菜单接口")
  43 + 1. [关闭当前网页窗口接口](#关闭当前网页窗口接口 "关闭当前网页窗口接口")
  44 + 1. [批量隐藏功能按钮接口](#批量隐藏功能按钮接口 "批量隐藏功能按钮接口")
  45 + 1. [批量显示功能按钮接口](#批量显示功能按钮接口 "批量显示功能按钮接口")
  46 + 1. [隐藏所有非基础按钮接口](#隐藏所有非基础按钮接口 "隐藏所有非基础按钮接口")
  47 + 1. [显示所有功能按钮接口](#显示所有功能按钮接口 "显示所有功能按钮接口")
  48 +1. [微信扫一扫](#微信扫一扫 "微信扫一扫")
  49 + 1. [调起微信扫一扫接口](#调起微信扫一扫接口 "调起微信扫一扫接口")
  50 +1. [微信小店](#微信小店 "微信小店")
  51 + 1. [跳转微信商品页接口](#跳转微信商品页接口 "跳转微信商品页接口")
  52 +1. [微信卡券](#微信卡券 "微信卡券")
  53 + 1. [获取api_ticket](#获取api_ticket "获取api_ticket")
  54 + 1. [拉取适用卡券列表并获取用户选择信息](#拉取适用卡券列表并获取用户选择信息 "拉取适用卡券列表并获取用户选择信息")
  55 + 1. [批量添加卡券接口](#批量添加卡券接口 "批量添加卡券接口")
  56 + 1. [查看微信卡包中的卡券接口](#查看微信卡包中的卡券接口 "查看微信卡包中的卡券接口")
  57 + 1. [核销后再次赠送卡券接口](#核销后再次赠送卡券接口 "核销后再次赠送卡券接口")
  58 +1. [微信支付](#微信支付 "微信支付")
  59 + 1. [发起一个微信支付请求](#发起一个微信支付请求 "发起一个微信支付请求")
  60 +
  61 +
  62 +## 概述
  63 +
  64 +微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。
  65 +
  66 +通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
  67 +
  68 +此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项。
  69 +
  70 +### JSSDK使用步骤
  71 +
  72 +#### 步骤一:绑定域名
  73 +
  74 +先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。**如果你使用了支付类接口,请确保支付目录在该安全域名下,否则将无法完成支付。**
  75 +
  76 +备注:登录后可在“开发者中心”查看对应的接口权限。
  77 +
  78 +#### 步骤二:引入JS文件
  79 +
  80 +在需要调用JS接口的页面引入如下JS文件,(支持https):
  81 +[http://res.wx.qq.com/open/js/jweixin-1.0.0.js](http://res.wx.qq.com/open/js/jweixin-1.0.0.js)
  82 +
  83 +**请注意,如果你的页面启用了https,务必引入** [https://res.wx.qq.com/open/js/jweixin-1.0.0.js](https://res.wx.qq.com/open/js/jweixin-1.0.0.js) ,**否则将无法在iOS9.0以上系统中成功使用JSSDK**
  84 +
  85 +如需使用摇一摇周边功能,请引入 jweixin-1.1.0.js
  86 +
  87 +备注:支持使用 AMD/CMD 标准模块加载方法加载
  88 +
  89 +#### 步骤三:通过config接口注入权限验证配置
  90 +
  91 +**所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用**(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。
  92 +
  93 +```javascript
  94 +wx.config({
  95 + debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  96 + appId: '', // 必填,公众号的唯一标识
  97 + timestamp: , // 必填,生成签名的时间戳
  98 + nonceStr: '', // 必填,生成签名的随机串
  99 + signature: '',// 必填,签名,见附录1
  100 + jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  101 +});
  102 +```
  103 +
  104 +#### 步骤四:通过ready接口处理成功验证
  105 +```javascript
  106 +wx.ready(function(){
  107 + // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
  108 +});
  109 +```
  110 +
  111 +#### 步骤五:通过error接口处理失败验证
  112 +```javascript
  113 +wx.error(function(res){
  114 + // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
  115 +});
  116 +```
  117 +### 接口调用说明
  118 +
  119 +所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:
  120 +
  121 +1. success:接口调用成功时执行的回调函数。
  122 +1. fail:接口调用失败时执行的回调函数。
  123 +1. complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
  124 +1. cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
  125 +1. trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
  126 +
  127 +备注:**不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。**
  128 +
  129 +以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下:
  130 +
  131 +1. 调用成功时:"xxx:ok" ,其中xxx为调用的接口名
  132 +1. 用户取消时:"xxx:cancel",其中xxx为调用的接口名
  133 +1. 调用失败时:其值为具体错误信息
  134 +
  135 +## 基础接口
  136 +
  137 +### 判断当前客户端版本是否支持指定JS接口
  138 +
  139 +```javascript
  140 +wx.checkJsApi({
  141 + jsApiList: ['chooseImage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
  142 + success: function(res) {
  143 + // 以键值对的形式返回,可用的api值true,不可用为false
  144 + // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
  145 + }
  146 +});
  147 +```
  148 +备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,第一期开放的接口均可不使用checkJsApi来检测。
  149 +
  150 +### 分享接口
  151 +
  152 +请注意不要有诱导分享等违规行为,对于诱导分享行为将永久回收公众号接口权限,详细规则请查看:朋友圈管理常见问题。
  153 +
  154 +### 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
  155 +
  156 +```javascript
  157 +wx.onMenuShareTimeline({
  158 + title: '', // 分享标题
  159 + link: '', // 分享链接
  160 + imgUrl: '', // 分享图标
  161 + success: function () {
  162 + // 用户确认分享后执行的回调函数
  163 + },
  164 + cancel: function () {
  165 + // 用户取消分享后执行的回调函数
  166 + }
  167 +});
  168 +```
  169 +
  170 +### 获取“分享给朋友”按钮点击状态及自定义分享内容接口
  171 +```javascript
  172 +wx.onMenuShareAppMessage({
  173 + title: '', // 分享标题
  174 + desc: '', // 分享描述
  175 + link: '', // 分享链接
  176 + imgUrl: '', // 分享图标
  177 + type: '', // 分享类型,music、video或link,不填默认为link
  178 + dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
  179 + success: function () {
  180 + // 用户确认分享后执行的回调函数
  181 + },
  182 + cancel: function () {
  183 + // 用户取消分享后执行的回调函数
  184 + }
  185 +});
  186 +```
  187 +
  188 +### 获取“分享到QQ”按钮点击状态及自定义分享内容接口
  189 +```javascript
  190 +wx.onMenuShareQQ({
  191 + title: '', // 分享标题
  192 + desc: '', // 分享描述
  193 + link: '', // 分享链接
  194 + imgUrl: '', // 分享图标
  195 + success: function () {
  196 + // 用户确认分享后执行的回调函数
  197 + },
  198 + cancel: function () {
  199 + // 用户取消分享后执行的回调函数
  200 + }
  201 +});
  202 +```
  203 +
  204 +### 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口
  205 +```javascript
  206 +wx.onMenuShareWeibo({
  207 + title: '', // 分享标题
  208 + desc: '', // 分享描述
  209 + link: '', // 分享链接
  210 + imgUrl: '', // 分享图标
  211 + success: function () {
  212 + // 用户确认分享后执行的回调函数
  213 + },
  214 + cancel: function () {
  215 + // 用户取消分享后执行的回调函数
  216 + }
  217 +});
  218 +```
  219 +
  220 +### 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口
  221 +```javascript
  222 +wx.onMenuShareQZone({
  223 + title: '', // 分享标题
  224 + desc: '', // 分享描述
  225 + link: '', // 分享链接
  226 + imgUrl: '', // 分享图标
  227 + success: function () {
  228 + // 用户确认分享后执行的回调函数
  229 + },
  230 + cancel: function () {
  231 + // 用户取消分享后执行的回调函数
  232 + }
  233 +});
  234 +```
  235 +
  236 +## 图像接口
  237 +
  238 +### 拍照或从手机相册中选图接口
  239 +```javascript
  240 +wx.chooseImage({
  241 + count: 1, // 默认9
  242 + sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  243 + sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  244 + success: function (res) {
  245 + var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
  246 + }
  247 +});
  248 +```
  249 +
  250 +### 预览图片接口
  251 +```javascript
  252 +wx.previewImage({
  253 + current: '', // 当前显示图片的http链接
  254 + urls: [] // 需要预览的图片http链接列表
  255 +});
  256 +```
  257 +
  258 +### 上传图片接口
  259 +```javascript
  260 +wx.uploadImage({
  261 + localId: '', // 需要上传的图片的本地ID,由chooseImage接口获得
  262 + isShowProgressTips: 1, // 默认为1,显示进度提示
  263 + success: function (res) {
  264 + var serverId = res.serverId; // 返回图片的服务器端ID
  265 + }
  266 +});
  267 +```
  268 +
  269 +备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id,参考文档 ../12/58bfcfabbd501c7cd77c19bd9cfa8354.html 目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请邮件weixin-open@qq.com,邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述,附上产品体验链接,并对用户量和使用量进行说明。
  270 +
  271 +### 下载图片接口
  272 +```javascript
  273 +wx.downloadImage({
  274 + serverId: '', // 需要下载的图片的服务器端ID,由uploadImage接口获得
  275 + isShowProgressTips: 1, // 默认为1,显示进度提示
  276 + success: function (res) {
  277 + var localId = res.localId; // 返回图片下载后的本地ID
  278 + }
  279 +});
  280 +```
  281 +
  282 +## 音频接口
  283 +
  284 +### 开始录音接口
  285 +```javascript
  286 +wx.startRecord();
  287 +```
  288 +
  289 +### 停止录音接口
  290 +```javascript
  291 +wx.stopRecord({
  292 + success: function (res) {
  293 + var localId = res.localId;
  294 + }
  295 +});
  296 +```
  297 +
  298 +### 监听录音自动停止接口
  299 +```javascript
  300 +wx.onVoiceRecordEnd({
  301 + // 录音时间超过一分钟没有停止的时候会执行 complete 回调
  302 + complete: function (res) {
  303 + var localId = res.localId;
  304 + }
  305 +});
  306 +```
  307 +
  308 +### 播放语音接口
  309 +```javascript
  310 +wx.playVoice({
  311 + localId: '' // 需要播放的音频的本地ID,由stopRecord接口获得
  312 +});
  313 +```
  314 +
  315 +### 暂停播放接口
  316 +```javascript
  317 +wx.pauseVoice({
  318 + localId: '' // 需要暂停的音频的本地ID,由stopRecord接口获得
  319 +});
  320 +```
  321 +
  322 +### 停止播放接口
  323 +```javascript
  324 +wx.stopVoice({
  325 + localId: '' // 需要停止的音频的本地ID,由stopRecord接口获得
  326 +});
  327 +```
  328 +
  329 +### 监听语音播放完毕接口
  330 +```javascript
  331 +wx.onVoicePlayEnd({
  332 + success: function (res) {
  333 + var localId = res.localId; // 返回音频的本地ID
  334 + }
  335 +});
  336 +```
  337 +
  338 +### 上传语音接口
  339 +```javascript
  340 +wx.uploadVoice({
  341 + localId: '', // 需要上传的音频的本地ID,由stopRecord接口获得
  342 + isShowProgressTips: 1, // 默认为1,显示进度提示
  343 + success: function (res) {
  344 + var serverId = res.serverId; // 返回音频的服务器端ID
  345 + }
  346 +});
  347 +```
  348 +
  349 +备注:上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器,此处获得的 serverId 即 media_id,参考文档 ../12/58bfcfabbd501c7cd77c19bd9cfa8354.html 目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请邮件weixin-open@qq.com,邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述,附上产品体验链接,并对用户量和使用量进行说明。
  350 +
  351 +### 下载语音接口
  352 +```javascript
  353 +wx.downloadVoice({
  354 + serverId: '', // 需要下载的音频的服务器端ID,由uploadVoice接口获得
  355 + isShowProgressTips: 1, // 默认为1,显示进度提示
  356 + success: function (res) {
  357 + var localId = res.localId; // 返回音频的本地ID
  358 + }
  359 +});
  360 +```
  361 +
  362 +## 智能接口
  363 +
  364 +### 识别音频并返回识别结果接口
  365 +```javascript
  366 +wx.translateVoice({
  367 + localId: '', // 需要识别的音频的本地Id,由录音相关接口获得
  368 + isShowProgressTips: 1, // 默认为1,显示进度提示
  369 + success: function (res) {
  370 + alert(res.translateResult); // 语音识别的结果
  371 + }
  372 +});
  373 +```
  374 +
  375 +## 设备信息
  376 +
  377 +### 获取网络状态接口
  378 +```javascript
  379 +wx.getNetworkType({
  380 + success: function (res) {
  381 + var networkType = res.networkType; // 返回网络类型2g,3g,4g,wifi
  382 + }
  383 +});
  384 +```
  385 +
  386 +## 地理位置
  387 +
  388 +### 使用微信内置地图查看位置接口
  389 +```javascript
  390 +wx.openLocation({
  391 + latitude: 0, // 纬度,浮点数,范围为90 ~ -90
  392 + longitude: 0, // 经度,浮点数,范围为180 ~ -180。
  393 + name: '', // 位置名
  394 + address: '', // 地址详情说明
  395 + scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大
  396 + infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
  397 +});
  398 +```
  399 +
  400 +### 获取地理位置接口
  401 +```javascript
  402 +wx.getLocation({
  403 + type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  404 + success: function (res) {
  405 + var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
  406 + var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
  407 + var speed = res.speed; // 速度,以米/每秒计
  408 + var accuracy = res.accuracy; // 位置精度
  409 + }
  410 +});
  411 +```
  412 +
  413 +## 摇一摇周边
  414 +
  415 +### 开启查找周边ibeacon设备接口
  416 +```javascript
  417 +wx.startSearchBeacons({
  418 + ticket: "", // 摇周边的业务ticket, 系统自动添加在摇出来的页面链接后面
  419 + complete: function(argv) {
  420 + // 开启查找完成后的回调函数
  421 + }
  422 +});
  423 +```
  424 +
  425 +备注:如需接入摇一摇周边功能,请参考:申请开通摇一摇周边
  426 +
  427 +### 关闭查找周边ibeacon设备接口
  428 +```javascript
  429 +wx.stopSearchBeacons({
  430 + complete:function(res){
  431 + //关闭查找完成后的回调函数
  432 + }
  433 +});
  434 +```
  435 +
  436 +### 监听周边ibeacon设备接口
  437 +```javascript
  438 +wx.onSearchBeacons({
  439 + complete:function(argv){
  440 + //回调函数,可以数组形式取得该商家注册的在周边的相关设备列表
  441 + }
  442 +});
  443 +```
  444 +
  445 +备注:上述摇一摇周边接口使用注意事项及更多返回结果说明,请参考:摇一摇周边获取设备信息
  446 +
  447 +## 界面操作
  448 +
  449 +### 隐藏右上角菜单接口
  450 +```javascript
  451 +wx.hideOptionMenu();
  452 +```
  453 +
  454 +### 显示右上角菜单接口
  455 +```javascript
  456 +wx.showOptionMenu();
  457 +```
  458 +
  459 +### 关闭当前网页窗口接口
  460 +```javascript
  461 +wx.closeWindow();
  462 +```
  463 +
  464 +### 批量隐藏功能按钮接口
  465 +```javascript
  466 +wx.hideMenuItems({
  467 + menuList: [] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
  468 +});
  469 +```
  470 +
  471 +### 批量显示功能按钮接口
  472 +```javascript
  473 +wx.showMenuItems({
  474 + menuList: [] // 要显示的菜单项,所有menu项见附录3
  475 +});
  476 +```
  477 +
  478 +### 隐藏所有非基础按钮接口
  479 +```javascript
  480 +wx.hideAllNonBaseMenuItem();
  481 +// “基本类”按钮详见附录3
  482 +```
  483 +
  484 +### 显示所有功能按钮接口
  485 +```javascript
  486 +wx.showAllNonBaseMenuItem();
  487 +```
  488 +
  489 +## 微信扫一扫
  490 +
  491 +### 调起微信扫一扫接口
  492 +```javascript
  493 +wx.scanQRCode({
  494 + needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  495 + scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  496 + success: function (res) {
  497 + var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
  498 + }
  499 +});
  500 +```
  501 +
  502 +## 微信小店
  503 +
  504 +### 跳转微信商品页接口
  505 +```javascript
  506 +wx.openProductSpecificView({
  507 + productId: '', // 商品id
  508 + viewType: '' // 0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页
  509 +});
  510 +```
  511 +
  512 +## 微信卡券
  513 +
  514 +微信卡券接口中使用的签名凭证api_ticket,与步骤三中config使用的签名凭证jsapi_ticket不同,开发者在调用微信卡券JS-SDK的过程中需依次完成两次不同的签名,并确保凭证的缓存。
  515 +
  516 +### 获取api_ticket
  517 +
  518 +api_ticket 是用于调用微信卡券JS API的临时票据,有效期为7200 秒,通过access_token 来获取。
  519 +
  520 +开发者注意事项:
  521 +
  522 +1. **此用于卡券接口签名的api_ticket与步骤三中通过config接口注入权限验证配置使用的jsapi_ticket不同。**
  523 +2. 由于获取api_ticket 的api 调用次数非常有限,频繁刷新api_ticket 会导致api调用受限,影响自身业务,开发者需在自己的服务存储与更新api_ticket。
  524 +
  525 +#### 接口调用请求说明
  526 +
  527 + http请求方式: GET
  528 + https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card
  529 +
  530 +#### 参数说明
  531 +| 参数 | 是否必须 | 说明 |
  532 +| --- | --- | --- |
  533 +| access_token | 是 | 调用接口凭证 |
  534 +
  535 +#### 返回数据
  536 +
  537 +数据示例:
  538 +```JSON
  539 +{
  540 + "errcode": 0,
  541 + "errmsg": "ok",
  542 + "ticket": "bxLdikRXVbTPdHSM05e5u5sUoXNKdvsdshFKA",
  543 + "expires_in": 7200
  544 +}
  545 +```
  546 +| 参数名 | 描述
  547 +| --- | ---
  548 +| errcode | 错误码
  549 +| errmsg | 错误信息
  550 +| ticket | api_ticket,卡券接口中签名所需凭证
  551 +| expires_in | 有效时间
  552 +
  553 +### 拉取适用卡券列表并获取用户选择信息
  554 +```javascript
  555 +wx.chooseCard({
  556 + shopId: '', // 门店Id
  557 + cardType: '', // 卡券类型
  558 + cardId: '', // 卡券Id
  559 + timestamp: 0, // 卡券签名时间戳
  560 + nonceStr: '', // 卡券签名随机串
  561 + signType: '', // 签名方式,默认'SHA1'
  562 + cardSign: '', // 卡券签名
  563 + success: function (res) {
  564 + var cardList= res.cardList; // 用户选中的卡券列表信息
  565 + }
  566 +});
  567 +```
  568 +
  569 +|参数名 |必填 |类型 |示例值 |描述
  570 +| --- | --- | --- | --- | ---
  571 +|shopId |否 |string(24) |1234 |门店ID。shopID用于筛选出拉起带有指定location_list(shopID)的卡券列表,非必填。
  572 +|cardType |否 |string(24) |GROUPON |卡券类型,用于拉起指定卡券类型的卡券列表。当cardType为空时,默认拉起所有卡券的列表,非必填。
  573 +|cardId |否 |string(32) |p1Pj9jr90_SQRaVqYI239Ka1erk |卡券ID,用于拉起指定cardId的卡券列表,当cardId为空时,默认拉起所有卡券的列表,非必填。
  574 +|timestamp |是 |string(32) |14300000000 |时间戳。
  575 +|nonceStr |是 |string(32) |sduhi123 |随机字符串。
  576 +|signType |是 |string(32) |SHA1 |签名方式,目前仅支持SHA1
  577 +|cardSign |是 |string(64) |abcsdijcous123 |签名。
  578 +
  579 +cardSign详见附录4。开发者特别注意:签名错误会导致拉取卡券列表异常为空,请仔细检查参与签名的参数有效性。
  580 +
  581 +**特别提醒**
  582 +
  583 +拉取列表仅与用户本地卡券有关,拉起列表异常为空的情况通常有三种:签名错误、时间戳无效、筛选机制有误。请开发者依次排查定位原因。
  584 +
  585 +### 批量添加卡券接口
  586 +```javascript
  587 +wx.addCard({
  588 + cardList: [{
  589 + cardId: '',
  590 + cardExt: ''
  591 + }], // 需要添加的卡券列表
  592 + success: function (res) {
  593 + var cardList = res.cardList; // 添加的卡券列表信息
  594 + }
  595 +});
  596 +```
  597 +
  598 +cardExt详见附录4,值得注意的是,这里的card_ext参数必须与参与签名的参数一致,格式为字符串而不是Object,否则会报签名错误。
  599 +
  600 +### 查看微信卡包中的卡券接口
  601 +```javascript
  602 +wx.openCard({
  603 + cardList: [{
  604 + cardId: '',
  605 + code: ''
  606 + }]// 需要打开的卡券列表
  607 +});
  608 +```
  609 +
  610 +### 核销后再次赠送卡券接口
  611 +```javascript
  612 +wx.consumeAndShareCard({
  613 + cardId: '',
  614 + code: ''
  615 +});
  616 +```
  617 +
  618 +参数说明:
  619 +
  620 +|参数 |说明
  621 +| --- | ---
  622 +|cardId |上一步核销的card_id,若传入错误的card_id会报错
  623 +|code |上一步核销的code,若传入错误的code会报错
  624 +
  625 +注意:
  626 +该接口只支持微信6.3.6以上版本的客户端,开发者在调用时需要注意两点:
  627 +
  628 +1. 需要引入1.1.0版本的js文件: https://res.wx.qq.com/open/js/jweixin-1.1.0.js
  629 +2. 需要判断用户客户端版本号,做出容错处理,详情点击:判断当前客户端版本是否支持指定JS接口
  630 +
  631 +## 微信支付
  632 +
  633 +### 发起一个微信支付请求
  634 +```javascript
  635 +wx.chooseWXPay({
  636 + timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  637 + nonceStr: '', // 支付签名随机串,不长于 32 位
  638 + package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
  639 + signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
  640 + paySign: '', // 支付签名
  641 + success: function (res) {
  642 + // 支付成功后的回调函数
  643 + }
  644 +});
  645 +```
  646 +
  647 +备注:prepay_id 通过微信支付统一下单接口拿到,paySign 采用统一的微信支付 Sign 签名生成方法,注意这里 appId 也要参与签名,appId 与 config 中传入的 appId 一致,即最后参与签名的参数有appId, timeStamp, nonceStr, package, signType。
  648 +
  649 +**请注意该接口只能在你配置的支付目录下调用,同时需确保支付目录在JS接口安全域名下。**
  650 +
  651 +微信支付开发文档:[https://pay.weixin.qq.com/wiki/doc/api/index.html](https://pay.weixin.qq.com/wiki/doc/api/index.html)
library/03-车场运营/001-运行监控/0001-停车场.md 0 → 100644
  1 +# 这是 H1
  2 +## 这是 H2
  3 +### 这是 H3
  4 +#### 这是 H4
  5 +##### 这是 H5
  6 +###### 这是 H6
  7 +
  8 +
  9 +**加粗**
  10 +__加粗__
  11 +*斜体*
  12 +_斜体_
  13 +
  14 +
  15 +~~要删掉的内容~~
  16 +
  17 +1. Red
  18 +2. Green
  19 +3. Blue
  20 +
  21 +
  22 +
  23 +* Candy.
  24 +* Gum.
  25 ++ Booze.
  26 +* Booze. 长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本长文本
  27 +这里是断行-文本长文本长文本长文本
  28 +这里是断行-文本长文本长文本长文本
  29 +- Booze.
  30 + + 嵌套
  31 + * 嵌套
  32 +
  33 +
  34 +![avatar](amwiki/images/a/TB2wcipuXXXXXbUXXXXXXXXXXXX_!!0-jiyoujia.jpg)
library/03-车场运营/001-运行监控/0002-PDA.md 0 → 100644
  1 +# 这是 H1
  2 +## 这是 H2
  3 +### 这是 H3
  4 +#### 这是 H4
  5 +##### 这是 H5
  6 +###### 这是 H6
library/03-车场运营/001-运行监控/0003-诱导屏.md 0 → 100644
library/03-车场运营/004-停车记录.md 0 → 100644
library/home-首页.md 0 → 100644
  1 +# 项目文档中心
  2 +
  3 +<br>
  4 +
  5 +![欢迎使用amWiki!](amWiki/images/logo.png "欢迎使用amWiki!")
  6 +
  7 +### 欢迎使用 amWiki 轻文库!
  8 +—— **amWiki 致力于让大家可以更简单、更便捷的建设个人和团队文库!**
  9 +
  10 +[ [amWiki 官网文档中心](https://amwiki.org/doc/) ]