提交 80e11cfb 编写于 作者: Lab机器人's avatar Lab机器人

add public

上级 6794d6f2
流水线 #7472 已通过 ,包含阶段
in 13 秒
......@@ -3,5 +3,4 @@ node_modules
assets
build
dist
public
package-lock.json
文件已添加
RXFSae6GALiCVL2w
\ No newline at end of file
body,
h1,
h2,
h3,
h4,
h5,
h6,
ul,
li,
ol,
dl,
dt,
dd,
p,
span,
object,
iframe,
pre,
a,
abbr,
cite,
input,
select,
option {
margin: 0;
padding: 0;
font-family: 'Arial', 'Microsoft YaHei';
}
ul,
li,
ol,
dl,
dd,
dt,
form {
list-style: none;
margin: 0;
padding: 0;
}
html{
height:100%;
}
body {
background: #fff;
font-family: 'Arial', 'Microsoft YaHei';
font: inherit;
}
img {
border: none;
outline: none;
}
em,
i {
font-style: normal;
}
a {
outline: none;
text-decoration: none;
color: #333;
}
a:hover,
a:active,
avisited {
text-decoration: none;
}
.clearfix:after {
content: '.';
height: 0;
visibility: hidden;
display: block;
clear: both;
}
dd,
dt,
dl {
line-height: 1.2;
font-weight: normal;
}
label {
font-weight: normal;
}
.wap_app_wrap{
margin-top:52px;
background:url(../images/bg.png) no-repeat center ;
background-size:cover;
height:calc(100% - 52px);
position:relative;
}
.wap_app_logo{
padding:3rem 0 0;
text-align:center;
}
.wap_app_logo .logo{
display:inline-block;
width:3.5rem;
height:3.5rem;
margin: 0 auto;
}
.wap_app_pro{
text-align:center;
padding:1.8rem 0;
font-family: PingFangSC-Medium;
font-size: 0.9rem;
color: #3D3D3D;
letter-spacing: 0.5rem;
}
.wap_app_b{
padding:0 0.8rem;
}
.wap_app_b .wap_app_btn{
display:block;
width:100%;
height:1.5rem;
background: #CC2525;
border-radius: 6px;
font-size:0.6rem;
color:#fff;
line-height:1.5rem;
text-align:center;
}
.wap_mobile{
display:block;
width:8rem;
height:7.9rem;
position: absolute;
bottom:0;
left:50%;
margin-left:-4rem;
}
\ No newline at end of file
<html>
<head>
<meta content="always" name="referrer">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-status-bar-style" content="yes">
<script src="//csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<link rel="apple-touch-icon" href="//csdnimg.cn/public/favicon.ico"/>
<link rel="stylesheet" href="//csdnimg.cn/public/common/libs/bootstrap/css/bootstrap.css">
<link rel="stylesheet" href="//csdnimg.cn/public/common/toolbar/content_toolbar_css/m_toolbar-1.1.1.css">
<link rel="stylesheet" href="./css/wap_app_download.css">
</head>
<script>
window.csdn = window.csdn || {};
window.csdn.mobileToolbar = window.csdn.mobileToolbar || {};
window.csdn.mobileToolbar.mobileParams = {
prodTag: 'csdn'// 展示对应log,存在第一优先
}
</script>
<body>
<div class="wap_app_wrap">
<div class="wap_app_logo">
<img class="logo" src="images/logo.png" alt="logo"/>
</div>
<div class="wap_app_pro">技 术 连 接 你 我</div>
<div class="wap_app_b">
<a class="wap_app_btn" href="https://t.csdnimg.cn/cISz">立即下载</a>
</div>
<div class="wap_app_bb">
<img class="wap_mobile" src="images/mobile.png" alt="img"/>
</div>
</div>
<script type="text/javascript" src="js/fontSize.js?"></script>
<script type="text/javascript" id="m-toolbar-tpl-scriptId" prod="csdn" src="//csdnimg.cn/public/common/toolbar/js/m_toolbar-1.1.1.js"></script>
</body>
</html>
$(function () {
initpage();
$(window).resize(function ()
{
initpage();
});
function initpage()
{
var view_width = document.getElementsByTagName('html')[0].getBoundingClientRect().width;
var _html = document.getElementsByTagName('html')[0];
view_width > 640 ? _html.style.fontSize = 640 / 16 + 'px' : _html.style.fontSize = view_width / 16 + 'px';
}
});
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="keywords" content="程序员必备 APP,IT资讯 APP,IT学习 APP,编程技术 APP">
<meta name="description" content="CSDN APP主要提供安卓、iOS下载路径, APP主要里面主要内容包括:程序员必备 APP, IT资讯 APP, IT学习 APP,编程技术 APP等内容,找编程技术、程序员资讯等APP内容,就上 CSDN APP。">
<link rel="stylesheet" href="//csdnimg.cn/public/common/toolbar/content_toolbar_css/content_toolbar.css">
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<title>【CSDN APP】博客 APP_下载 APP - CSDN</title>
<style>
html, body{
height: 100%;
}
body{
background: url(img/background.png) top center;
background-size: cover;
}
html, body, div, dl, dt, dd,p{
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
.app-container{
height: 90%;
background:url(img/bg.png) center center repeat-x;
background-size: contain;
margin-top: 1px;
}
.app-wrapper{
width: 1228px;
margin: 0 auto;
padding: 103px 0 0 210px;
box-sizing: border-box;
overflow: hidden;
}
.app-wrapper dt img{
width: 390px;
}
.app-wrapper dt{
float: left;
}
.app-wrapper dd h2{
font-size: 44px;
color: #3D3D3D;
letter-spacing: 1.4px;
font-family: 'PingFang SC','Microsoft YaHei',SimHei,Arial,SimSun;
margin: 0;
}
.app-wrapper dd h4{
font-weight: 300;
font-size: 34px;
color: #3D3D3D;
letter-spacing: 1.9px;
font-family: 'PingFang SC','Microsoft YaHei',SimHei,Arial,SimSun;
margin: 0;
}
.app-wrapper dd{
float: left;
padding-left: 62px;
padding-top: 88px;
}
.app-wrapper .csdn-qr{
margin:47px 0 0;
padding: 0;
}
.app-wrapper li{
list-style: none;
display: inline-block;
margin-right: 30px;
}
.app-wrapper .csdn-qr li span{
display: inline-block;
box-shadow: 0 1px 2px 0 rgba(80,101,152,0.30);
border-radius: 4px;
background: #fff;
padding: 11px;
width: 130px;
height: 130px;
box-sizing: border-box;
}
.app-wrapper .csdn-qr li img{
width: 100%;
}
.app-wrapper p{
font-family: 'PingFang SC','Microsoft YaHei',SimHei,Arial,SimSun;
font-size: 16px;
color: #3D3D3D;
margin-top: 11px;
text-align: center;
}
</style>
</head>
<body>
<div class="app-container" >
<dl class="app-wrapper">
<dt><img src="img/iPhone.png" alt=""></dt>
<dd>
<h2>技术连接你我</h2>
<h4>尽在CSDN APP</h4>
<ul class="csdn-qr">
<li>
<span><img src="img/csdnqr@2x.png" alt="CSDN"></span>
<p>CSDN</p>
</li>
<li>
<span><img src="img/EDUAPPQR@2x.png" alt="CSDN学院"></span>
<p>CSDN学院</p>
</li>
</ul>
</dd>
</dl>
</div>
<div id="csdn_pub_footer" class="margin_foot_top">
</div>
</body>
<script src="//csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js"></script>
<script id="toolbar-tpl-scriptId" prod="download" skin="black" src="//csdnimg.cn/public/common/toolbar/js/content_toolbar.js" type="text/javascript" domain="http://blog.csdn.net"></script>
<script src="//csdnimg.cn/pubfooter/js/publib_footer-1.0.2.js"></script>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<meta name="referrer" content="always">
<title>CSDN</title>
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/app_detail_article-0211c45f3f.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/swan_detail-137672cb9a.css">
<script src="https://csdnimg.cn/release/phoenix/static_blog/scripts/swan_detail_icon.js"></script>
<style>
.MathJax_Preview{
display: none !important;
}
#share{
cursor: pointer;
}
.recommend-list li h3 a{
cursor: pointer;
}
.applink{
cursor:pointer;
}
</style>
<script>
var articleTitle = "Webview加载界面白屏解决方法总结";
var articleDesc = "总结android中webview加载出现界面白屏,需要杀掉进程重新加载的情况的解决方法。"
var username = "qq_34584049";
var fileName = "78280815";
var totalFloor = 2;
var miniprogram_recommend_host = "https://gw.csdn.net/mini-app";
var commentpage = 1;
//h5定义rem
initpage();
window.onresize = initpage;
function initpage(){
var view_width = document.getElementsByTagName('html')[0].getBoundingClientRect().width;
var _html = document.getElementsByTagName('html')[0];
window.fontSize = view_width>750?750/7.5:view_width/7.5;
_html.style.fontSize= window.fontSize+'px';
}
</script>
</head>
<body class="">
<div class="bg-white">
<h1 class="article_title">Webview加载界面白屏解决方法总结</h1>
<div class="user-info-box">
<div class="img-box" data-swanlink="userinfo" data-username="qq_34584049">
<img class="avatar" src="https://avatar.csdn.net/B/9/1/3_qq_34584049.jpg" alt="">
</div>
<div class="info-box">
<h3 class="user-name"><a data-swanlink="userinfo" data-username="qq_34584049">mikey未雨绸缪</a></h3>
<p class="create-time">2017-10-19 09:56:55</p>
</div>
</div>
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
<div class="article_content ">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/wapedit_views_html-b772bd2329.css" />
<div id="content_views" class="htmledit_views ">
<p align="center"><span style="font-family:'宋体';"><strong><span style="font-size:24px;">webview<span style="font-family:'宋体';">嵌套</span><span style="font-family:Calibri;">HTML5</span><span style="font-family:'宋体';">界面白屏问题</span></span></strong></span></p>
<p align="left"><span style="font-size:18px;"></span><span style="font-size:18px;"></span><span style="font-size:12px;"></span><span style="font-size:24px;"></span><br /></p>
<p align="left"><span style="font-size:14px;"><strong>问题介绍</strong>:在Android开发中,经常会遇到开发原生和H5嵌套的APP,而在android中加载H5界面时通常使用webview控件进行嵌套,而此时就会出现一些很神奇的事情——<span style="font-size:18px;">界面白屏。</span></span></p>
<p align="left"><span style="font-size:14px;">如果遇到这种情况,那就只能退出程序,干掉进程,然后重新进入app,重新加载界面,目前还没有找到其他的解决方法。</span></p>
<p align="left"><span style="font-size:14px;">经过多方面的研究,请教大神,总结了以下几点来减小这种白屏情况出现的概率。</span></p>
<p align="left"><span style="font-size:14px;"><br /></span></p>
<p align="left"><span style="font-size:14px;"><strong>解决方案</strong></span></p>
<p align="left"><span style="font-size:14px;">1.Android中加载网页时界面会有缓存,通过清除webview的缓存,让app每次进入该H5界面时都重新加载:</span></p>
<span style="font-size:14px;"></span>
<p align="left"></p>
<pre><code class="language-java">// 清缓存和记录,缓存引起的白屏
mWebView.clearCache(true);
mWebView.clearHistory();
mWebView.requestFocus();
WebSettings webSettings = mWebView.getSettings();
webSettings.setDatabaseEnabled(true);
// 缓存白屏
String appCachePath = getApplicationContext().getCacheDir()
.getAbsolutePath() + "/webcache";
// 设置 Application Caches 缓存目录
webSettings.setAppCachePath(appCachePath);
webSettings.setDatabasePath(appCachePath);</code></pre>
<p></p>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;">2.可以通过setAppCacheEnabled方法来控制webview是否有缓存:</span></p>
<p align="left"></p>
<pre><code class="language-java">// 应用可以有缓存 true false 没有缓存
webSettings.setAppCacheEnabled(false);</code></pre>
<p></p>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;">3.webview加载H5界面时,H5中的一些控件标签可能使用后android中不支持,可以使用setDomStorageEnabled方法来处理:</span></p>
<p align="left"></p>
<pre><code class="language-java">// 解决对某些标签的不支持出现白屏
webSettings.setDomStorageEnabled(true);</code></pre>
<p></p>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;">4.在不同android版本上出现白屏的情况:</span></p>
<div align="left"><pre><code class="language-java">mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不另跳浏览器
// 在2.3上面不加这句话,可以加载出页面,在4.0上面必须要加入,不然出现白屏
if (url.startsWith("http://") || url.startsWith("https://")) {
view.loadUrl(url);
mWebView.stopLoading();
return true;
}
return false;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
});</code></pre></div>
<div align="left"><br /><span style="font-size:14px;">5.Webview的控件布局时设置:</span></div>
<div align="left"><pre><code class="language-html"> &lt;WebView
android:id="@+id/web"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layerType="software"
android:scrollbars="none" /&gt;</code></pre></div>
<div align="left"><br /><span style="font-size:14px;">6.通过android系统的加速器来配置:主要在androidmanifest.xml中设置。</span></div>
<div align="left"><span style="font-size:14px;"><br /></span></div>
<div align="left"><span style="font-size:14px;">//开启硬件加速 app支持硬件加速:</span><br /></div>
<div align="left"><span style="font-size:14px;">application下:&lt; application android:hardwareAccelerated="true" ...&gt; </span></div>
<div align="left"><span style="font-size:14px;"></span><pre><code class="language-html"> &lt;application
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name" &gt;
</code></pre></div>
<div align="left"><span style="font-size:14px;"><br /></span></div>
<div align="left"><span style="font-size:14px;">在使用webview的界面中关闭硬件加速:</span><br /></div>
<div align="left"><span style="font-size:14px;">activity界面注册时:&lt;activity android:hardwareAccelerated="false" ..&gt;</span></div>
<div align="left"><span style="font-size:14px;"></span><pre><code class="language-html"> &lt;activity
android:name="com.project.activity.MainActivity"
android:hardwareAccelerated="false" /&gt;</code></pre><br /></div>
<div align="left"><br /></div>
<div align="left"><span style="font-size:14px;"><strong>总结</strong>:webview白屏是一件很神奇的事情,目前我还没有找到最优的解决办法,只能通过这些方面来减小白屏情况出现的概率,以后还得继续研究。</span></div>
<div align="left"><span style="font-size:14px;"> <span style="font-size:18px;">学无止尽!!! </span></span></div>
<div align="left"><span style="font-size:14px;"></span><span style="font-size:14px;"></span><span style="font-size:18px;"></span><br /></div>
<p align="left"><br /></p>
<p align="left"><span style="font-size:14px;"><br /></span></p>
<p align="left"><span style="font-size:14px;"><br /></span></p>
<p align="left"><br /></p>
</div>
<script src="https://csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var observer = lozad('.article_content img', {
rootMargin: '10px 0px', // syntax similar to that of CSS Margin
threshold: 0.1 // ratio of element convergence
});
observer.observe();
if($('div.markdown_views pre.prettyprint code.hljs').length > 0 ){
$('div.markdown_views')[0].className = 'markdown_views ';
}
dp.SyntaxHighlighter.HighlightAll('pre');
});
</script>
<!-- <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f1a9c33fcd.css" /> -->
<link rel="stylesheet" href="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/chart/chart.css" />
<script type="text/javascript" src="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/chart/lib/chart.min.js"></script>
<script type="text/javascript" src="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/chart/widget2chart.js"></script>
<link rel="stylesheet" href="https://csdnimg.cn/release/blog_editor_html/release1.3.7/ckeditor/plugins/codesnippet/lib/highlight/styles/atom-one-light.css">
<script type="text/javascript" src="https://csdnimg.cn/release/phoenix/production/pc_wap_common-98040b5dc6.js"></script>
<script type="text/javascript">
$(function(){
var allEscRegex = /&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,
namedEntities = {
lt: '<',
gt: '>',
amp: '&',
quot: '"',
nbsp: '\u00a0',
shy: '\u00ad'
}
var allEscDecode = function( match, code ) {
return namedEntities[ code ];
};
htmlDecodeAttr = function( text ) {
return text.replace( allEscRegex, allEscDecode );
}
hljs.initHighlightingOnLoad();
hljs.initCopyButtonOnLoad();
hljs.initLineNumbersOnLoad();
if($('pre .language-plain').length>0){
$('pre .language-plain').each(function(i,e){
var highlightRe = hljs.highlightAuto(htmlDecodeAttr(e.innerHTML))
e.innerHTML = highlightRe.value;
e.className = 'language-'+highlightRe.language;
});
}
})
</script>
<script type="text/javascript">
$(function () {
$(".MathJax").remove();
dp.SyntaxHighlighter.HighlightAll('pre');
});
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
"HTML-CSS": {
linebreaks: { automatic: true, width: "94%container" },
imageFont: null
},
tex2jax: {
preview: "none"
},
mml2jax: {
preview: 'none'
},
messageStyle: "none"
});
</script>
<script type="text/javascript" src="https://csdnimg.cn/release/blog_mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="https://csdnimg.cn/release/phoenix/production/app_blog_article-24440deba9.js"></script> </div>
<div class="copyright-box">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-CSDN_Cert"></use>
</svg>
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34584049/article/details/78280815 </div>
<div id="operation-box">
<div id="share" class="applink">
<svg t="1548751420166" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7725" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M340.522667 415.872l257.770666-144a128 128 0 1 1 38.336 76.373333l-254.464 142.144c2.133333 12.650667 2.368 25.536 0.725334 38.272l294.016 149.461334a128.064 128.064 0 0 1 219.157333 89.898666c0 70.677333-57.344 128.042667-128.042667 128.042667a128.064 128.064 0 0 1-127.402666-140.672l-296.426667-150.677333a128.021333 128.021333 0 1 1-3.669333-188.842667z" fill="" p-id="7726"></path></svg>
<span>分享</span>
</div>
</div>
</div>
<div class="recommend-box bg-white section-box">
<h3 class="box-title">相关推荐</h3>
<div class="box-content">
<ul class="recommend-list">
<li>
<h3><a data-swanlink="blogdetail" data-username="lee4755026" data-articleid="52161035">webview加载网页出现白屏</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="lee4755026">
<img class="avatar" src="https://avatar.csdn.net/F/B/5/1_lee4755026.jpg" alt="">
<span class="name">无谓生活</span>
</div>
<p class="read ml8">阅读 7083</p>
<p class="date ml8">08-09</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="qq_33785670" data-articleid="75103632">处理方案:webview 闪白屏问题</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="qq_33785670">
<img class="avatar" src="https://avatar.csdn.net/3/5/4/1_qq_33785670.jpg" alt="">
<span class="name">Mubai公子</span>
</div>
<p class="read ml8">阅读 3222</p>
<p class="date ml8">07-14</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="liuwg1226" data-articleid="53929514">解决webview加载网页出现白屏的问题</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="liuwg1226">
<img class="avatar" src="https://avatar.csdn.net/E/5/F/1_liuwg1226.jpg" alt="">
<span class="name">到达彼岸</span>
</div>
<p class="read ml8">阅读 3007</p>
<p class="date ml8">12-29</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="android_freshman" data-articleid="79461671">WebView 加载https 白屏以及重定向加载</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="android_freshman">
<img class="avatar" src="https://avatar.csdn.net/8/C/4/1_android_freshman.jpg" alt="">
<span class="name">android_小路</span>
</div>
<p class="read ml8">阅读 2215</p>
<p class="date ml8">03-06</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="u011704663" data-articleid="51247882">WebView白屏问题</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="u011704663">
<img class="avatar" src="https://avatar.csdn.net/0/8/8/1_u011704663.jpg" alt="">
<span class="name">天人不合一</span>
</div>
<p class="read ml8">阅读 2069</p>
<p class="date ml8">04-26</p>
</div>
</li>
<li>
<h3><a data-swanlink="blogdetail" data-username="yang_yang1994" data-articleid="77159614">WebView加载页面出现白屏</a></h3>
<div class="info-box">
<div class="user-box" data-swanlink="userinfo" data-username="yang_yang1994">
<img class="avatar" src="https://avatar.csdn.net/4/0/4/1_yang_yang1994.jpg" alt="">
<span class="name">子静静</span>
</div>
<p class="read ml8">阅读 1051</p>
<p class="date ml8">08-14</p>
</div>
</li>
</ul>
</div>
</div>
<div class="conment-box section-box bg-white">
<h3 class="box-title">评论</h3>
<div class="box-content">
<!-- 评论 -->
<div id="comment" class="">
</div>
</div>
</div>
<script type="text/javascript" src="https://csdnimg.cn/release/phoenix/production/swan_comment-8fc5351a91.js"></script>
<script type="text/javascript" src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.1.js"></script>
<script>
var swanlinkDOM = $('[data-swanlink]');
var tapcallback = function(e){
e.preventDefault();
var type = $(this).data("swanlink");
switch(type){
case "userinfo":
var username = $(this).data("username");
if(username !== ""){
swan.webView.navigateTo({
url: '/pages/user/index?userName=' + username
});
}
break;
case "blogdetail":
var username = $(this).data("username");
var articleId = $(this).data("articleid");
if(username !== "" && articleId !== ""){
swan.webView.navigateTo({
url: '/pages/blog/article-detail?userName=' + username + '&articleId=' + articleId
});
}
break;
default:
break;
}
}
// 用户个人中心跳转
$(function(){
$(document).on('click','[data-swanlink]',tapcallback)
$('#content_views').find('a').not("[href^='#']").removeAttr('href');
});
</script>
<script type="text/javascript">
$(function(){
// 图片预览
var urls = [];
$('#content_views img').map(function(){
urls.push($(this).data('src'))
})
$(document).on('click','#content_views img',function(){
var this_src = $(this).data('src');
swan.previewImage({
current: this_src, // 当前显示图片的http链接
urls: urls, // 需要预览的图片http链接列表
fail: function (err) {
console.log('错误码:' + err.errCode);
console.log('错误信息:' + err.errMsg);
}
});
})
// 分享按钮
$(document).on('click','#share',function(){
swan.openShare({
title: articleTitle,
content: articleDesc,
path: 'pages/blog/article-detail?userName=qq_34584049&articleId=78280815',
appKey : 'obyjgY148KrH0rrRwn9OgySgEhwHgBzK',
imageUrl : 'https://g.csdnimg.cn/static/logo/logo-200.jpg'
});
})
})
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#contact"; </script>
</head>
<body>
</body>
</html>
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
.edu-ad-list .recommend-item-box{
padding: 0!important;
background: #FFFFFF;
}
.edu-ad-list .recommend-item-box h4{
margin-bottom: 6px;
font-size: 18px;
line-height: 24px;
color: #3d3d3d;
display: inline-block;
}
.edu-ad-list .type_blog .content .desc{
display: inline-block;
width: 76%;
overflow: hidden;
vertical-align: bottom;
text-overflow: ellipsis;
white-space: nowrap !important;
}
.edu-ad-list * {
word-wrap: break-word;
}
.edu-ad-list .recommend-item-box p.content a{
font-size: 14px;
color: #999;
text-decoration: none;
}
.edu-ad-list .type_blog .content .blog_title_box {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 23%;
text-align: right;
float: right;
color: #999;
font-size: 14px;
}
.edu-ad-list .type-show-edu {
color:#F7737A;
}
.edu-ad-list .type-show-after:after {
content: ' ';
display: inline-block;
height: 12px;
width: 1px;
background-color: #e0e0e0;
margin-left: 8px;
margin-right: 5px;
vertical-align: middle;
}
.edu-ad-list .type_blog .content .blog_title_box .blog_title {
vertical-align: bottom;
padding-left: 4px;
}
\ No newline at end of file
.edu-ad-list .recommend-item-box{
padding: 0!important;
background: #FFFFFF;
}
.edu-ad-list .recommend-item-box h4{
margin-bottom: 6px;
font-size: 18px;
line-height: 24px;
color: #3d3d3d;
display: inline-block;
}
.edu-ad-list .type_blog .content .desc{
display: inline-block;
width: 76%;
overflow: hidden;
vertical-align: bottom;
text-overflow: ellipsis;
white-space: nowrap !important;
}
.edu-ad-list * {
word-wrap: break-word;
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
.edu-ad-list .recommend-item-box p.content a{
font-size: 14px;
color: #999;
text-decoration: none;
}
.edu-ad-list .type_blog .content .blog_title_box {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 23%;
text-align: right;
float: right;
color: #999;
font-size: 14px;
}
.edu-ad-list .type-show-edu {
color:#F7737A;
}
.edu-ad-list .type-show-after:after {
content: ' ';
display: inline-block;
height: 12px;
width: 1px;
background-color: #e0e0e0;
margin-left: 8px;
margin-right: 5px;
vertical-align: middle;
}
.edu-ad-list .type_blog .content .blog_title_box .blog_title {
vertical-align: bottom;
padding-left: 4px;
}
\ No newline at end of file
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
.edu-ad-list .recommend-item-box{
padding: 17px 24px;
background: #FFFFFF;
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.05);
}
.edu-ad-list .recommend-item-box h4{
margin-bottom: 6px;
font-size: 18px;
line-height: 24px;
color: #3d3d3d;
display: inline-block;
}
.edu-ad-list .type_blog .content .desc{
display: inline-block;
width: 76%;
overflow: hidden;
vertical-align: bottom;
text-overflow: ellipsis;
white-space: nowrap !important;
}
.edu-ad-list * {
word-wrap: break-word;
}
.edu-ad-list .recommend-item-box p.content a{
font-size: 14px;
color: #999;
text-decoration: none;
}
.edu-ad-list .type_blog .content .blog_title_box {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 23%;
text-align: right;
float: right;
color: #999;
font-size: 14px;
}
.edu-ad-list .type-show-edu {
color:#F7737A;
}
.edu-ad-list .type-show-after:after {
content: ' ';
display: inline-block;
height: 12px;
width: 1px;
background-color: #e0e0e0;
margin-left: 8px;
margin-right: 5px;
vertical-align: middle;
}
.edu-ad-list .type_blog .content .blog_title_box a .blog_title {
vertical-align: bottom;
color: #3399ea;
}
\ No newline at end of file
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
\ No newline at end of file
/* --------------------------------
Primary style
-------------------------------- */
*,
*:after,
*:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body {
font-size: 100%;
font-family: "Roboto", sans-serif;
color: #4d4d4d;
background-color: white;
}
body,
html {
/* important */
height: 100%;
}
a {
color: #4d4d4d;
text-decoration: none;
}
/* --------------------------------
Modules - reusable parts of our design
-------------------------------- */
.cd-container {
/* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */
width: 90%;
max-width: 900px;
/* margin: 0 auto; */
margin: 0 auto;
font-size: 15px;
}
.cd-container::after {
/* clearfix */
content: "";
display: table;
clear: both;
}
.cd-container h2,
.cd-container h3 {
max-height: 50px;
font-size: 1.5em;
border-bottom: 1px #ccc solid;
display: inline-block;
width: 100%;
margin: 1em 0 0 0;
}
.cd-container h3 {
border: none;
font-size: 1.2em;
}
.cd-container h4 a {
font-size: 1.2em;
font-color: #ff3b3f;
display: inline-block;
width: 100%;
}
.cd-container ul {
margin: 1em auto 0;
}
/* 企业数字 */
.csdn-digitalinfo {
float: left;
margin: 24px 0;
width: 50%;
text-align: center;
padding: 0 24px;
min-height: 80px;
}
.csdn-digitalinfo .title {
font-size: 18px;
line-height: 24px;
}
.csdn-digitalinfo .content {
font-size: 14px;
line-height: 22px;
min-height: 70px;
}
/* 企业数字 */
.digitalinfo2-container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.csdn-digitalinfo2 {
/* float: left; */
margin: 24px 0;
width: 50%;
text-align: center;
padding: 0 24px;
min-height: 80px;
}
.csdn-digitalinfo2 .title {
font-size: 18px;
line-height: 24px;
}
.csdn-digitalinfo2 .content {
font-size: 14px;
line-height: 22px;
min-height: 70px;
}
/* 新媒体矩阵 */
.newmedia {
float: left;
width: 95px;
margin: 0 5px 0 0;
text-align: center;
height: 142px;
}
.newmedia .content {
line-height: 20px;
}
.newmedia .QR {
background: #fff;
}
.newmedia img {
width: 95px;
height: 95px;
}
@media only screen and (min-width: 768px) {
.csdn-digitalinfo {
width: 20%;
padding: 0 8px;
min-height: 45px;
}
.csdn-digitalinfo .title {
font-size: 24px;
line-height: 30px;
}
.csdn-digitalinfo .content {
font-size: 14px;
line-height: 24px;
}
.csdn-digitalinfo2 {
width: 12%;
padding: 0 0px;
min-height: 45px;
}
.csdn-digitalinfo2 .title {
font-size: 24px;
line-height: 30px;
}
.csdn-digitalinfo2 .content {
font-size: 14px;
line-height: 24px;
}
}
/* .cd-container a{
font-weight: 400;
} */
.cd-container a:hover {
color: #fc5531;
}
h1,
h2,
h3 {
font-weight: 400 !important;
}
/* --------------------------------
Main components
-------------------------------- */
.cd-header {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 40px;
background: #223544;
padding: 0 16px;
/* box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); */
z-index: 2;
}
.cd-header:after {
content: "";
display: table;
clear: both;
}
.cd-header #cd-logo {
float: left;
display: flex;
height: 100%;
align-items: center;
margin-right: 40px;
}
.cd-header #cd-logo img {
display: block;
height: 24px;
}
.csdnchart {
width: 100%;
/* text-align: center; */
margin: 24px 0 0 0;
background-repeat: no-repeat;
background-size: 100%;
}
.CSDN-chart01 {
background-image: url(../img/meeting@2x.png);
background-position: center 80%;
}
.CSDN-chart01 span {
font-size: 12px;
text-align: center;
width: 100%;
margin: 30% 0 0 0;
display: inline-block;
}
.container-nav .menu {
padding: 4px;
box-sizing: border-box;
overflow: hidden;
height: 100%;
}
.container-nav .menu li {
float: left;
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-weight: 600;
min-width: 88px;
padding: 0 8px;
box-sizing: border-box;
text-align: center;
height: 100%;
border-radius: 4px;
cursor: pointer;
}
.partner {
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20px;
}
.partner span {
margin-left: 20px;
}
@media screen and (max-width: 768px){
.m-d-none {
display: none !important;
}
.container-nav .menu li {
min-width: unset;
}
.cd-header #cd-logo {
margin-right: 6px;
}
}
.container-nav .menu .input_box {
width: 200px;
height: 100%;
border-radius: 4px;
overflow: hidden;
}
.container-nav .menu input {
padding: 0 0 0 10px;
width: 100%;
outline: none;
border: none;
height: 100%;
color: #fff;
background: rgba(209, 209, 240, 0.2);
}
.container-nav .menu input::placeholder {
color: rgba(209, 209, 240, 0.8);
}
.container-nav .menu input:focus {
background: #fff;
color: #606266;
}
.container-nav .menu li:hover {
background-color: rgba(209, 209, 240, 0.2);
}
.container-nav .menu li a {
color: #fff;
width: 100%;
height: 100%;
line-height: 32px;
}
@media only screen and (min-width: 375px) {
.CSDN-chart01 span {
margin: 24% 0 0 0;
}
.medias .newmedia {
width: 45% !important;
height: 192px;
}
}
@media only screen and (min-width: 768px) {
/* .cd-header {
height: 60px;
} */
/* .cd-header #cd-logo {
margin: 14px 0 0 0px;
}
.CSDN-chart01 span{
margin: 18% 0 0 0;
} */
}
.cd-main-nav {
float: right;
width: 44px;
margin-right: 18px;
height: 100%;
background: url("../img/cd-icon-menu.svg") no-repeat center center;
background-size: 44px 44px;
cursor: pointer;
}
.cd-main-nav ul {
position: absolute;
top: 0;
left: 0;
width: 100%;
-webkit-transform: translateY(-100%);
-moz-transform: translateY(-100%);
-ms-transform: translateY(-100%);
-o-transform: translateY(-100%);
transform: translateY(-100%);
}
.cd-main-nav ul.is-visible {
-webkit-transform: translateY(50px);
-moz-transform: translateY(50px);
-ms-transform: translateY(50px);
-o-transform: translateY(50px);
transform: translateY(50px);
}
.cd-main-nav a {
display: block;
height: 50px;
line-height: 50px;
padding-left: 5%;
background: #2f292a;
border-top: 1px solid #453c3d;
color: #8e7d7f;
}
@media only screen and (min-width: 768px) {
.cd-main-nav {
width: auto;
height: auto;
background: none;
cursor: auto;
}
.cd-main-nav ul {
position: static;
width: auto;
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
line-height: 60px;
}
.cd-main-nav ul.is-visible {
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
}
.cd-main-nav li {
display: inline-block;
/* margin-left: 0.1em; */
}
.cd-main-nav a {
display: inline-block;
height: auto;
line-height: normal;
background: transparent;
padding: 0.3em 0.7em;
border-top: none;
color: #4d4d4d;
text-transform: uppercase;
/* font-size: 14px; */
font-size: 0.875rem;
}
.no-touch .cd-main-nav a:hover {
color: #1c1d30;
font-weight: 500;
}
}
.cd-main-content {
/* you need to assign a min-height to the main content so that the children can inherit it*/
height: 100%;
position: relative;
z-index: 1;
margin-top: 40px;
}
/* 这里定义图片上的文字样式 */
.picinfo {
max-width: 900px;
margin: 0 auto;
font-size: 30px;
font-size: 1.875rem;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
color: white;
padding: 40px 20px;
box-sizing: border-box;
}
/* 图片文字简介 */
.picinfo span {
display: inline-block;
line-height: 24px;
padding: 10px 0 0 0;
margin: 10px 0 0 0;
font-size: 16px;
border-top: 0.5px #ccc solid;
}
.cd-fixed-bg {
position: relative;
min-height: 40%;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
z-index: 1;
}
.cd-footer-bg {
position: relative;
height: 500px;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
z-index: 1;
}
/* .cd-fixed-bg h1, .cd-fixed-bg h2 {
position: absolute;
left: 10%;
top: 75%;
bottom: auto;
right: auto;
-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%);
-o-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
width: 90%;
max-width: 1170px;
text-align: center;
font-size: 30px;
font-size: 1.875rem;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
color: white;
} */
.cd-fixed-bg.cd-bg-1 {
background-image: url("../img/cd-background-1-new.jpg");
}
.cd-fixed-bg.cd-bg-2 {
background-image: url("../img/cd-background-2.jpg");
}
.cd-fixed-bg.cd-bg-3 {
background-image: url("../img/cd-background-3.jpg");
}
.cd-fixed-bg.cd-bg-4 {
background-image: url("../img/cd-background-4.jpg");
}
.cd-fixed-bg.cd-bg-5 {
background-image: url("../img/cd-background-5.jpg");
}
.cd-fixed-bg.cd-bg-6 {
background-image: url("../img/cd-background-6.jpg");
}
.cd-footer-bg.cd-bg-7 {
background-image: url("../img/cd-background-7.jpg");
}
@media only screen and (min-width: 768px) {
.cd-fixed-bg h1,
.cd-fixed-bg h2 {
font-size: 36px;
}
.recruit li {
width: 20% !important;
}
.newmedia {
width: 15% !important;
}
.recruit {
justify-content: flex-start !important;
}
}
@media only screen and (min-width: 1170px) {
.cd-fixed-bg {
background-attachment: fixed;
background-attachment: scroll\9;
}
.cd-fixed-bg h1,
.cd-fixed-bg h2 {
font-size: 48px;
font-weight: 300;
}
}
.cd-scrolling-bg {
position: relative;
/* min-height: 100%; */
padding: 1em 0;
line-height: 1.6;
/*box-shadow: 0 0 50px rgba(0, 0, 0, 0.5);*/
z-index: 2;
}
.cd-scrolling-bg.cd-color-1 {
color: #4d4d4d;
}
.cd-scrolling-bg.cd-color-2 {
background-color: #fff;
color: #4d4d4d;
}
.cd-scrolling-bg.cd-color-3 {
color: #3d3536;
}
@media only screen and (min-width: 768px) {
.cd-scrolling-bg {
padding: 1em 0;
font-size: 20px;
font-size: 1.25rem;
line-height: 2;
font-weight: 300;
}
}
.recruit {
width: 90%;
margin-left: 20px;
}
.recruit-index {
width: auto;
}
.recruit li {
text-align: center;
margin: 25px 0 0;
height: 185px;
float: left;
width: 50%;
}
.recruit a {
display: block;
width: 120px;
height: 120px;
border-radius: 100%;
background: #0e5791;
font-family: Arial-Black;
font-size: 26px;
color: #ffffff;
text-align: center;
line-height: 120px;
margin: 0 auto;
}
/*.recruit a:hover{
color: #fff;
text-decoration: underline;
}
.recruit a[attr^="bianji"]{
background:#B966FF;
}
.recruit a[attr^="suanfa"]{
background:#ED8400;
}
.recruit a[attr^="yunying"]{
background:#4283CE ;
}
.recruit a[attr^="shichang"]{
background:#81C9D0 ;
}
.recruit a[attr^="jizhe"]{
background:#DF6DBC ;
}
.recruit a[attr^="qudao"]{
background:#60BD8F ;
}
.recruit a[attr^="xiangmu"]{
background:#D9A666 ;
}
.recruit a[attr^="guwen"]{
background:#B2BF64 ;
}
.recruit a[attr^="qianduan"]{
background:#D1C080 ;
}
.recruit a[attr^="jiaohu"]{
background:#4D862C ;
}*/
.job-n {
max-width: 120px;
margin: 5px auto 0;
text-align: center;
}
.newmedias {
width: 90%;
max-width: 800px;
overflow: hidden;
margin: 2em auto 0;
}
.programmer p {
margin-top: 1em;
}
.mod-b {
height: 160px;
position: relative;
margin-top: 24px;
display: flex;
}
.mob-ctt {
position: relative;
float: right;
width: 720px;
margin: 0 16px 0;
}
.mob-ctt span {
font-size: 10px;
color: red;
}
.mod-b .mod-thumb {
height:120px;
}
.mod-thumb img {
height:120px;
width: 216px;
border-radius: 8px;
}
.online-application {
width: 158px;
height: 24px;
border-radius: 2px;
border: 1px solid rgba(224, 224, 224, 1);
font-size: 14px;
color: rgba(51, 153, 234, 1);
line-height: 20px;
padding: 2px 8px;
margin-left: 10px;
}
.chart-1 {
display: block;
width: 100%;
max-width: 800px;
margin: 2em auto 0;
}
/*job*/
.job-title {
width: 100%;
background: url(../img/php.png) no-repeat center center;
height: 240px;
margin-top: 60px;
background-size: cover;
}
.job-title h2 {
font-size: 24px;
color: #ffffff;
line-height: 24px;
text-align: center;
padding-top: 70px;
}
.job-recruit {
display: flex;
width: 100%;
margin-left: 0;
flex-wrap: wrap;
}
.job-recruit-hot {
width: 100%;
height: 406px;
overflow: hidden;
margin-left: 0;
}
.job-recruit p {
margin-top: 10px;
}
.job-recruit a,
.job-recruit-hot a {
margin: 0;
display: inline-block;
background: none;
line-height: inherit;
width: auto;
height: auto;
text-align: left;
font-size: 24px;
color: #2d2d2d;
}
.job-recruit-hot a {
font-size: 16px;
color: #3d3d3d;
line-height: 25px;
}
.job-recruit a:hover {
color: #2d2d2d;
text-decoration: none;
}
.job-contain h2 {
font-size: 18px;
color: #2e2e2e;
line-height: 25px;
font-weight: 500;
margin: 0 0 16px;
}
.job-contain .job_name_area {
margin: 0;
overflow: hidden;
}
.job-contain .job_name_area img {
vertical-align: middle;
margin-right: 16px;
float: left;
width: 48px;
height: 48px;
border-radius: 4px;
border: none;
}
.job-contain h2.job-name-dec {
float: left;
width: calc(100% - 72px);
margin-top: 3px;
font-size: 24px;
color: #2d2d2d;
margin-bottom: 6px;
}
.job-contain .job_name_area span {
display: inline-block;
margin-top: 3px;
margin-bottom: 30px;
color: #6b6b6b;
font-size: 12px;
}
.job-contain h2.gwzz {
background: url("../img/icon_gw-new.png") no-repeat left center;
padding-left: 27px;
background-size: 20px;
}
.job-contain h2.rzyq {
background: url("../img/icon_rz-new.png") no-repeat left center;
padding-left: 27px;
background-size: 20px;
}
.job-contain h2.jfx {
background: url("../img/icon_jf-new.png") no-repeat left center;
padding-left: 27px;
background-size: 20px;
}
.job-contain h2.tgzl {
background: url("../img/icon_tg.png") no-repeat left center;
padding-left: 27px;
background-size: 20px;
}
.job-contain h2.lxfs {
background: url("../img/icon_lx-new.png") no-repeat left center;
padding-left: 27px;
background-size: 20px;
}
.jobs_other h2.qtzw {
font-size: 18px;
color: #2d2d2d;
line-height: 25px;
font-weight: 500;
margin-bottom: 20px;
}
.job-contain li,
.job-contain p {
color: #909090;
line-height: 30px;
font-size: 14px;
font-weight: 400;
}
.job-recruit li,
.job-recruit-hot li {
text-align: left;
width: 100% !important;
float: none;
height: auto;
margin: 0;
}
.job-recruit-hot li {
padding-bottom: 16px;
margin-bottom: 16px;
border-bottom: 1px solid #e0e0e0;
}
.job-recruit p.jobs_area_dec,
.job-recruit-hot p.jobs_area_dec,
.recruit-index p.jobs_area_dec {
margin: 3px 0 0;
color: #6b6b6b;
font-size: 12px;
}
.job-recruit p.job-d {
margin: 18px 0 0;
color: #4d4d4d;
font-size: 14px;
line-height: 25px;
display: none;
}
.job-recruit li,
.recruit-index li {
padding-bottom: 12px;
margin-bottom: 12px;
border-bottom: 1px solid #e0e0e0;
}
.recruit-index li {
overflow: hidden;
}
.job-recruit li img,
.recruit-index li img {
margin-right: 12px;
float: left;
width: 48px;
height: 48px;
}
.jobs_right {
float: left;
width: calc(100% - 60px);
height: auto;
}
.job-recruit {
height: 515px;
overflow: hidden;
}
.btn_box {
text-align: center;
margin-top: 32px;
}
.btn_box a {
display: block;
font-size: 24px;
color: #1c1d30;
line-height: 33px;
}
.send-resume {
display: block;
width: 120px;
height: 40px;
background: #fc5531;
border-radius: 20px;
font-size: 14px;
color: #ffffff;
text-align: center;
line-height: 40px;
margin: 20px auto 0;
}
.container-nav,
.container,
.footer-logo {
width: 100%;
max-width: 900px;
margin: 0 auto;
overflow: hidden;
height: 100%;
}
.jobs_dec,
.jobs_other {
background-color: #fff;
}
.jobs_other {
margin-top: 8px;
}
.job-describe .container {
max-width: 1180px;
padding: 15px 20px;
}
.container-nav {
max-width: 1200px;
}
.footer-img {
display: block;
width: 192px;
margin: 23px auto 0;
}
.job-contain ol {
list-style: decimal inside;
padding-bottom: 16px;
margin-bottom: 16px;
border-bottom: 1px solid #e0e0e0;
}
.medias .newmedia {
width: 162px;
height: 192px;
}
.medias .newmedia img {
width: 100%;
max-width: 162px;
height: 100%;
max-height: 155px;
}
.persion_article {
width: 300px;
margin: 0 auto 0;
}
.hot_jobs {
display: none;
}
.hot_jobs h3 {
margin-bottom: 16px;
padding-bottom: 32px;
border-bottom: 1px solid #e0e0e0;
color: #2e2e2e;
font-size: 18px;
}
@media only screen and (min-width: 768px) {
.medias .newmedia {
width: 22% !important;
}
.persion_article {
float: right;
margin-top: 7px;
margin-right: 20px;
}
.footer-img {
display: inline;
margin: 213px 0 0 85px;
}
.job-title h2 {
font-size: 36px;
padding-top: 50px;
line-height: 50px;
}
.job-contain .job_name_area span {
margin-bottom: 44px;
}
.job-describe .jobs_dec,
.job-describe .jobs_other {
padding: 40px;
background-color: #fff;
margin-top: -60px;
border-radius: 4px;
}
.job-describe .jobs_other {
margin-top: 16px;
}
.job-contain {
float: left;
width: calc(100% - 308px);
}
.hot_jobs {
display: block;
float: left;
width: 250px;
margin-left: 58px;
}
.job-contain ol {
margin-left: 72px;
margin-bottom: 32px;
padding-bottom: 32px;
}
.job-contain li {
line-height: 25px;
font-size: 16px;
}
.job-contain p {
margin-left: 72px;
line-height: 25px;
font-size: 16px;
}
/* .job-contain p span{margin-right: 80px}
*/
.job-contain h2.gwzz,
.job-contain h2.rzyq,
.job-contain h2.jfx,
.job-contain h2.tgzl,
.job-contain h2.lxfs,
.job-contain h2.qtzw {
margin-left: 45px;
}
.send-resume {
margin-left: 72px;
}
.jobs_other h2.qtzw {
margin-bottom: 40px;
}
.send-resume {
font-size: 18px;
margin: 32px 0 0px 72px;
}
.job-recruit p.job-d {
display: block;
}
.job-recruit li img,
.job-contain .job_name_area img {
width: 56px;
height: 56px;
margin-right: 16px;
}
.jobs_right {
width: calc(100% - 72px);
padding-bottom: 32px;
margin-bottom: 32px;
height: auto;
border-bottom: 1px solid #e0e0e0;
}
.job-recruit li,
.recruit-index li {
padding-bottom: 0;
margin-bottom: 0;
border-bottom: none;
}
.recruit-index {
overflow: hidden;
}
.recruit-index li {
float: left;
width: 33.33%;
}
.recruit-index li:nth-last-child(1) .jobs_right,
.recruit-index li:nth-last-child(2) .jobs_right,
.recruit-index li:nth-last-child(3) .jobs_right,
.recruit-index li:nth-last-child(4) .jobs_right {
border-bottom: none;
}
.recruit-index .jobs_right {
padding-bottom: 16px;
margin-bottom: 16px;
}
}
@media only screen and (min-width: 992px) {
.recruit-index li {
width: 25%;
}
}
.layer-img {
float: right;
margin-top: 15px;
}
.layer-p {
font-size: 1.5em;
}
.job-recruit .job-n,
.job-recruit-hot .job-n,
.recruit-index .job-n {
margin: 3px 0 0;
text-align: left;
max-width: inherit;
line-height: 33px;
}
.recruit-index .job-n {
line-height: 22px;
margin-top: 0;
}
.job-recruit .job-n {
font-size: 18px;
font-weight: 600;
}
.cd-fixed-bg h1,
.cd-fixed-bg h2 {
/* padding-top: 168px; */
}
.csdn-pub-footer {
padding: 24px 0 0;
}
<svg xmlns="http://www.w3.org/2000/svg" width="44" height="44"><path d="M18 13h20v3H18zm0 7h20v3H18zm0 7h20v3H18z" fill="#3D3536"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="200px" height="50px" viewBox="0 0 200 50" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>logo200x50</title>
<defs>
<polygon id="path-1" points="0.630611424 -0.00393316719 40.5131953 -0.00393316719 40.5131953 44.6752728 0.630611424 44.6752728"></polygon>
</defs>
<g id="logo200x50" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组" transform="translate(16.000000, 2.000000)">
<path d="M35.9592202,33.9533775 C35.5155589,33.531742 34.9082779,33.2988985 34.3214494,33.3114846 C33.7188882,33.3209242 33.1729645,33.5726469 32.7859409,34.0147349 C29.3137409,37.9872337 23.2645298,38.4167356 20.8243928,38.4167356 C16.2965308,38.4167356 12.8321971,37.2682508 10.5273612,35.0074663 C8.33737367,32.859957 7.18888885,29.6945441 7.11337204,25.6024769 C6.93716615,16.1156777 12.3098725,6.30478543 21.60316,6.30478543 C26.0413458,6.30478543 29.4883735,9.45289245 30.7627197,10.805902 C31.206381,11.2763088 31.8183818,11.5469107 32.4476885,11.5500572 C33.0785685,11.5657899 33.6622505,11.2857484 34.0571405,10.8184881 L34.4189919,10.3905595 C35.1615739,9.51739639 35.4951065,8.38779077 35.3613788,7.21256042 C35.2245045,6.02631719 34.6298097,4.94390958 33.6874228,4.16199595 C31.4093324,2.27564896 27.5390959,0.0305971351 22.0326618,0.0305971351 C16.3138367,0.0305971351 10.6642354,2.65952608 6.53283656,7.25031882 C2.19219326,12.0723818 -0.126802117,18.6360512 0.00535230053,25.7330581 C0.110761181,31.4282841 1.97822896,36.214162 5.40952401,39.5793798 C9.0956883,43.1963204 14.4951402,45.1078396 21.0273443,45.1078396 C28.6907272,45.1078396 33.4388466,42.8376155 36.0756419,40.9355359 C37.0966921,40.2008202 37.7055464,39.038176 37.7527444,37.7512437 C37.7967959,36.4580183 37.2681782,35.1915385 36.3006191,34.2758972 L35.9592202,33.9533775 Z" id="Fill-1备份-5" fill="#FC5531"></path>
<path d="M64.4823913,17.8566548 C62.7439314,17.2619599 61.0180576,16.7742472 59.4951353,16.3447453 C53.055754,14.5244755 52.3178918,12.8505196 52.3918354,11.5966259 C52.542869,9.06366622 55.9930432,5.63709097 61.8393029,6.06659283 C66.0776839,6.37809967 68.9347365,9.62060269 70.2610005,11.5242556 C70.6181321,12.0387139 71.1703488,12.3942722 71.7776298,12.5012543 C72.3833375,12.6098098 73.0032047,12.4603494 73.4736115,12.0937782 L73.8921005,11.768112 C74.8628061,11.0082241 75.4307555,9.85344619 75.4543545,8.59325943 C75.4763802,7.32835286 74.944616,6.08704529 73.9959361,5.18556338 C71.7618971,3.0663729 67.9577378,0.451603351 62.5299671,0.0519935646 C58.2333753,-0.265806344 54.0012874,0.881105207 50.6124705,3.27719066 C47.4250318,5.53168209 45.4143968,8.6703495 45.2350443,11.6752892 C44.7898098,19.0869495 52.3289047,21.2171528 57.8337655,22.7731138 C59.3315155,23.1963226 60.8324121,23.6620095 62.4969285,24.1843342 C70.4639519,26.6811087 70.6920756,29.1951891 70.1241263,33.0371069 C69.5483106,36.9246493 65.2580119,38.8660606 58.3529435,38.3547489 C51.1646872,37.824558 48.2085187,34.1824451 47.0867795,32.0569616 C46.7941518,31.5031716 46.2828401,31.0815361 45.6865719,30.8990372 C45.085584,30.7196847 44.4436911,30.7952016 43.9276596,31.1067084 L43.2983528,31.4858657 C42.2521304,32.118319 41.5520266,33.1865672 41.3789672,34.4137154 C41.2043346,35.6440101 41.5724791,36.9152097 42.3890046,37.9063678 C44.7725039,40.8027521 49.4262273,44.3882274 58.0414367,45.0222539 C59.0892324,45.0977707 60.0803906,45.1371024 61.0227774,45.1371024 C73.1369324,45.1355291 76.7758986,39.0265338 77.6364756,33.6789997 C78.2799418,29.6860484 77.485442,26.4954632 75.2026318,23.9231718 C73.1164799,21.5695646 69.7087838,19.6407394 64.4823913,17.8566548" id="Fill-3备份-2" fill="#3E3C39"></path>
<path d="M115.575177,21.1630324 C115.691599,27.5615088 113.894928,32.2262451 110.232363,35.0266601 C104.392396,39.4900183 95.6324461,38.9566808 91.5293661,38.3903047 C91.0652524,38.3258008 90.7238534,37.8962989 90.7663316,37.4353317 L93.5384279,7.75250561 C93.5698932,7.4111067 93.8106031,7.13106519 94.1409891,7.05082858 C101.123147,5.36428649 106.555638,5.87559823 110.290574,8.57217765 C113.496891,10.8895998 115.472915,15.595241 115.575177,21.1630324 M114.857767,3.86181663 L114.857767,3.86181663 C110.677597,0.847437296 105.127112,-0.400163335 98.3699305,0.147333537 C93.3968339,0.551663124 89.4683865,1.84331523 89.0420312,1.98805578 L89.0011262,2.00064192 C87.8321889,2.3955319 87.0345426,3.4118623 86.9228407,4.6515966 L83.6378594,40.9861951 C83.5403169,42.0811888 84.2797523,43.1321311 85.3621599,43.4294785 L86.3312923,43.6937874 C86.3737705,43.7063735 90.8811801,44.8863236 96.8926329,45.0877018 C97.3960783,45.1050077 97.8948039,45.1144473 98.3872364,45.1144473 C105.175883,45.1144473 110.716929,43.5097151 114.875073,40.3380091 C120.214741,36.2648212 122.84367,29.8553319 122.687917,21.2967601 C122.541603,13.3674951 119.907954,7.50235617 114.857767,3.86181663" id="Fill-5备份" fill="#3E3C39"></path>
<g id="编组备份-2" transform="translate(127.167165, 0.232762)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="Clip-8"></g>
<path d="M37.2667591,4.81183674 C34.4159995,1.61653171 30.0737829,-0.00393316719 24.3581044,-0.00393316719 C19.2324009,-0.00393316719 14.5739577,1.91702569 10.7572123,5.57959097 L10.8830736,4.22186166 C10.9286983,3.74044199 10.7603588,3.25430253 10.4236797,2.88458481 C10.0854273,2.51644037 9.61344724,2.30719587 9.1257345,2.30719587 L7.74755272,2.30719587 C5.5780177,2.30719587 3.80809247,3.92766075 3.63031331,6.07831657 L0.637959718,42.1674854 C0.586041911,42.7999387 0.811019074,43.438685 1.2562536,43.9185314 C1.70306139,44.3999511 2.32292854,44.6752728 2.96167489,44.6752728 L5.66297411,44.6752728 C6.48893922,44.6752728 7.16701725,44.0601254 7.24253406,43.2451732 L9.24687605,21.755921 C9.34127207,20.75375 9.53478389,19.7861908 9.824265,18.8784159 C11.3408943,14.0909648 15.1922516,6.06101063 23.9223095,6.06101063 C27.8916618,6.06101063 30.805352,7.72552699 32.0938576,9.14933351 C33.8401838,11.0813052 33.6010473,13.8062035 33.5979007,13.8423886 L31.0979797,42.7700466 C31.0570747,43.2514663 31.2254143,43.7344592 31.5636667,44.1010304 C31.901919,44.4660283 32.3723258,44.6752728 32.8553188,44.6752728 L34.9760825,44.6752728 C36.6028405,44.6752728 37.9369708,43.4607108 38.0785648,41.8512588 L40.4667839,14.7202715 C40.4935294,14.4905745 41.0740649,9.08010977 37.2667591,4.81183674" id="Fill-7" fill="#3E3C39" mask="url(#mask-2)"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg class="icon" width="200" height="50" viewBox="0 0 4096 1024" xmlns="http://www.w3.org/2000/svg"><path d="M1081.536 723.584c74.656 27.296 230.368 54.432 356.288 54.432 135.68 0 211.2-37.568 217.248-95.872 5.504-53.184-50.048-60.384-203.264-96.672-211.712-51.904-346.784-132.256-333.536-260.672 15.392-149.088 214.912-261.76 521.056-261.76 149.248 0 293.952 10.528 368.928 35.104l-25.728 188c-48.672-16.928-234.976-40.448-360.992-40.448-127.776 0-193.92 40.192-198.496 84.256-5.76 55.776 60.64 58.368 226.624 102.56 224.768 57.024 323.04 137.312 310.176 261.792-15.072 146.432-194.592 270.944-553.056 270.944-149.216 0-277.824-27.232-348.672-54.464l23.392-187.168zm2106.4-613.792c816.16-153.888 886.592 122.624 861.376 367.296l-47.52 452.64H3742.72l43.36-412.832c9.376-90.912 67.744-268.736-214.048-262.08-97.536 2.368-145.888 15.744-145.888 15.744s-8.48 109.856-18.752 191.04l-49.12 468.128h-254.08l50.432-461.376 33.312-358.56zM2157.088 88.384c58.24-6.336 147.712-12.768 270.848-12.768 205.568 0 371.776 35.776 474.688 111.008 92.416 70.144 153.92 183.712 136.896 348.256-15.712 153.12-95.328 260.32-211.232 326.624-106.048 62.528-239.68 89.248-440.64 89.248-118.496 0-231.52-6.4-317.472-19.136l86.944-843.232zM2326.944 764c19.808 3.84 45.856 7.648 97.216 7.648 205.632 0 350.624-101.056 365.184-243.136 21.152-205.376-107.456-277.184-324.128-275.936-28.064 0-67.072 0-87.712 3.776l-50.592 507.616z" fill="#262626"/><path d="M934.176 936.8c-48.736 16.896-149.696 28.416-290.752 28.416-405.632 0-624.576-190.4-598.688-442.112C75.712 223.2 400.064 54.464 755.2 54.464c137.536 0 218.528 11.072 294.4 29.632l-24.352 202.048c-50.464-16.992-168.736-32.608-264.48-32.608-208.96 0-386.432 62.24-406.784 259.136-18.144 176.064 106.432 260.224 341.504 260.224 81.824 0 202.464-11.712 258.24-28.64L934.176 936.8z" fill="#CA0C16"/></svg>
\ No newline at end of file
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csdnFooter" content='{ "type": "1", "el": "#csdn-pub-footer" }'>
<!-- <link href='http://fonts.googleapis.com/css?family=Roboto:400,700,300' rel='stylesheet' type='text/css'> -->
<link rel="stylesheet" href="css/reset.css?rev=@@hash">
<!-- CSS reset -->
<link href="//csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<link rel="stylesheet" href="css/style.css?rev=@@hash">
<!-- Resource style -->
<script src="js/modernizr.js?rev=@@hash"></script>
<!-- Modernizr -->
<!--[if lt IE 8]>
<script>window.location.href="https://g.csdnimg.cn/browser_upgrade/1.0.2/index.html";</script>
<![endif]-->
<!--[if gte IE 8]>
<script src="https://g.csdnimg.cn/browser_upgrade/1.0.2/browser_upgrade.js"></script>
<![endif]-->
<title>GitCode 一亿人的安全代码仓</title>
</head>
<body>
<header class="cd-header header">
<div class="container-nav">
<div id="cd-logo">
<a href="https://gitcode.net/explore" target="_blank">
<img src="img/new.png" alt="Logo">
</a>
</div>
<ul class="menu">
<li>
<a href="https://gitcode.net/explore/welcome">
首页
</a>
</li>
<li>
<a href="https://dev-portal.csdn.net/welcome?utm_source=gitcode">
云服务
</a>
</li>
<li class="m-d-none">
<a href="https://about.gitcode.net#news">
行业资讯
</a>
</li>
<li>
<a href="https://gitcode.net/explore/projects/starred">项目</a>
</li>
<li>
<a href="https://gitcode.net/explore/groups">组织</a>
</li>
<li class="m-d-none" style="padding: 0;margin-left: 32px;">
<div class="input_box">
<input id="header-search" type="text" placeholder="搜索或转到…">
</div>
</li>
</ul>
</header>
</div>
<main class="cd-main-content" id="csdn-previewimg-box">
<div class="cd-fixed-bg cd-bg-1">
<div class="picinfo" id="about">
<h1>GitCode</h1>
<span>
<p style="font-size:24px;color:#FF6C46;">一亿人的安全代码仓</p> <br>
<p style="font-size:20px">源码级别的安全分析 & 协议分析平台 </p><br>
GitCode 是 CSDN
为开发者提供的开源项目创新服务平台,秉承“创新、开放、协作、共享”的开源价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新时代开发者培养的开源创新生态!支持公有云使用、私有化部署以及软硬一体化私有部署。
</span>
</div>
</div>
<div class="cd-scrolling-bg cd-color-2">
<div class="cd-container">
<h2>特色功能</h2>
<div class="csdn-digitalinfo">
<div style="color: #FF6C46;" class="title">
公仓
</div>
<div style="color: #4D4D4D;" class="content">
对所有人开放
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FFBB00;" class="title">
本地仓
</div>
<div style="color: #4D4D4D;" class="content">
家里的代码服务器
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #A0D75D;" class="title">
国际仓
</div>
<div style="color: #4D4D4D;" class="content">
面向海外推广中国项目
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #5A9BEF;" class="title">
加密仓
</div>
<div style="color: #4D4D4D;" class="content">
代码加密存储
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FF6C46;" class="title">
加速仓
</div>
<div style="color: #4D4D4D;" class="content">
全球优秀项目</br>GitCode 本地加速
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FF6C46;" class="title">
私仓
</div>
<div style="color: #4D4D4D;" class="content">
只对自己授权的人开放</br>容量速度没有任何限制
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #FFBB00;" class="title">
后备仓
</div>
<div style="color: #4D4D4D;" class="content">
不怕宕机 不怕壁垒
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #A0D75D;" class="title">
交付仓
</div>
<div style="color: #4D4D4D;" class="content">
专为正式交付准备
</div>
</div>
<div class="csdn-digitalinfo">
<div style="color: #5A9BEF;" class="title">
保险仓
</div>
<div style="color: #4D4D4D;" class="content">
只有所有权人才能取走</br>不能修改不能删除</br>只能增量上传
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cd-scrolling-bg cd-color-1">
<div class="cd-container programmer">
<div id="news">
<h2> 行业资讯</h2>
<div class="mod-b" onclick="document.getElementById('popup').style.display='block'">
<div class="mod-thumb">
<a href="javascript:;" class="transition">
<img src="img/os-cover-1.jpg" class="lazy">
</a>
</div>
<div class="mob-ctt">
<h4>
<a href="#:;" class="transition msubstr-row2">
<div class="limit">
2022年中国<em>开源</em>软件产业研究报告
</div>
</a>
</h4>
<a href="javascript:;" title="购买VIP会员"></a>
<span class="time">
价格:50元/篇
</span>
<div class="mob-sub">
“开源”的核心概念是软件的编写者将源代码免费提供给使用者,同时要求使用者遵循一定的开源规范。企业开源与商业化并不矛盾,开源的“引流”作用帮助企业实现……
</div>
</div>
</div>
<div class="mod-b" onclick="document.getElementById('popup').style.display='block'">
<div class="mod-thumb">
<a href="javascript:;" class="transition">
<img src="img/os-cover-2.jpg" class="lazy">
</a>
</div>
<div class="mob-ctt">
<h4>
<a href="#:;" class="transition msubstr-row2">
<div class="limit">
人脸识别标准制定:既要便捷刷脸 也要依法护脸
</div>
</a>
</h4>
<a href="javascript:;" title="购买VIP会员"></a>
<span class="time">
价格:50元/篇
</span>
<div class="mob-sub">
近日,全国信标委生物特征识别分技术委员会换届大会举行,会上人脸识别技术国家标准工作组正式成立。这意味着,人脸识别国家标准制定工作全……
</div>
</div>
</div>
<div class="mod-b" onclick="document.getElementById('popup').style.display='block'">
<div class="mod-thumb">
<a href="javascript:;" class="transition">
<img src="img/os-cover-3.jpg" class="lazy">
</a>
</div>
<div class="mob-ctt">
<h4>
<a href="#:;" class="transition msubstr-row2">
<div class="limit">
2023-2028年中国开源软件行业市场前瞻分析与投资战略分析报告
</div>
</a>
</h4>
<a href="javascript:;" title="购买VIP会员"></a>
<span class="time">
价格:2000元/套
</span>
<div class="mob-sub">
《2023-2028年中国开源软件行业市场前瞻分析与投资战略分析报告》主要分析了开源软件行业的市场规模、发展现状与投资前景,同时对开源软件行业的未来发展做出……
</div>
</div>
</div>
<div class="mod-b" onclick="document.getElementById('popup').style.display='block'">
<div class="mod-thumb">
<a href="javascript:;" class="transition">
<img src="img/os-cover-4.png" class="lazy">
</a>
</div>
<div class="mob-ctt">
<h4>
<a href="#:;" class="transition msubstr-row2">
<div class="limit">
2022年开源软件安全分析
</div>
</a>
</h4>
<a href="javascript:;" title="购买VIP会员"></a>
<span class="time">
价格:50元/篇
</span>
<div class="mob-sub">
随着技术的不断发展,开源软件安全问题也逐渐成为亟待解决的问题。然而,通过社区合作和不断改进,开源软件的安全性正在不断提高……
</div>
</div>
</div>
<div class="mod-b" onclick="document.getElementById('popup').style.display='block'">
<div class="mod-thumb">
<a href="javascript:;" class="transition">
<img src="img/os-cover-5.png" class="lazy">
</a>
</div>
<div class="mob-ctt">
<h4>
<a href="#:;" class="transition msubstr-row2">
<div class="limit">
中国信通院:《全球开源生态研究报告(2022年)》
</div>
</a>
</h4>
<a href="javascript:;" title="购买VIP会员"></a>
<span class="time">
价格:50元/一篇
</span>
<div class="mob-sub">
中国信通院发布了《全球开源生态研究报告(2022年)》白皮书,白皮书在去年的基础上继续围绕开源项目、开源社区、开源应用、开源商业、开源风险等开源领域热点话题进行探讨……
</div>
</div>
</div>
<div class="mod-b" onclick="document.getElementById('popup').style.display='block'">
<div class="mod-thumb">
<a href="javascript:;" class="transition">
<img src="img/os-cover-6.jpg" class="lazy">
</a>
</div>
<div class="mob-ctt">
<h4>
<a href="#:;" class="transition msubstr-row2">
<div class="limit">
开源软件在云计算中的应用
</div>
</a>
</h4>
<a href="javascript:;" title="购买VIP会员"></a>
<span class="time">
价格:50元/一篇
</span>
<div class="mob-sub">
开源软件在云计算中的使用正变得越来越普遍,这是因为云计算提供了一种更灵活、成本效益和高效的方法来部署和管理软件……
</div>
</div>
</div>
</div>
<!-- 支付弹窗 -->
<div id="popup" style="display:none; position:fixed; top:0; left:0; bottom:0; right:0; background-color:rgba(0,0,0,0.5);">
<div style="position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);" onclick="document.getElementById('popup').style.display='none'">
<img src="img/pay.jpg" alt="Image" style="width: 280px;">
<p style="text-align:right;"></p>
</div>
</div>
<h2><b>简单高效的工作方式</b></h2>
<div class="digitalinfo2-container">
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
管理
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>子组织管理</li>
<li>审计事件</li>
<li>审计报告</li>
<li>合规管理</li>
<li>DevOps报告</li>
<li>价值流管理</li>
</ul>
</div>
</div>
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
规划
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>团队计划</li>
<li>资源管理</li>
<li>服务台</li>
<li>需求管理</li>
<li>质量管理</li>
<li>设计管理</li>
</ul>
</div>
</div>
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
创建
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>源代码管理</li>
<li>代码审查</li>
<li>Wiki</li>
<li>Web IDE</li>
<li>Live浏览</li>
<li>代码片段</li>
</ul>
</div>
</div>
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
验证
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>持续集成 (CI)</li>
<li>代码测试与覆盖</li>
<li>合并队列</li>
</ul>
</div>
</div>
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
打包
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>发布包管理</li>
<li>大文件存储</li>
</ul>
</div>
</div>
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
安全
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>代码质量</li>
<li>缺陷管理</li>
</ul>
</div>
</div>
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
发布
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>Release Evidence</li>
<li>流水线(Pipe)</li>
<li>持续部署(CD)</li>
<li>Pages</li>
</ul>
</div>
</div>
<div class="csdn-digitalinfo2">
<div style="color: #ff3b3f;" class="title">
配置
</div>
<div style="color: #4D4D4D;" class="content">
<ul>
<li>Auto DevOps</li>
</ul>
</div>
</div>
</div>
<h2>行业解决方案</h2>
<p style="color: #ff3b3f;font-size:18px;">开源教学研解决方案</p>
<li style="color: #4D4D4D;">为教学研提供专业解决方案,维护国际知名开源项目的本土化知识库、开源技术栈路线图等内容,帮助初学者在开源领域成长</li>
<p style="color: #ff3b3f;font-size:18px;">开源运营需求</p>
<li style="color: #4D4D4D;">借助csdn 的运营能力,打造开源项目的新生态</li>
<p style="color: #ff3b3f;font-size:18px;">国家级开源活动</p>
<li style="color: #4D4D4D;">承接国家级的开源评选以及开源大赛</li>
<h2 style="margin-bottom: 20px">GitCode 大事记</h2>
<h4>2020年09月 推出代码托管平台 CodeChina</h4>
<!-- <p>CODE CHINA是CSDN为开发者提供的代码托管平台,开发者和企业可以托管、运营、推广自己的开源项目,也可以
托管自己的私有代码仓库。平台提供完善的源代码管理功能及开源协作功能,包括Issue,WIKI,Pages,代码片,
MR,Star,Fork等社交编程功能。</p>
<p>教育为先</p> -->
<h4>2021年04月 DevOps上线</h4>
<!-- <p>平台定位</p>
<li>为AI爱好者提供一站式从入门到熟练运用到工作中的学习平台</li>
<li>提供拟真实验环境,让学员学习后直接具备在公司真实线上环境完成分配的工作内容能力</li>
<li>全面提升学员基础能力+编码能力+实战能力,一次补齐后续工作中所有短板</li>
<p>平台特色</p>
<li>一站式AI学习平台,提供常用AI数据集、个人云存储、模型训练、结果导出功能
<li>Web Shell全拟真生产环境,真实体验公司线上实际生产流程,学习和实践高度结合</li>
<li>多环境快速切换,搭配高配置GPU,快速学习、实践AI课程</li>
<li>在线答题巩固AI基础能力,在线编程提升代码编写能力</li> -->
<h4>2021年10月 启用全新的域名 https://gitcode.net</h4>
<!-- <p>区块链大本营:专业区块链开发者社区,提供业内资讯、深度观点、网络问答等信息服务,并通过系列技术沙龙、Workshop、区块链线上峰会、编程大赛/黑客松、区块链技术培训等线上线下活动,为技术人员、创业者提供整个职业生涯的多维度服务。</p>
<p>CODE Network:面向全球开发者社群的协作平台,开发者、用户和贡献者被通证连接和激励,形成分布式协作组织(DCO)。DCO可在其上完成团队创建、通证发行、融资、销售和权益分配,基于通证的激励机制共同开发软件、创作产品、传播知识,以新的协作组织模式创造新的科技与智慧成果,并获取和公平的分配收益。</p> -->
<h4>2021年末 CODECHINA 正式升级为全新的 GitCode 品牌</h4>
<!-- <p>区块链大本营:专业区块链开发者社区,提供业内资讯、深度观点、网络问答等信息服务,并通过系列技术沙龙、Workshop、区块链线上峰会、编程大赛/黑客松、区块链技术培训等线上线下活动,为技术人员、创业者提供整个职业生涯的多维度服务。</p>
<p>CODE Network:面向全球开发者社群的协作平台,开发者、用户和贡献者被通证连接和激励,形成分布式协作组织(DCO)。DCO可在其上完成团队创建、通证发行、融资、销售和权益分配,基于通证的激励机制共同开发软件、创作产品、传播知识,以新的协作组织模式创造新的科技与智慧成果,并获取和公平的分配收益。</p> -->
<h2>常用链接</h2>
<p style="color: #ff3b3f;font-size:18px;">博客</p>
<p style="color: #4D4D4D;"><a href="https://gitcode.blog.csdn.net/"
target="_blank">https://gitcode.blog.csdn.net/</a></p>
<p style="color: #ff3b3f;font-size:18px;">社区</p>
<p style="color: #4D4D4D;"><a href="https://bbs.csdn.net/forums/opensource?category=0"
target="_blank">https://bbs.csdn.net/forums/opensource</a></p>
<p style="color: #ff3b3f;font-size:18px;">新闻资讯</p>
<p style="color: #4D4D4D;"><a href="https://gitcode.net/explore" target="_blank">https://gitcode.net/explore</a>
</p>
<p style="color: #ff3b3f;font-size:18px;">Quicker 客户端</p>
<p style="color: #4D4D4D;">暂无</p>
<p style="color: #ff3b3f;font-size:18px;">文档翻译计划</p>
<p style="color: #4D4D4D;">暂无</p>
<p style="color: #ff3b3f;font-size:18px;">加入我们</p>
<p style="color: #4D4D4D;"><a href="https://www.csdn.net/company/index.html#recruit"
target="_blank">https://www.csdn.net/company/index.html#recruit</a></p>
<h2 id="train">我们的合作伙伴</h2>
<p class="partner">
<span>开源软件推进联盟</span>
<span>华为</span>
<span>百度</span>
<span>阿里</span>
<span>腾讯</span>
<span>浪潮</span>
<span>优麒麟</span>
<span>旷视</span>
<span>开放原子教育</span>
<span>小米</span>
<span>网易</span>
<span>字节跳动</span>
<span>京东</span>
<span>58</span>
<span>Apache 基金会</span>
<span>Linux AI 基金会</span>
<span>PingCAP</span>
<span>一流科技</span>
<span>翼辉信息</span>
<span>OpenCV</span>
<span>青云</span>
<span>携程</span>
<span>海信研发中心</span>
<span>OpenHarmony</span>
<span>Openeuler</span>
<span>RT-Thread</span>
<span>MindSpore</span>
<span>飞腾</span>
<span>香山处理器</span>
<span>DCloud </span>
<span>Wechaty</span>
<span>Kylin</span>
<span>Chatopera</span>
<span>JustAuth</span>
<span>Sureness</span>
<span>OpenDILab开源决策智能平台</span>
<span>Koderover</span>
<span>上电科</span>
<span>云鲸智能AckyStack</span>
<span>Duckula</span>
<span>程序员联盟</span></br>
<span>DLOU-CV</span>
<span>Fedora工作站中国研究小组</span>
<span>Unity3D</span>
<span>Jenkins 中文社区</span>
<span>Vscode</span>
<span>OpenOffice</span>
<span>CNTT</span>
<span>Exceliz</span>
<span>闽江学院</span>
</p>
</div>
<!-- cd-container -->
</div>
<!-- cd-scrolling-bg -->
<div class="cd-fixed-bg cd-bg-4">
<div class="picinfo" id="contact">
<h2>联系我们</h2>
</div>
</div>
<div class="cd-scrolling-bg cd-color-3">
<div class="cd-container programmer">
<p>
<img src="https://www.csdn.net/company/img/rectangle@2x.jpg" alt="" class="chart-1">
</p>
<h2>地址</h2>
<p>北京市朝阳区酒仙桥路10号恒通商务园B8B二层 </br>
地址链接:<a href="https://j.map.baidu.com/kgPSP" target="_blank">https://j.map.baidu.com/kgPSP </a></br>
邮编:100015</p>
<p>010-84770176</p>
<p>Email:gitcode@csdn.net</p>
<h2>Issue 反馈</h2>
<p>
<p style="color: #4D4D4D;"><a href="https://gitcode.net/gitcode/help-docs/-/issues"
target="_blank">https://gitcode.net/gitcode/help-docs/-/issues</a></p>
<!-- <a href="https://ads.csdn.net" target="_blank" class="online-application">在线广告发布服务申请</a> -->
</p>
</div>
</div>
<div id="csdn-pub-footer" class="csdn-pub-footer"></div>
</main>
<!-- cd-main-content -->
<script src="js/jquery-1.11.0.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script src="js/main.js?rev=@@hash"></script>
<!-- <script src="https://g.csdnimg.cn/preview-img/2.0/preview-img.js"></script> -->
<script>
// document.getElementById('popup').addEventListener('click', function(event) {
// event.stopPropagation();
// });
// document.addEventListener('click', function() {
// document.getElementById('popup').style.display = 'none';
// });
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
document.getElementById('popup').style.display = 'none';
}
});
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- <meta name="csdn-share-wx" content='{"title":"CSDN-专业IT技术社区","imgUrl":"https://csdnimg.cn/public/favicon.ico","desc":"描述信息"}'> -->
<link rel="stylesheet" href="css/reset.css?rev=@@hash">
<link href="//csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<!-- CSS reset -->
<link rel="stylesheet" href="css/style.css?rev=@@hash">
<script src="js/modernizr.js?rev=@@hash"></script>
<title></title>
<style>
body{background-color: #F5F6F7}
</style>
</head>
<body>
<header class="cd-header header">
<div class="container-nav">
<div id="cd-logo">
<a href="https://www.csdn.net" target="_blank">
<img src="img/csdn-logo-new.svg" alt="Logo">
</a>
</div>
<nav class="cd-main-nav">
<ul>
<!-- inser more links here -->
<!-- @@loop('nav_job.html',"js/header.json") -->
</ul>
</nav>
</div>
<!-- cd-main-nav -->
</header>
<div class="job-describe">
<div class="job-title">
<div class="container">
<h2 class="job-name"></h2>
</div>
</div>
<div class="container jobs_dec clearfix">
<div class="job-contain">
<div class="job_name_area clearfix">
<img class="job_img" alt="">
<h2 class="job-name-dec"></h2>
<p><span class="job_are"></span> &nbsp; | &nbsp; <span class="job-name"></span></p>
</div>
<h2 class="gwzz">岗位职责</h2>
<ol class="job-duty">
</ol>
<h2 class="rzyq">任职要求</h2>
<ol class="job-require">
</ol>
<!-- <h2 class="jfx">加分项</h2>
<ol class="job-pluse" id="jfx_ol">
</ol> -->
<!--<h2 class="tgzl">你需要提供的材料</h2>-->
<!--<ol class="job-material">-->
<!--</ol>-->
<h2 class="lxfs">联系方式</h2>
<p>*邮件标题注明:应聘<span class="job-name"></span> *邮箱地址:hrzhaopin@csdn.net</p>
<a href="mailto:hrzhaopin@csdn.net" class="send-resume">发送简历</a>
</div>
<!--hot-->
<div class="hot_jobs">
<h3>热门岗位</h3>
<ul class="recruit job-recruit-hot">
@@loop('jobs-right.html',"js/jobs_description_.json")
</ul>
</div>
</div>
<!--other-->
<div class="container jobs_other">
<h2 class="qtzw">其他职位</h2>
<ul class="recruit job-recruit">
@@loop('jobs.html',"js/jobs_description_.json")
</ul>
<p class="btn_box"><a href="javascript:" >查看更多</a></p>
</div>
</div>
</body>
</html>
<script src="js/jquery-1.11.0.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script src="https://g.csdnimg.cn/sharewx/1.1.9/sharewx.js"></script>
<script src="js/main.js?rev=@@hash"></script>
<script>
$(function () {
var search = decodeURI(decodeURI(window.location.search.substr(1)))
$.getJSON("js/jobs_description_.json", function (data) {
var newArr = data.filter(function (s) {
return s.id === search;
});
var title = newArr[0].title
var duty = newArr[0].duty
var requirement = newArr[0].requirement
var pluse = newArr[0].pluse
var material = newArr[0].material
var area = newArr[0].area
var img = newArr[0].img
//var other_duty = newArr[0].other_duty
$(".job-name").text(title)
$(".job-name-dec").text(title)
$(".job_are").text(area)
$(".job_img").attr("src", img);
getJob(duty, 'job-duty')
getJob(material, 'job-material')
getJob(pluse, 'job-pluse')
getJob(requirement, 'job-require')
})
function getJob(arr, id) {
var newArr = '';
for (var i = 0; i <= arr.length - 1; i++) {
newArr += "<li>" + arr[i] + "</li>"
$("." + id).html(newArr)
}
}
})
</script>
<script type="text/javascript">
$('.btn_box a').click(function(){
$('.job-recruit').height('auto');
$(this).hide()
})
if (window.csdn.sharewx.isWeiXin()) {
window.csdn.sharewx.getConfig()
$(document).ready(function(){
var shareImgUrl = ''
if($(".article_content") && $(".article_content").find("img").length > 0 && $(".article_content img").first().data('src')){
shareImgUrl = $(".article_content img").first().data('src')
}
var shareData = {
title : "wepy.js微信小程序报错\'wx\' is not defined no-undef",
desc : "\'wx\'isnotdefined&nbsp;no-undef是eslint报错吧。禁用eslint或者给eslint加上全局变量wx在.eslintrc.js文件中加入以下内容globals:{wx:true},",
link : window.location.href,
imgUrl: shareImgUrl,
}
window.csdn.sharewx.onMenuShare(shareData)
})
}
</script>
\ No newline at end of file
<li>
<img src=@@img alt="">
<div class="jobs_right">
<a href="job.html?@@id" attr="@@id"><p class="job-n">@@title</p></a>
<p class="jobs_area_dec">@@area &nbsp; | &nbsp; @@imgName</p>
</div>
</li>
\ No newline at end of file
<li>
<a href="job.html?@@id" attr="@@id"><p class="job-n">@@title</p></a>
<p class="jobs_area_dec">@@area &nbsp; | &nbsp; @@imgName</p>
</li>
\ No newline at end of file
<li>
<img src=@@img alt="">
<div class="jobs_right">
<a href="job.html?@@id" attr="@@id"><p class="job-n">@@title</p></a>
<p class="jobs_area_dec">@@area &nbsp; | &nbsp; @@imgName</p>
<p class="job-d">@@other_duty</p>
</div>
</li>
\ No newline at end of file
[{
"title": "首页",
"src": "https://www.csdn.net",
"src_job": "https://www.csdn.net",
"target":"_blank"
},
{
"title": "公司简介",
"src": "#about",
"src_job": "index.html#about",
"target":"_self"
},
{
"title": "招贤纳士",
"src": "#recruit",
"src_job": "index.html#recruit",
"target":"_self"
},
{
"title": "商务合作",
"src": "#contact",
"src_job": "index.html#contact",
"target":"_self"
},
{
"title": "广告服务",
"src": "#advertisement",
"src_job": "index.html#advertisement",
"target":"_self"
},
{
"title": "CSDN大事记",
"src": "#dsj",
"src_job": "index.html#dsj",
"target":"_self"
},
{
"title": "合作伙伴",
"src": "#train",
"src_job": "index.html#train",
"target":"_self"
},
{
"title": "联系方式",
"src": "#contact",
"src_job": "index.html#contact",
"target":"_self"
},
{
"title": "版权说明",
"src": "#statement",
"src_job": "index.html#statement",
"target":"_self"
},
{
"title": "法律顾问",
"src": "#layer",
"src_job": "index.html#layer",
"target":"_self"
}
]
\ No newline at end of file
[{
"id": "java-1",
"imgName": "Java",
"title": "高级Java研发工程师",
"duty": [
"根据项目计划配合项目产品经理分解研发任务,组织解决研发过程中存在的技术问题;",
"负责系统概要设计和详细设计,编制系统设计方案,保证系统稳定;",
"与产品、运营等团队紧密配合,确定产品的技术解决方案和开发时间评估;",
"解决研发过程中的关键问题和技术难题;",
"协同组内开发工作以及任务安排。"
],
"requirement": [
"统招本科及以上学历,计算机或相关专业毕业,5年以上开发经验;",
"良好的Java语言基础,熟悉Spring,SpringBoot,MyBatis等常用框架和类库;",
"熟悉MySQL数据库的使用以及SQL优化,有大规模高并发环境下MySQL优化经验;",
"有企业应用研发,大型商业平台web系统研发经验优先;有高性能、高可用性系统设计、研发、优化经验;",
"熟悉Linux操作系统,掌握常用的Linux命令,熟悉脚本编程shell、Python优先;",
"熟练使用redis、rabbitMQ/zookeeper等;",
"熟悉TCP/IP、http、https等网络协议,熟悉网络安全,了解网络安全策略,对web认证、鉴权和加密有开发经验优先。"
],
"img": "img/job_dev.png",
"other_duty": "根据项目计划配合项目产品经理分解研发任务,组织解决研发过程中存在的技术问题;负责系统概要设计和详细设计,编制系统设计方案,保证系统稳定;与产品、运营等团队紧密配合,确定产品的技术解决方案和开发时间评估;解决研发过程中的关键问题和技术难题;协同组内开发工作以及任务安排。",
"pluse": [],
"material": [],
"area": "长沙"
}, {
"id": "qianduan",
"imgName": "Web",
"title": "高级前端研发工程师",
"duty": [
"负责CSDN-长沙研发中心前端相关项目研发;",
"负责前端系统架构技术选型与建设,持续优化产品质量、性能和用户体验;",
"与产品、设计、测试、开发人员保持良好沟通,保持产品质量和开发进度。"
],
"requirement": [
"统招本科及以上学历,计算机或相关专业毕业,至少3年以上前端研发工作经验;",
"前端基础知识扎实,熟练掌握原生JavaScript(ES6)、HTML、CSS,熟悉并掌握至少一种MVVM框架,如: Vue、React、Angular,并深入理解其原理;",
"有工程化意识,能够独立搭建 gulp、Webpack 等开发环境,有良好的代码书写习惯,对代码优化有一定理解;",
"负责解决前端开发流程中的各种痛点,带领技术攻关,持续优化。"
],
"img": "img/job_dev.png",
"other_duty": "负责CSDN-长沙研发中心前端相关项目研发;负责前端系统架构技术选型与建设,持续优化产品质量、性能和用户体验;与产品、设计、测试、开发人员保持良好沟通,保持产品质量和开发进度。",
"pluse": [
"熟悉至少一种后端开发语言(NODEJS/JAVA/PHP等);",
"小程序/Chrome插件开发。"
],
"material": [],
"area": "长沙"
}, {
"id": "cekai",
"imgName": "Python",
"title": "测试开发工程师",
"duty": [
"负责接口/ui自动化测试框架开发,自动化测试脚本开发,进行自动化测试和自动化方向相关的质量保障工作;",
"推动解决自动化测试过程中遇到的问题;",
"负责自动化测试ci持续集成,推动自动化测试在研发迭代流程中的落地工作;",
"研究新技术以提供自动化测试的效率和质量,满足质量保障的需求。"
],
"requirement": [
"统招本科及以上学历,计算机或相关专业毕业,具有3-5年自动化测试相关经验;",
"熟练使用python/java编程语言,熟悉常见的数据库操作;",
"熟悉常见的自动化测试用例设计方法,熟练使用常见的测试工具;",
"熟练使用开源测试框架并对其进行二次开发,如unittest/pytest;",
"熟悉使用接口测试工具,如postman,jemter等;",
"很强的学习能力和技术专研能力,熟悉常见的获取前沿技术的渠道。"
],
"img": "img/job_dev.png",
"other_duty": "负责接口/ui自动化测试框架开发,自动化测试脚本开发,进行自动化测试和自动化方向相关的质量保障工作;推动解决自动化测试过程中遇到的问题;负责自动化测试ci持续集成,推动自动化测试在研发迭代流程中的落地工作;研究新技术以提供自动化测试的效率和质量,满足质量保障的需求。",
"pluse": [],
"material": [],
"area": "长沙"
}, {
"id": "ue",
"imgName": "UE",
"title": "UE设计师",
"duty": [
"负责CSDN 产品的交互设计,并对最终的产品体验和效果负责;",
"参与用户研究及产品需求制定,整理用户目标、任务,持续优化产品用户体验,对现有产品的可用测试和评估,提出改进方案,持续优化产品用户体验;",
"对产品数据变化敏感度高,根据数据提出产品迭代方案,对同类产品进行竞品分析,参与前瞻性设计研究,提供产品交互设计规范,参与团队的专业化建设,提高团队专业水平。"
],
"requirement": [
"统招本科及以上学历,3年以上互联网产品Web、H5、APP端等交互设计工作经验;",
"对交互设计理论知识有较深的了解,掌握Sketch、Ps、Axure等工具,熟悉用户研究、交互设计相关专业知识及技巧,并有相关成功案例;",
"对互联网产品有敏锐的洞察力,对产品整体规划有较深的理解,时刻关注业界最新交互设计理念,有知名互联网团队工作背景者优先;",
"完成产品信息构架,任务流程,交互原型设计,对用户体验研究和流程有系统化理解,有交互设计规范编写经验,有良好的逻辑思维和视觉跟踪经验,产品合作经验,对产品的用户体验负责。"
],
"img": "img/job_ui.png",
"other_duty": "负责CSDN 产品的交互设计,并对最终的产品体验和效果负责;参与用户研究及产品需求制定,整理用户目标、任务,持续优化产品用户体验,对现有产品的可用测试和评估,提出改进方案,持续优化产品用户体验;对产品数据变化敏感度高,根据数据提出产品迭代方案,对同类产品进行竞品分析,参与前瞻性设计研究,提供产品交互设计规范,参与团队的专业化建设,提高团队专业水平。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "ui",
"imgName": "UI",
"title": "UI设计师",
"duty": [
"负责 CSDN 旗下产品UI 设计;",
"负责 CSDN 移动端和网站的 UI 设计和风格定义、优化用户体验;",
"负责 CSDN 视觉审美把控及网站封面设计;",
"与产品经理和开发人员合作,根据产品需求提交开发设计稿;",
"根据产品迭代进行延续性设计,并参与制订产品设计规范。"
],
"requirement": [
"统招本科及以上学历,3-5年经验;",
"充分理解设计流程与规范,至少独立完成过一款已上线产品的UI设计,或写过设计规范;",
"对用户体验敏感,善于用设计语言解决产品问题,追求极致用户体验;",
"熟练掌握sketch等设计软件;",
"具备良好的合作态度和团队精神,关注产品设计趋势,关注互联网动态,具有敏锐的设计嗅觉,创新欲望强烈,富有责任感。"
],
"img": "img/job_ui.png",
"other_duty": "负责 CSDN 旗下产品UI 设计;负责 CSDN 移动端和网站的 UI 设计和风格定义、优化用户体验;负责 CSDN 视觉审美把控及网站封面设计;与产品经理和开发人员合作,根据产品需求提交开发设计稿;根据产品迭代进行延续性设计,并参与制订产品设计规范。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "bianji-1",
"imgName": "编辑",
"title": "高级策划编辑",
"duty": [
"负责软件开发技术杂志与专题图书的策划、编撰及出版工作;",
"策划和撰写热点专刊、专题、原创文章以及其他IT类内容产品;",
"挖掘、联络及维护IT行业技术专家,建立专家资源,共同策划出开发者喜爱的内容作品。"
],
"requirement": [
"统招本科及以上学历,理工科、英语、传媒等相关专业,五年以上纸质出版编辑经验,熟悉期刊或图书的策划出版流程,有计算机专业或编程经验者优先;",
"对IT行业技术体系有较完整的认知,熟悉当前主要技术领域发展现状和趋势;",
"对IT技术发展有较高热情和敏锐度,良好的技术选题捕捉与策划能力,执行力强;",
"有计算机图书或杂志策划编辑经验者优先;对畅销内容有自己的见。"
],
"img": "img/job_ed.png",
"other_duty": "负责软件开发技术杂志与专题图书的策划、编撰及出版工作;策划和撰写热点专刊、专题、原创文章以及其他IT类内容产品;挖掘、联络及维护IT行业技术专家,建立专家资源,共同策划出开发者喜爱的内容作品。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "bianji-2",
"imgName": "编辑",
"title": "记者编辑",
"duty": [
"根据需要策划选题内容,采访开发者、科技领导者以及其他专家并成稿;",
"负责商务内容撰写,理解客户需求,配合商务部门产出相关文章、文案及创意内容;",
"跟踪报道相关活动,产出新闻或深度解析文章;",
"配合协调渠道发布,能够独立完成文章全流程,并对文章效果负责。"
],
"requirement": [
"统招本科及以上学历,欢迎计算机专业的应届生应聘;",
"有文案创作和编写能力,对IT、开发者、云计算、大数据、AI等领域有一定认知;",
"有沟通能力,有自主想法,能够参与到相关的开发者活动之中,进行前期策划;",
"对开发及互联网领域有敏感性,能够准确把握读者心态,能独立采访或寻找相关内容并最终成稿。"
],
"img": "img/job_ed.png",
"other_duty": "根据需要策划选题内容,采访开发者、科技领导者以及其他专家并成稿;负责商务内容撰写,理解客户需求,配合商务部门产出相关文章、文案及创意内容;跟踪报道相关活动,产出新闻或深度解析文章;配合协调渠道发布,能够独立完成文章全流程,并对文章效果负责。",
"pluse": [],
"material": [],
"area": "北京"
}, {
"id": "xiangmu-1",
"imgName": "项目",
"title": "项目经理",
"duty": [
"作为客户合作接口,配合CSDN商务项目的整体统筹管理,协同后端小组成员完成项目落地;",
"配合销售完成项目售前评估,项目实施,项目交付三个阶段服务工作;对配合的项目执行进行具体的任务分解及风险节点的完整把控,对突发事件进行应急处理;",
"负责项目立项时设计完整的项目执行计划表,完成详实的进行任务分解及项目执行过程中的里程碑管控。目标降低项目执行风险,降低项目支持成本;",
"根据客户实际需求结合公司资源,向客户提供做优化的服务解决方案;",
"负责对公司内外部团队的协调,合理调配资源,促进跨部门的有效沟通和及时响应。"
],
"requirement": [
"本科学历,计算机相关专业,4A或知名广告营销公司项目管理经验三年以上优先考虑;",
"学习或系统参与过营销领域的项目规范体系搭建,并有相关证明;",
"性格开朗热情,在平时就是各种事务活动的组织者,做事细致,执行力强。"
],
"img": "img/job_pro.png",
"other_duty": "作为客户合作接口,配合CSDN商务项目的整体统筹管理,协同后端小组成员完成项目落地;配合销售完成项目售前评估,项目实施,项目交付三个阶段服务工作;对配合的项目执行进行具体的任务分解及风险节点的完整把控,对突发事件进行应急处理;负责项目立项时设计完整的项目执行计划表,完成详实的进行任务分解及项目执行过程中的里程碑管控。目标降低项目执行风险,降低项目支持成本;根据客户实际需求结合公司资源,向客户提供做优化的服务解决方案;负责对公司内外部团队的协调,合理调配资源,促进跨部门的有效沟通和及时响应。",
"pluse": [],
"material": [],
"area": "北京"
}]
\ No newline at end of file
/*
* @Author: Administrator
* @Date: 2017-08-17 16:57:00
* @Last Modified by: Administrator
* @Last Modified time: 2017-08-17 16:57:25
*/
/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
!function(a,b){"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){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.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||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[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;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;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-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",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(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),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-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){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 db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(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 mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(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){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.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},z=b?function(a,b){if(a===b)return j=!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===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.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=db.selectors={cacheLength:50,createPseudo:fb,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(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===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]||db.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]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(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(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.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+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},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(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(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),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?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===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!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:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?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]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[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?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(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 sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(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.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.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=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.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 n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.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=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;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},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(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=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.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+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=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};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):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):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.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 lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.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;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.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)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(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=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.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)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.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;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.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=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},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)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.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 Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(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}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,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)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
\ No newline at end of file
jQuery(document).ready(function ($) {
//open-close submenu on mobile
$('.cd-main-nav').on('click', function (event) {
if ($(event.target).is('.cd-main-nav')) $(this).children('ul').toggleClass('is-visible');
});
$('.cd-main-nav li').on('click', function () {
$(this).parent('ul').removeClass('is-visible')
});
});
\ No newline at end of file
/*!
* Modernizr v2.7.1
* www.modernizr.com
*
* Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
* Available under the BSD and MIT licenses: www.modernizr.com/license/
*/
/*
* Modernizr tests which native CSS3 and HTML5 features are available in
* the current UA and makes the results available to you in two ways:
* as properties on a global Modernizr object, and as classes on the
* <html> element. This information allows you to progressively enhance
* your pages with a granular level of control over the experience.
*
* Modernizr has an optional (not included) conditional resource loader
* called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
* To get a build that includes Modernizr.load(), as well as choosing
* which tests to include, go to www.modernizr.com/download/
*
* Authors Faruk Ates, Paul Irish, Alex Sexton
* Contributors Ryan Seddon, Ben Alman
*/
window.Modernizr = (function( window, document, undefined ) {
var version = '2.7.1',
Modernizr = {},
/*>>cssclasses*/
// option for enabling the HTML classes to be added
enableClasses = true,
/*>>cssclasses*/
docElement = document.documentElement,
/**
* Create our "modernizr" element that we do most feature tests on.
*/
mod = 'modernizr',
modElem = document.createElement(mod),
mStyle = modElem.style,
/**
* Create the input element for various Web Forms feature tests.
*/
inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
/*>>smile*/
smile = ':)',
/*>>smile*/
toString = {}.toString,
// TODO :: make the prefixes more granular
/*>>prefixes*/
// List of property values to set for css tests. See ticket #21
prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
/*>>prefixes*/
/*>>domprefixes*/
// Following spec is to expose vendor-specific style properties as:
// elem.style.WebkitBorderRadius
// and the following would be incorrect:
// elem.style.webkitBorderRadius
// Webkit ghosts their properties in lowercase but Opera & Moz do not.
// Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
// erik.eae.net/archives/2008/03/10/21.48.10/
// More here: github.com/Modernizr/Modernizr/issues/issue/21
omPrefixes = 'Webkit Moz O ms',
cssomPrefixes = omPrefixes.split(' '),
domPrefixes = omPrefixes.toLowerCase().split(' '),
/*>>domprefixes*/
/*>>ns*/
ns = {'svg': 'http://www.w3.org/2000/svg'},
/*>>ns*/
tests = {},
inputs = {},
attrs = {},
classes = [],
slice = classes.slice,
featureName, // used in testing loop
/*>>teststyles*/
// Inject element with style element and some CSS rules
injectElementWithStyles = function( rule, callback, nodes, testnames ) {
var style, ret, node, docOverflow,
div = document.createElement('div'),
// After page load injecting a fake body doesn't work so check if body exists
body = document.body,
// IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
fakeBody = body || document.createElement('body');
if ( parseInt(nodes, 10) ) {
// In order not to give false positives we create a node for each test
// This also allows the method to scale for unspecified uses
while ( nodes-- ) {
node = document.createElement('div');
node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
div.appendChild(node);
}
}
// <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
// when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
// with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
// msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
// Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277
style = ['&#173;','<style id="s', mod, '">', rule, '</style>'].join('');
div.id = mod;
// IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
// Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
(body ? div : fakeBody).innerHTML += style;
fakeBody.appendChild(div);
if ( !body ) {
//avoid crashing IE8, if background image is used
fakeBody.style.background = '';
//Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
fakeBody.style.overflow = 'hidden';
docOverflow = docElement.style.overflow;
docElement.style.overflow = 'hidden';
docElement.appendChild(fakeBody);
}
ret = callback(div, rule);
// If this is done after page load we don't want to remove the body so check if body exists
if ( !body ) {
fakeBody.parentNode.removeChild(fakeBody);
docElement.style.overflow = docOverflow;
} else {
div.parentNode.removeChild(div);
}
return !!ret;
},
/*>>teststyles*/
/*>>mq*/
// adapted from matchMedia polyfill
// by Scott Jehl and Paul Irish
// gist.github.com/786768
testMediaQuery = function( mq ) {
var matchMedia = window.matchMedia || window.msMatchMedia;
if ( matchMedia ) {
return matchMedia(mq).matches;
}
var bool;
injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
bool = (window.getComputedStyle ?
getComputedStyle(node, null) :
node.currentStyle)['position'] == 'absolute';
});
return bool;
},
/*>>mq*/
/*>>hasevent*/
//
// isEventSupported determines if a given element supports the given event
// kangax.github.com/iseventsupported/
//
// The following results are known incorrects:
// Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
// Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
// ...
isEventSupported = (function() {
var TAGNAMES = {
'select': 'input', 'change': 'input',
'submit': 'form', 'reset': 'form',
'error': 'img', 'load': 'img', 'abort': 'img'
};
function isEventSupported( eventName, element ) {
element = element || document.createElement(TAGNAMES[eventName] || 'div');
eventName = 'on' + eventName;
// When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
var isSupported = eventName in element;
if ( !isSupported ) {
// If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
if ( !element.setAttribute ) {
element = document.createElement('div');
}
if ( element.setAttribute && element.removeAttribute ) {
element.setAttribute(eventName, '');
isSupported = is(element[eventName], 'function');
// If property was created, "remove it" (by setting value to `undefined`)
if ( !is(element[eventName], 'undefined') ) {
element[eventName] = undefined;
}
element.removeAttribute(eventName);
}
}
element = null;
return isSupported;
}
return isEventSupported;
})(),
/*>>hasevent*/
// TODO :: Add flag for hasownprop ? didn't last time
// hasOwnProperty shim by kangax needed for Safari 2.0 support
_hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
hasOwnProp = function (object, property) {
return _hasOwnProperty.call(object, property);
};
}
else {
hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
};
}
// Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
// es5.github.com/#x15.3.4.5
if (!Function.prototype.bind) {
Function.prototype.bind = function bind(that) {
var target = this;
if (typeof target != "function") {
throw new TypeError();
}
var args = slice.call(arguments, 1),
bound = function () {
if (this instanceof bound) {
var F = function(){};
F.prototype = target.prototype;
var self = new F();
var result = target.apply(
self,
args.concat(slice.call(arguments))
);
if (Object(result) === result) {
return result;
}
return self;
} else {
return target.apply(
that,
args.concat(slice.call(arguments))
);
}
};
return bound;
};
}
/**
* setCss applies given styles to the Modernizr DOM node.
*/
function setCss( str ) {
mStyle.cssText = str;
}
/**
* setCssAll extrapolates all vendor-specific css strings.
*/
function setCssAll( str1, str2 ) {
return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
}
/**
* is returns a boolean for if typeof obj is exactly type.
*/
function is( obj, type ) {
return typeof obj === type;
}
/**
* contains returns a boolean for if substr is found within str.
*/
function contains( str, substr ) {
return !!~('' + str).indexOf(substr);
}
/*>>testprop*/
// testProps is a generic CSS / DOM property test.
// In testing support for a given CSS property, it's legit to test:
// `elem.style[styleName] !== undefined`
// If the property is supported it will return an empty string,
// if unsupported it will return undefined.
// We'll take advantage of this quick test and skip setting a style
// on our modernizr element, but instead just testing undefined vs
// empty string.
// Because the testing of the CSS property names (with "-", as
// opposed to the camelCase DOM properties) is non-portable and
// non-standard but works in WebKit and IE (but not Gecko or Opera),
// we explicitly reject properties with dashes so that authors
// developing in WebKit or IE first don't end up with
// browser-specific content by accident.
function testProps( props, prefixed ) {
for ( var i in props ) {
var prop = props[i];
if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
return prefixed == 'pfx' ? prop : true;
}
}
return false;
}
/*>>testprop*/
// TODO :: add testDOMProps
/**
* testDOMProps is a generic DOM property test; if a browser supports
* a certain property, it won't return undefined for it.
*/
function testDOMProps( props, obj, elem ) {
for ( var i in props ) {
var item = obj[props[i]];
if ( item !== undefined) {
// return the property name as a string
if (elem === false) return props[i];
// let's bind a function
if (is(item, 'function')){
// default to autobind unless override
return item.bind(elem || obj);
}
// return the unbound function or obj or value
return item;
}
}
return false;
}
/*>>testallprops*/
/**
* testPropsAll tests a list of DOM properties we want to check against.
* We specify literally ALL possible (known and/or likely) properties on
* the element including the non-vendor prefixed one, for forward-
* compatibility.
*/
function testPropsAll( prop, prefixed, elem ) {
var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
// did they call .prefixed('boxSizing') or are we just testing a prop?
if(is(prefixed, "string") || is(prefixed, "undefined")) {
return testProps(props, prefixed);
// otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
} else {
props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
return testDOMProps(props, prefixed, elem);
}
}
/*>>testallprops*/
/**
* Tests
* -----
*/
// The *new* flexbox
// dev.w3.org/csswg/css3-flexbox
tests['flexbox'] = function() {
return testPropsAll('flexWrap');
};
// The *old* flexbox
// www.w3.org/TR/2009/WD-css3-flexbox-20090723/
tests['flexboxlegacy'] = function() {
return testPropsAll('boxDirection');
};
// On the S60 and BB Storm, getContext exists, but always returns undefined
// so we actually have to call getContext() to verify
// github.com/Modernizr/Modernizr/issues/issue/97/
tests['canvas'] = function() {
var elem = document.createElement('canvas');
return !!(elem.getContext && elem.getContext('2d'));
};
tests['canvastext'] = function() {
return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
};
// webk.it/70117 is tracking a legit WebGL feature detect proposal
// We do a soft detect which may false positive in order to avoid
// an expensive context creation: bugzil.la/732441
tests['webgl'] = function() {
return !!window.WebGLRenderingContext;
};
/*
* The Modernizr.touch test only indicates if the browser supports
* touch events, which does not necessarily reflect a touchscreen
* device, as evidenced by tablets running Windows 7 or, alas,
* the Palm Pre / WebOS (touch) phones.
*
* Additionally, Chrome (desktop) used to lie about its support on this,
* but that has since been rectified: crbug.com/36415
*
* We also test for Firefox 4 Multitouch Support.
*
* For more info, see: modernizr.github.com/Modernizr/touch.html
*/
tests['touch'] = function() {
var bool;
if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
bool = true;
} else {
injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
bool = node.offsetTop === 9;
});
}
return bool;
};
// geolocation is often considered a trivial feature detect...
// Turns out, it's quite tricky to get right:
//
// Using !!navigator.geolocation does two things we don't want. It:
// 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
// 2. Disables page caching in WebKit: webk.it/43956
//
// Meanwhile, in Firefox < 8, an about:config setting could expose
// a false positive that would throw an exception: bugzil.la/688158
tests['geolocation'] = function() {
return 'geolocation' in navigator;
};
tests['postmessage'] = function() {
return !!window.postMessage;
};
// Chrome incognito mode used to throw an exception when using openDatabase
// It doesn't anymore.
tests['websqldatabase'] = function() {
return !!window.openDatabase;
};
// Vendors had inconsistent prefixing with the experimental Indexed DB:
// - Webkit's implementation is accessible through webkitIndexedDB
// - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
// For speed, we don't test the legacy (and beta-only) indexedDB
tests['indexedDB'] = function() {
return !!testPropsAll("indexedDB", window);
};
// documentMode logic from YUI to filter out IE8 Compat Mode
// which false positives.
tests['hashchange'] = function() {
return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
};
// Per 1.6:
// This used to be Modernizr.historymanagement but the longer
// name has been deprecated in favor of a shorter and property-matching one.
// The old API is still available in 1.6, but as of 2.0 will throw a warning,
// and in the first release thereafter disappear entirely.
tests['history'] = function() {
return !!(window.history && history.pushState);
};
tests['draganddrop'] = function() {
var div = document.createElement('div');
return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
};
// FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
// will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
// FF10 still uses prefixes, so check for it until then.
// for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
tests['websockets'] = function() {
return 'WebSocket' in window || 'MozWebSocket' in window;
};
// css-tricks.com/rgba-browser-support/
tests['rgba'] = function() {
// Set an rgba() color and check the returned value
setCss('background-color:rgba(150,255,150,.5)');
return contains(mStyle.backgroundColor, 'rgba');
};
tests['hsla'] = function() {
// Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
// except IE9 who retains it as hsla
setCss('background-color:hsla(120,40%,100%,.5)');
return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
};
tests['multiplebgs'] = function() {
// Setting multiple images AND a color on the background shorthand property
// and then querying the style.background property value for the number of
// occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
setCss('background:url(https://),url(https://),red url(https://)');
// If the UA supports multiple backgrounds, there should be three occurrences
// of the string "url(" in the return value for elemStyle.background
return (/(url\s*\(.*?){3}/).test(mStyle.background);
};
// this will false positive in Opera Mini
// github.com/Modernizr/Modernizr/issues/396
tests['backgroundsize'] = function() {
return testPropsAll('backgroundSize');
};
tests['borderimage'] = function() {
return testPropsAll('borderImage');
};
// Super comprehensive table about all the unique implementations of
// border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
tests['borderradius'] = function() {
return testPropsAll('borderRadius');
};
// WebOS unfortunately false positives on this test.
tests['boxshadow'] = function() {
return testPropsAll('boxShadow');
};
// FF3.0 will false positive on this test
tests['textshadow'] = function() {
return document.createElement('div').style.textShadow === '';
};
tests['opacity'] = function() {
// Browsers that actually have CSS Opacity implemented have done so
// according to spec, which means their return values are within the
// range of [0.0,1.0] - including the leading zero.
setCssAll('opacity:.55');
// The non-literal . in this regex is intentional:
// German Chrome returns this value as 0,55
// github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
return (/^0.55$/).test(mStyle.opacity);
};
// Note, Android < 4 will pass this test, but can only animate
// a single property at a time
// daneden.me/2011/12/putting-up-with-androids-bullshit/
tests['cssanimations'] = function() {
return testPropsAll('animationName');
};
tests['csscolumns'] = function() {
return testPropsAll('columnCount');
};
tests['cssgradients'] = function() {
/**
* For CSS Gradients syntax, please see:
* webkit.org/blog/175/introducing-css-gradients/
* developer.mozilla.org/en/CSS/-moz-linear-gradient
* developer.mozilla.org/en/CSS/-moz-radial-gradient
* dev.w3.org/csswg/css3-images/#gradients-
*/
var str1 = 'background-image:',
str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
str3 = 'linear-gradient(left top,#9f9, white);';
setCss(
// legacy webkit syntax (FIXME: remove when syntax not in use anymore)
(str1 + '-webkit- '.split(' ').join(str2 + str1) +
// standard syntax // trailing 'background-image:'
prefixes.join(str3 + str1)).slice(0, -str1.length)
);
return contains(mStyle.backgroundImage, 'gradient');
};
tests['cssreflections'] = function() {
return testPropsAll('boxReflect');
};
tests['csstransforms'] = function() {
return !!testPropsAll('transform');
};
tests['csstransforms3d'] = function() {
var ret = !!testPropsAll('perspective');
// Webkit's 3D transforms are passed off to the browser's own graphics renderer.
// It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
// some conditions. As a result, Webkit typically recognizes the syntax but
// will sometimes throw a false positive, thus we must do a more thorough check:
if ( ret && 'webkitPerspective' in docElement.style ) {
// Webkit allows this media query to succeed only if the feature is enabled.
// `@media (transform-3d),(-webkit-transform-3d){ ... }`
injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
ret = node.offsetLeft === 9 && node.offsetHeight === 3;
});
}
return ret;
};
tests['csstransitions'] = function() {
return testPropsAll('transition');
};
/*>>fontface*/
// @font-face detection routine by Diego Perini
// javascript.nwbox.com/CSSSupport/
// false positives:
// WebOS github.com/Modernizr/Modernizr/issues/342
// WP7 github.com/Modernizr/Modernizr/issues/538
tests['fontface'] = function() {
var bool;
injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
var style = document.getElementById('smodernizr'),
sheet = style.sheet || style.styleSheet,
cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
});
return bool;
};
/*>>fontface*/
// CSS generated content detection
tests['generatedcontent'] = function() {
var bool;
injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
bool = node.offsetHeight >= 3;
});
return bool;
};
// These tests evaluate support of the video/audio elements, as well as
// testing what types of content they support.
//
// We're using the Boolean constructor here, so that we can extend the value
// e.g. Modernizr.video // true
// Modernizr.video.ogg // 'probably'
//
// Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
// thx to NielsLeenheer and zcorpan
// Note: in some older browsers, "no" was a return value instead of empty string.
// It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
// It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
tests['video'] = function() {
var elem = document.createElement('video'),
bool = false;
// IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
try {
if ( bool = !!elem.canPlayType ) {
bool = new Boolean(bool);
bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
// Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
}
} catch(e) { }
return bool;
};
tests['audio'] = function() {
var elem = document.createElement('audio'),
bool = false;
try {
if ( bool = !!elem.canPlayType ) {
bool = new Boolean(bool);
bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
// Mimetypes accepted:
// developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
// bit.ly/iphoneoscodecs
bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
}
} catch(e) { }
return bool;
};
// In FF4, if disabled, window.localStorage should === null.
// Normally, we could not test that directly and need to do a
// `('localStorage' in window) && ` test first because otherwise Firefox will
// throw bugzil.la/365772 if cookies are disabled
// Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
// will throw the exception:
// QUOTA_EXCEEDED_ERRROR DOM Exception 22.
// Peculiarly, getItem and removeItem calls do not throw.
// Because we are forced to try/catch this, we'll go aggressive.
// Just FWIW: IE8 Compat mode supports these features completely:
// www.quirksmode.org/dom/html5.html
// But IE8 doesn't support either with local files
tests['localstorage'] = function() {
try {
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
};
tests['sessionstorage'] = function() {
try {
sessionStorage.setItem(mod, mod);
sessionStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
};
tests['webworkers'] = function() {
return !!window.Worker;
};
tests['applicationcache'] = function() {
return !!window.applicationCache;
};
// Thanks to Erik Dahlstrom
tests['svg'] = function() {
return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
};
// specifically for SVG inline in HTML, not within XHTML
// test page: paulirish.com/demo/inline-svg
tests['inlinesvg'] = function() {
var div = document.createElement('div');
div.innerHTML = '<svg/>';
return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
};
// SVG SMIL animation
tests['smil'] = function() {
return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
};
// This test is only for clip paths in SVG proper, not clip paths on HTML content
// demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
// However read the comments to dig into applying SVG clippaths to HTML content here:
// github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
tests['svgclippaths'] = function() {
return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
};
/*>>webforms*/
// input features and input types go directly onto the ret object, bypassing the tests loop.
// Hold this guy to execute in a moment.
function webforms() {
/*>>input*/
// Run through HTML5's new input attributes to see if the UA understands any.
// We're using f which is the <input> element created early on
// Mike Taylr has created a comprehensive resource for testing these attributes
// when applied to all input types:
// miketaylr.com/code/input-type-attr.html
// spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
// Only input placeholder is tested while textarea's placeholder is not.
// Currently Safari 4 and Opera 11 have support only for the input placeholder
// Both tests are available in feature-detects/forms-placeholder.js
Modernizr['input'] = (function( props ) {
for ( var i = 0, len = props.length; i < len; i++ ) {
attrs[ props[i] ] = !!(props[i] in inputElem);
}
if (attrs.list){
// safari false positive's on datalist: webk.it/74252
// see also github.com/Modernizr/Modernizr/issues/146
attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
}
return attrs;
})('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
/*>>input*/
/*>>inputtypes*/
// Run through HTML5's new input types to see if the UA understands any.
// This is put behind the tests runloop because it doesn't return a
// true/false like all the other tests; instead, it returns an object
// containing each input type with its corresponding true/false value
// Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
Modernizr['inputtypes'] = (function(props) {
for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
inputElem.setAttribute('type', inputElemType = props[i]);
bool = inputElem.type !== 'text';
// We first check to see if the type we give it sticks..
// If the type does, we feed it a textual value, which shouldn't be valid.
// If the value doesn't stick, we know there's input sanitization which infers a custom UI
if ( bool ) {
inputElem.value = smile;
inputElem.style.cssText = 'position:absolute;visibility:hidden;';
if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
docElement.appendChild(inputElem);
defaultView = document.defaultView;
// Safari 2-4 allows the smiley as a value, despite making a slider
bool = defaultView.getComputedStyle &&
defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
// Mobile android web browser has false positive, so must
// check the height to see if the widget is actually there.
(inputElem.offsetHeight !== 0);
docElement.removeChild(inputElem);
} else if ( /^(search|tel)$/.test(inputElemType) ){
// Spec doesn't define any special parsing or detectable UI
// behaviors so we pass these through as true
// Interestingly, opera fails the earlier test, so it doesn't
// even make it here.
} else if ( /^(url|email)$/.test(inputElemType) ) {
// Real url and email support comes with prebaked validation.
bool = inputElem.checkValidity && inputElem.checkValidity() === false;
} else {
// If the upgraded input compontent rejects the :) text, we got a winner
bool = inputElem.value != smile;
}
}
inputs[ props[i] ] = !!bool;
}
return inputs;
})('search tel url email datetime date month week time datetime-local number range color'.split(' '));
/*>>inputtypes*/
}
/*>>webforms*/
// End of test definitions
// -----------------------
// Run through all tests and detect their support in the current UA.
// todo: hypothetically we could be doing an array of tests and use a basic loop here.
for ( var feature in tests ) {
if ( hasOwnProp(tests, feature) ) {
// run the test, throw the return value into the Modernizr,
// then based on that boolean, define an appropriate className
// and push it into an array of classes we'll join later.
featureName = feature.toLowerCase();
Modernizr[featureName] = tests[feature]();
classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
}
}
/*>>webforms*/
// input tests need to run.
Modernizr.input || webforms();
/*>>webforms*/
/**
* addTest allows the user to define their own feature tests
* the result will be added onto the Modernizr object,
* as well as an appropriate className set on the html element
*
* @param feature - String naming the feature
* @param test - Function returning true if feature is supported, false if not
*/
Modernizr.addTest = function ( feature, test ) {
if ( typeof feature == 'object' ) {
for ( var key in feature ) {
if ( hasOwnProp( feature, key ) ) {
Modernizr.addTest( key, feature[ key ] );
}
}
} else {
feature = feature.toLowerCase();
if ( Modernizr[feature] !== undefined ) {
// we're going to quit if you're trying to overwrite an existing test
// if we were to allow it, we'd do this:
// var re = new RegExp("\\b(no-)?" + feature + "\\b");
// docElement.className = docElement.className.replace( re, '' );
// but, no rly, stuff 'em.
return Modernizr;
}
test = typeof test == 'function' ? test() : test;
if (typeof enableClasses !== "undefined" && enableClasses) {
docElement.className += ' ' + (test ? '' : 'no-') + feature;
}
Modernizr[feature] = test;
}
return Modernizr; // allow chaining.
};
// Reset modElem.cssText to nothing to reduce memory footprint.
setCss('');
modElem = inputElem = null;
/*>>shiv*/
/**
* @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
;(function(window, document) {
/*jshint evil:true */
/** version */
var version = '3.7.0';
/** Preset options */
var options = window.html5 || {};
/** Used to skip problem elements */
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
/** Not all elements can be cloned in IE **/
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
/** Detect whether the browser supports default html5 styles */
var supportsHtml5Styles;
/** Name of the expando, to work with multiple documents or to re-shiv one document */
var expando = '_html5shiv';
/** The id for the the documents expando */
var expanID = 0;
/** Cached data for each document */
var expandoData = {};
/** Detect whether the browser supports unknown elements */
var supportsUnknownElements;
(function() {
try {
var a = document.createElement('a');
a.innerHTML = '<xyz></xyz>';
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
supportsHtml5Styles = ('hidden' in a);
supportsUnknownElements = a.childNodes.length == 1 || (function() {
// assign a false positive if unable to shiv
(document.createElement)('a');
var frag = document.createDocumentFragment();
return (
typeof frag.cloneNode == 'undefined' ||
typeof frag.createDocumentFragment == 'undefined' ||
typeof frag.createElement == 'undefined'
);
}());
} catch(e) {
// assign a false positive if detection fails => unable to shiv
supportsHtml5Styles = true;
supportsUnknownElements = true;
}
}());
/*--------------------------------------------------------------------------*/
/**
* Creates a style sheet with the given CSS text and adds it to the document.
* @private
* @param {Document} ownerDocument The document.
* @param {String} cssText The CSS text.
* @returns {StyleSheet} The style element.
*/
function addStyleSheet(ownerDocument, cssText) {
var p = ownerDocument.createElement('p'),
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
p.innerHTML = 'x<style>' + cssText + '</style>';
return parent.insertBefore(p.lastChild, parent.firstChild);
}
/**
* Returns the value of `html5.elements` as an array.
* @private
* @returns {Array} An array of shived element node names.
*/
function getElements() {
var elements = html5.elements;
return typeof elements == 'string' ? elements.split(' ') : elements;
}
/**
* Returns the data associated to the given document
* @private
* @param {Document} ownerDocument The document.
* @returns {Object} An object of data.
*/
function getExpandoData(ownerDocument) {
var data = expandoData[ownerDocument[expando]];
if (!data) {
data = {};
expanID++;
ownerDocument[expando] = expanID;
expandoData[expanID] = data;
}
return data;
}
/**
* returns a shived element for the given nodeName and document
* @memberOf html5
* @param {String} nodeName name of the element
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived element.
*/
function createElement(nodeName, ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createElement(nodeName);
}
if (!data) {
data = getExpandoData(ownerDocument);
}
var node;
if (data.cache[nodeName]) {
node = data.cache[nodeName].cloneNode();
} else if (saveClones.test(nodeName)) {
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
} else {
node = data.createElem(nodeName);
}
// Avoid adding some elements to fragments in IE < 9 because
// * Attributes like `name` or `type` cannot be set/changed once an element
// is inserted into a document/fragment
// * Link elements with `src` attributes that are inaccessible, as with
// a 403 response, will cause the tab/window to crash
// * Script elements appended to fragments will execute when their `src`
// or `text` property is set
return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
}
/**
* returns a shived DocumentFragment for the given document
* @memberOf html5
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived DocumentFragment.
*/
function createDocumentFragment(ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createDocumentFragment();
}
data = data || getExpandoData(ownerDocument);
var clone = data.frag.cloneNode(),
i = 0,
elems = getElements(),
l = elems.length;
for(;i<l;i++){
clone.createElement(elems[i]);
}
return clone;
}
/**
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
* @private
* @param {Document|DocumentFragment} ownerDocument The document.
* @param {Object} data of the document.
*/
function shivMethods(ownerDocument, data) {
if (!data.cache) {
data.cache = {};
data.createElem = ownerDocument.createElement;
data.createFrag = ownerDocument.createDocumentFragment;
data.frag = data.createFrag();
}
ownerDocument.createElement = function(nodeName) {
//abort shiv
if (!html5.shivMethods) {
return data.createElem(nodeName);
}
return createElement(nodeName, ownerDocument, data);
};
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
'var n=f.cloneNode(),c=n.createElement;' +
'h.shivMethods&&(' +
// unroll the `createElement` calls
getElements().join().replace(/[\w\-]+/g, function(nodeName) {
data.createElem(nodeName);
data.frag.createElement(nodeName);
return 'c("' + nodeName + '")';
}) +
');return n}'
)(html5, data.frag);
}
/*--------------------------------------------------------------------------*/
/**
* Shivs the given document.
* @memberOf html5
* @param {Document} ownerDocument The document to shiv.
* @returns {Document} The shived document.
*/
function shivDocument(ownerDocument) {
if (!ownerDocument) {
ownerDocument = document;
}
var data = getExpandoData(ownerDocument);
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
data.hasCSS = !!addStyleSheet(ownerDocument,
// corrects block display not defined in IE6/7/8/9
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
// adds styling not present in IE6/7/8/9
'mark{background:#FF0;color:#000}' +
// hides non-rendered elements
'template{display:none}'
);
}
if (!supportsUnknownElements) {
shivMethods(ownerDocument, data);
}
return ownerDocument;
}
/*--------------------------------------------------------------------------*/
/**
* The `html5` object is exposed so that more elements can be shived and
* existing shiving can be detected on iframes.
* @type Object
* @example
*
* // options can be changed before the script is included
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
*/
var html5 = {
/**
* An array or space separated string of node names of the elements to shiv.
* @memberOf html5
* @type Array|String
*/
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
/**
* current version of html5shiv
*/
'version': version,
/**
* A flag to indicate that the HTML5 style sheet should be inserted.
* @memberOf html5
* @type Boolean
*/
'shivCSS': (options.shivCSS !== false),
/**
* Is equal to true if a browser supports creating unknown/HTML5 elements
* @memberOf html5
* @type boolean
*/
'supportsUnknownElements': supportsUnknownElements,
/**
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
* methods should be overwritten.
* @memberOf html5
* @type Boolean
*/
'shivMethods': (options.shivMethods !== false),
/**
* A string to describe the type of `html5` object ("default" or "default print").
* @memberOf html5
* @type String
*/
'type': 'default',
// shivs the document according to the specified `html5` object options
'shivDocument': shivDocument,
//creates a shived element
createElement: createElement,
//creates a shived documentFragment
createDocumentFragment: createDocumentFragment
};
/*--------------------------------------------------------------------------*/
// expose html5
window.html5 = html5;
// shiv the document
shivDocument(document);
}(this, document));
/*>>shiv*/
// Assign private properties to the return object with prefix
Modernizr._version = version;
// expose these for the plugin API. Look in the source for how to join() them against your input
/*>>prefixes*/
Modernizr._prefixes = prefixes;
/*>>prefixes*/
/*>>domprefixes*/
Modernizr._domPrefixes = domPrefixes;
Modernizr._cssomPrefixes = cssomPrefixes;
/*>>domprefixes*/
/*>>mq*/
// Modernizr.mq tests a given media query, live against the current state of the window
// A few important notes:
// * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
// * A max-width or orientation query will be evaluated against the current state, which may change later.
// * You must specify values. Eg. If you are testing support for the min-width media query use:
// Modernizr.mq('(min-width:0)')
// usage:
// Modernizr.mq('only screen and (max-width:768)')
Modernizr.mq = testMediaQuery;
/*>>mq*/
/*>>hasevent*/
// Modernizr.hasEvent() detects support for a given event, with an optional element to test on
// Modernizr.hasEvent('gesturestart', elem)
Modernizr.hasEvent = isEventSupported;
/*>>hasevent*/
/*>>testprop*/
// Modernizr.testProp() investigates whether a given style property is recognized
// Note that the property names must be provided in the camelCase variant.
// Modernizr.testProp('pointerEvents')
Modernizr.testProp = function(prop){
return testProps([prop]);
};
/*>>testprop*/
/*>>testallprops*/
// Modernizr.testAllProps() investigates whether a given style property,
// or any of its vendor-prefixed variants, is recognized
// Note that the property names must be provided in the camelCase variant.
// Modernizr.testAllProps('boxSizing')
Modernizr.testAllProps = testPropsAll;
/*>>testallprops*/
/*>>teststyles*/
// Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
// Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
Modernizr.testStyles = injectElementWithStyles;
/*>>teststyles*/
/*>>prefixed*/
// Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
// Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
// Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
// Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
//
// str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
// If you're trying to ascertain which transition end event to bind to, you might do something like...
//
// var transEndEventNames = {
// 'WebkitTransition' : 'webkitTransitionEnd',
// 'MozTransition' : 'transitionend',
// 'OTransition' : 'oTransitionEnd',
// 'msTransition' : 'MSTransitionEnd',
// 'transition' : 'transitionend'
// },
// transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
Modernizr.prefixed = function(prop, obj, elem){
if(!obj) {
return testPropsAll(prop, 'pfx');
} else {
// Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
return testPropsAll(prop, obj, elem);
}
};
/*>>prefixed*/
/*>>cssclasses*/
// Remove "no-js" class from <html> element, if it exists:
docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
// Add the new classes to the <html> element.
(enableClasses ? ' js ' + classes.join(' ') : '');
/*>>cssclasses*/
return Modernizr;
})(this, this.document);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#contact"; </script>
</head>
<body>
</body>
</html>
<li>
<a href=@@src target=@@target >@@title</a>
</li>
\ No newline at end of file
<li>
<a href=@@src_job target=@@target >@@title</a>
</li>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#news"; </script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>location.href = "./index.html#recruit"; </script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
<script>
/**
* wap 跳转app引流按钮
*
* http://jira.csdn.net/browse/FED-315
*/
;(function(window){
// 多onload 事件方法
window.addLoadEvent = window.addLoadEvent ? window.addLoadEvent : function addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload != 'function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
};
}
};
/**
* 获取第一个子元素
*/
var getChildNodes = function(ele){
var childArr = ele.children || ele.childNodes,
childArrTem = new Array(); // 临时数组,用来存储符合条件的节点
for(var i=0,len=childArr.length;i<len;i++){
if(childArr[i].nodeType==1){
childArrTem.push(childArr[i]);
}
}
return childArrTem;
};
/**
* 加载css
*/
function setStyle(poi){
var css = document.createElement('style');
css.type = 'text/css';
css.innerHTML = ( [
'.wapappdownloadbox{width:100%;height:60px;background: #3F3F3F;position:'+poi+';top: 0;z-index: 999;}',
'.wapapp_download_box{padding:10px 4px 10px 16px;width: 82%;float: left;}',
'.wapapp_download_box img{width:40px;float: left;margin-right: 8px;}',
'.wapapp_download_text{float:left;width: 50%;}',
'.wapapp_download_text h4{font-size: 16px;color: #FFFFFF;line-height: 20px;}',
'.wapapp_download_text b{font-size: 12px;color: #999999;line-height: 20px;font-weight: 400;}',
'.wapappdownloadbox .download_button{float:right;background: #F33B45;border-radius: 4px;font-size: 12px;color: #FFFFFF;line-height: 16px;padding:6px 12px;margin-top:6px;}',
'.wapappdownloadbox_close_button{width: 17%;height: 60px;float: right;padding: 18px 19px;text-align: center;}',
'.wapappdownloadbox_close_button svg{width: 15px;fill: #999;}',
]).join('');
document.getElementsByTagName('head')[0].appendChild(css);
}
/**
* class
*/
function OpenWithApp(){
}
OpenWithApp.prototype.init = function(obj){
// console.log(obj);
obj = obj ? obj : {};
/**
* moveDOM 是为了fixed 到顶部的header等准备的,有此参数则需把此 节点 定位向下挪动
*/
this.moveDOM = obj.moveDOM;
setStyle(obj.position);
var buttonBox = document.createElement('div'),
parentElement = document.getElementsByTagName('body')[0],
referenceElement = getChildNodes(parentElement)[0];
buttonBox.setAttribute("class", "wapappdownloadbox");
this.parentElementstartPposition = getStyle(parentElement,'paddingTop');
buttonBox.innerHTML = getTemplate();
if(obj.position === 'fixed'){
this.moveDOMstartPposition = getStyle(this.moveDOM,top);
this.moveDOM ? this.moveDOM.setAttribute('style','top:60px'): '';
parentElement.setAttribute('style','padding-top:60px');
}
// 插入结构
parentElement.insertBefore(buttonBox, referenceElement);
this.buttonBox = buttonBox;
this.parentElement = parentElement;
var that = this;
bindclick(that);
};
OpenWithApp.prototype.open = function(url){
window.location.href = "csdnapp://web?url=https://blog.csdn.net/rx3oyuyi/app/article/details/86700683";
setTimeout(function() {
window.location.href = "https://gw.csdn.net/cms-app/v1/set/download_app/?utm_source=wap";
}, 1500);
}
function getTemplate(){
return '<div class="wapapp_download_box" data-track-view=\'{"mod":"popu_726","con":",'+ window.location.href+',"}\' data-track-click=\'{"mod":"popu_726","con":",'+ window.location.href+',"}\'>'+
'<img src="//g.csdnimg.cn/open-with-app/images/appIcon.png">'+
'<div class="wapapp_download_text">'+
'<h4>CSDN官方APP</h4>'+
'<b>中国专业的IT社区</b>'+
'</div>'+
'<a class="download_button" href="javascript:void(0);">立即下载</a>'+
'</div>'+
'<div class="wapappdownloadbox_close_button"><svg version="1.1" viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" ><path d="M100,85.6l57.5-57.5c4-4,10.4-4,14.4,0c4,4,4,10.4,0,14.4L114.4,100l57.5,57.5c3.9,4.1,3.7,10.5-0.4,14.4 c-3.9,3.7-10.1,3.7-14,0L100,114.4l-57.5,57.5c-4,4-10.4,4-14.4,0s-4-10.4,0-14.4L85.6,100L28.1,42.5c-4-4-4-10.4,0-14.4 s10.4-4,14.4,0L100,85.6z"/></svg></div>';
}
function bindclick(that){
/**
* 跳转
*/
document.getElementsByClassName('wapapp_download_box')[0].addEventListener('click',function () {
var url = "csdnapp://web?url=https://blog.csdn.net/jiangwei0910410003";
csdn.openWithApp.open(url)
});
/**
* 关闭按钮
*/
document.getElementsByClassName('wapappdownloadbox_close_button')[0].addEventListener('click',function () {
that.buttonBox.setAttribute("style", "display:none");
that.moveDOM ? that.moveDOM.setAttribute('style','top:' + that.moveDOMstartPposition ) : '';
that.parentElement.setAttribute('style','padding-top:'+ that.parentElementstartPposition );
});
}
/**
* 获取需要的dom样式
*/
function getStyle(ele,css){
return window.getComputedStyle(ele).css;
}
csdn = window.csdn?window.csdn:{}
csdn.openWithApp = new OpenWithApp();
// OpenWithApp.init(window.csdn.wapjumpapp);
})(window);
</script>
<script type="text/javascript">
window.onload = function(){
window.csdn.openWithAppData = {};
window.csdn.openWithAppData.moveDOM = document.body;
window.csdn.openWithAppData.position = 'fixed';
window.csdn.openWithApp.init(window.csdn.openWithAppData);
}
</script>
</html>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册