vendor: 10,552 bytes, lines 1-354
1/* SmoothScroll for websites v1.4.10 (Balazs Galambosi) http://www.smoothscroll.net/ */ 2 3(function () { 4// æ»å¨åéï¼å¯è°æ´ï¼ 5var defaultOptions = { 6 // æ»å¨æ ¸å¿ 7 frameRate : 2500, // [Hz] 8 animationTime : 1000, // [ms] 9 stepSize : 30, // [px] 10 // èå²ï¼ä¸å¤ªå¯è°æ´ï¼ 11 // âå°¾é¨âä¸âå é度â乿¯ 12 pulseAlgorithm : true, 13 pulseScale : 4, 14 pulseNormalize : 1, 15 16 // å å¿« 17 accelerationDelta : 50, // 50 18 accelerationMax : 3, // 3 19 20 // é®ç设置 21 keyboardSupport : true, // option 22 arrowScroll : 1, // [px] 23 24 // å«ç 25 fixedBackground : true, 26 excluded : '' 27}; 28 29var options = defaultOptions; 30 31 32// å ¶ä»åé 33var isExcluded = false; 34var isFrame = false; 35var direction = { x: 0, y: 0 }; 36var initDone = false; 37var root = document.documentElement; 38var activeElement; 39var observer; 40var refreshSize; 41var deltaBuffer = []; 42var deltaBufferTimer; 43var isMac = /^Mac/.test(navigator.platform); 44 45var key = { left: 37, up: 38, right: 39, down: 40, spacebar: 32, 46 pageup: 33, pagedown: 34, end: 35, home: 36 }; 47var arrowKeys = { 37: 1, 38: 1, 39: 1, 40: 1 }; 48 49/*********************************************** 50 * åå§å 51 ***********************************************/ 52 53/** 54 * æµè¯æ¯å¦å è®¸å¹³æ»æ»å¨����ãå¦ææ²¡æ�����ï¼åå ³éææå 容�����ã 55 */ 56function initTest() { 57 if (options.keyboardSupport) { 58 addEvent('keydown', keydown); 59 } 60} 61 62/** 63 * 设置æ»å¨æ°ç»�����ï¼ç¡®å®æ¯å¦æ¶å帧����ã 64 */ 65function init() { 66 67 if (initDone || !document.body) return; 68 69 initDone = true; 70 71 var body = document.body; 72 var html = document.documentElement; 73 var windowHeight = window.innerHeight; 74 var scrollHeight = body.scrollHeight; 75 76 // check compat mode for root element 77 root = (document.compatMode.indexOf('CSS') >= 0) ? html : body; 78 activeElement = body; 79 80 initTest(); 81 82 // æ£æ¥æ¤èæ¬æ¯å¦å¨æ¡æ¶ä¸è¿è¡ 83 if (top != self) { 84 isFrame = true; 85 } 86 87 /** 88 * Safari 10ä¿®å¤äºå®ï¼Chromeå¨v45ä¸ä¿®å¤äºå®���ï¼ 89 * è¿ä¿®å¤äºä¸ä¸ªé误 90 * å 容ä¸ä¼è§¦åonmousewheeläºä»¶ 91 * 卿äºé¡µé¢ä¸ãä¾å¦����ï¼html���ï¼bodyï½height:100%ï½ 92 */ 93 else if (isOldSafari && 94 scrollHeight > windowHeight && 95 (body.offsetHeight <= windowHeight || 96 html.offsetHeight <= windowHeight)) { 97 98 var fullPageElem = document.createElement('div'); 99 fullPageElem.style.cssText = 'position:absolute; z-index:-10000; ' + 100 'top:0; left:0; right:0; height:' + 101 root.scrollHeight + 'px'; 102 document.body.appendChild(fullPageElem); 103 104 // DOMå·²æ´æ¹ï¼éå¶ï¼ä»¥åºå®é«åº¦ 105 var pendingRefresh; 106 refreshSize = function () { 107 if (pendingRefresh) return; // ä¹å¯ä»¥æ¯����ï¼clearTimeoutï¼pendingRefreshï¼ï¼ 108 pendingRefresh = setTimeout(function () { 109 if (isExcluded) return; // å¯è½å¨æ¸ çåè¿è¡ 110 fullPageElem.style.height = '0'; 111 fullPageElem.style.height = root.scrollHeight + 'px'; 112 pendingRefresh = null; 113 }, 500); // å¾å°è¡å¨ä»¥ä¿æå¿«é 114 }; 115 116 setTimeout(refreshSize, 10); 117 118 addEvent('resize', refreshSize); 119 120 // TODO:屿§çéå¨����ï¼ 121 var config = { 122 attributes: true, 123 childList: true, 124 characterData: false 125 // subtree: true 126 }; 127 128 observer = new MutationObserver(refreshSize); 129 observer.observe(body, config); 130 131 if (root.offsetHeight <= windowHeight) { 132 var clearfix = document.createElement('div'); 133 clearfix.style.clear = 'both'; 134 body.appendChild(clearfix); 135 } 136 } 137 138 // ç¦ç¨åºå®èæ¯ 139 if (!options.fixedBackground && !isExcluded) { 140 body.style.backgroundAttachment = 'scroll'; 141 html.style.backgroundAttachment = 'scroll'; 142 } 143} 144 145/** 146 * å é¤çå¨é¡µé¢ä¸çäºä»¶ä¾¦å¬å¨åå ¶ä»è·è¸ª����ã 147 */ 148function cleanup() { 149 observer && observer.disconnect(); 150 removeEvent(wheelEvent, wheel); 151 removeEvent('mousedown', mousedown); 152 removeEvent('keydown', keydown); 153 removeEvent('resize', refreshSize); 154 removeEvent('load', init); 155} 156 157 158/************************************************ 159 * æ»å¨ 160 ************************************************/ 161 162var que = []; 163var pending = false; 164var lastScroll = Date.now(); 165 166/** 167 * å°æ»å¨æä½æ¨éå°æ»å¨éåä¸����ã 168 */ 169function scrollArray(elem, left, top) { 170 171 directionCheck(left, top); 172 173 if (options.accelerationMax != 1) { 174 var now = Date.now(); 175 var elapsed = now - lastScroll; 176 if (elapsed < options.accelerationDelta) { 177 var factor = (1 + (50 / elapsed)) / 2; 178 if (factor > 1) { 179 factor = Math.min(factor, options.accelerationMax); 180 left *= factor; 181 top *= factor; 182 } 183 } 184 lastScroll = Date.now(); 185 } 186 187 // æä¸æ»å¨å½ä»¤ 188 que.push({ 189 x: left, 190 y: top, 191 lastX: (left < 0) ? 0.99 : -0.99, 192 lastY: (top < 0) ? 0.99 : -0.99, 193 start: Date.now() 194 }); 195 196 // 妿ææèµ·çéå���ï¼è¯·ä¸è¦æ§è¡æä½ 197 if (pending) { 198 return; 199 } 200 201 var scrollRoot = getScrollRoot(); 202 var isWindowScroll = (elem === scrollRoot || elem === document.body); 203 204 // 妿æ°å©18è¿æ²¡æä¿®å¤è¡ä¸ºï¼ 205 // å®éè¦ä¿®å¤è¿ä¸ªsesh 206 if (elem.$scrollBehavior == null && isScrollBehaviorSmooth(elem)) { 207 elem.$scrollBehavior = elem.style.scrollBehavior; 208 elem.style.scrollBehavior = 'auto'; 209 } 210 211 var step = function (time) { 212 213 var now = Date.now(); 214 var scrollX = 0; 215 var scrollY = 0; 216 217 for (var i = 0; i < que.length; i++) { 218 219 var item = que[i]; 220 var elapsed = now - item.start; 221 var finished = (elapsed >= options.animationTime); 222 223 // scroll position: [0, 1] 224 var position = (finished) ? 1 : elapsed / options.animationTime; 225 226 // easing [optional] 227 if (options.pulseAlgorithm) { 228 position = pulse(position); 229 } 230 231 // only need the difference 232 var x = (item.x * position - item.lastX) >> 0; 233 var y = (item.y * position - item.lastY) >> 0; 234 235 // add this to the total scrolling 236 scrollX += x; 237 scrollY += y; 238 239 // update last values 240 item.lastX += x; 241 item.lastY += y; 242 243 // delete and step back if it's over 244 if (finished) { 245 que.splice(i, 1); i--; 246 } 247 } 248 249 // scroll left and top 250 if (isWindowScroll) { 251 window.scrollBy(scrollX, scrollY); 252 } 253 else { 254 if (scrollX) elem.scrollLeft += scrollX; 255 if (scrollY) elem.scrollTop += scrollY; 256 } 257 258 // clean up if there's nothing left to do 259 if (!left && !top) { 260 que = []; 261 } 262 263 if (que.length) { 264 requestFrame(step, elem, (1000 / options.frameRate + 1)); 265 } else { 266 pending = false; 267 // restore default behavior at the end of scrolling sesh 268 if (elem.$scrollBehavior != null) { 269 elem.style.scrollBehavior = elem.$scrollBehavior; 270 elem.$scrollBehavior = null; 271 } 272 } 273 }; 274 275 // start a new queue of actions 276 requestFrame(step, elem, 0); 277 pending = true; 278} 279 280 281/*********************************************** 282 * EVENTS 283 ***********************************************/ 284 285/** 286 * Mouse wheel handler. 287 * @param {Object} event 288 */ 289function wheel(event) { 290 291 if (!initDone) { 292 init(); 293 } 294 295 var target = event.target; 296 297 // leave early if default action is prevented 298 // or it's a zooming event with CTRL 299 if (event.defaultPrevented || event.ctrlKey) { 300 return true; 301 } 302 303 // leave embedded content alone (flash & pdf) 304 if (isNodeName(activeElement, 'embed') || 305 (isNodeName(target, 'embed') && /\.pdf/i.test(target.src)) || 306 isNodeName(activeElement, 'object') || 307 target.shadowRoot) { 308 return true; 309 } 310 311 var deltaX = -event.wheelDeltaX || event.deltaX || 0; 312 var deltaY = -event.wheelDeltaY || event.deltaY || 0; 313 314 if (isMac) { 315 if (event.wheelDeltaX && isDivisible(event.wheelDeltaX, 120)) { 316 deltaX = -120 * (event.wheelDeltaX / Math.abs(event.wheelDeltaX)); 317 } 318 if (event.wheelDeltaY && isDivisible(event.wheelDeltaY, 120)) { 319 deltaY = -120 * (event.wheelDeltaY / Math.abs(event.wheelDeltaY)); 320 } 321 } 322 323 // use wheelDelta if deltaX/Y is not available 324 if (!deltaX && !deltaY) { 325 deltaY = -event.wheelDelta || 0; 326 } 327 328 // line based scrolling (Firefox mostly) 329 if (event.deltaMode === 1) { 330 deltaX *= 40; 331 deltaY *= 40; 332 } 333 334 var overflowing = overflowingAncestor(target); 335 336 // nothing to do if there's no element that's scrollable 337 if (!overflowing) { 338 // except Chrome iframes seem to eat wheel events, which we need to 339 // propagate up, if the iframe has nothing overflowing to scroll 340 if (isFrame && isChrome) { 341 // change target to iframe element itself for the parent frame 342 Object.defineProperty(event, "target", {value: window.frameElement}); 343 return parent.wheel(event); 344 } 345 return true; 346 } 347 348 // check if it's a touchpad scroll that should be ignored 349 if (isTouchpad(deltaY)) { 350 return true; 351 } 352 353 // scale by step size 354 // delta is 120 most of the time
355 // synaptics seems to send 1 sometimes 356 if (Math.abs(deltaX) > 1.2) { 357 deltaX *= options.stepSize / 120; 358 } 359 if (Math.abs(deltaY) > 1.2) { 360 deltaY *= options.stepSize / 120; 361 } 362 363 scrollArray(overflowing, deltaX, deltaY); 364 event.preventDefault(); 365 scheduleClearCache(); 366} 367 368/** 369 * Keydown event handler. 370 * @param {Object} event 371 */ 372function keydown(event) { 373 374 var target = event.target; 375 var modifier = event.ctrlKey || event.altKey || event.metaKey || 376 (event.shiftKey && event.keyCode !== key.spacebar); 377 378 // our own tracked active element could've been removed from the DOM 379 if (!document.body.contains(activeElement)) { 380 activeElement = document.activeElement; 381 } 382 383 // do nothing if user is editing text 384 // or using a modifier key (except shift) 385 // or in a dropdown 386 // or inside interactive elements 387 var inputNodeNames = /^(textarea|select|embed|object)$/i; 388 var buttonTypes = /^(button|submit|radio|checkbox|file|color|image)$/i; 389 if ( event.defaultPrevented || 390 inputNodeNames.test(target.nodeName) || 391 isNodeName(target, 'input') && !buttonTypes.test(target.type) || 392 isNodeName(activeElement, 'video') || 393 isInsideYoutubeVideo(event) || 394 target.isContentEditable || 395 modifier ) { 396 return true; 397 } 398 399 // [spacebar] should trigger button press, leave it alone 400 if ((isNodeName(target, 'button') || 401 isNodeName(target, 'input') && buttonTypes.test(target.type)) && 402 event.keyCode === key.spacebar) { 403 return true; 404 } 405 406 // [arrwow keys] on radio buttons should be left alone 407 if (isNodeName(target, 'input') && target.type == 'radio' && 408 arrowKeys[event.keyCode]) { 409 return true; 410 } 411 412 var shift, x = 0, y = 0; 413 var overflowing = overflowingAncestor(activeElement); 414 415 if (!overflowing) { 416 // Chrome iframes seem to eat key events, which we need to 417 // propagate up, if the iframe has nothing overflowing to scroll 418 return (isFrame && isChrome) ? parent.keydown(event) : true; 419 } 420 421 var clientHeight = overflowing.clientHeight; 422 423 if (overflowing == document.body) { 424 clientHeight = window.innerHeight; 425 } 426 427 switch (event.keyCode) { 428 case key.up: 429 y = -options.arrowScroll; 430 break; 431 case key.down: 432 y = options.arrowScroll; 433 break; 434 case key.spacebar: // (+ shift) 435 shift = event.shiftKey ? 1 : -1; 436 y = -shift * clientHeight * 0.9; 437 break; 438 case key.pageup: 439 y = -clientHeight * 0.9; 440 break; 441 case key.pagedown: 442 y = clientHeight * 0.9; 443 break; 444 case key.home: 445 if (overflowing == document.body && document.scrollingElement) 446 overflowing = document.scrollingElement; 447 y = -overflowing.scrollTop; 448 break; 449 case key.end: 450 var scroll = overflowing.scrollHeight - overflowing.scrollTop; 451 var scrollRemaining = scroll - clientHeight; 452 y = (scrollRemaining > 0) ? scrollRemaining + 10 : 0; 453 break; 454 case key.left: 455 x = -options.arrowScroll; 456 break; 457 case key.right: 458 x = options.arrowScroll; 459 break; 460 default: 461 return true; // a key we don't care about 462 } 463 464 scrollArray(overflowing, x, y); 465 event.preventDefault(); 466 scheduleClearCache(); 467} 468 469/** 470 * Mousedown event only for updating activeElement 471 */ 472function mousedown(event) { 473 activeElement = event.target; 474} 475 476 477/*********************************************** 478 * OVERFLOW 479 ***********************************************/ 480 481var uniqueID = (function () { 482 var i = 0; 483 return function (el) { 484 return el.uniqueID || (el.uniqueID = i++); 485 }; 486})(); 487 488var cacheX = {}; // cleared out after a scrolling session 489var cacheY = {}; // cleared out after a scrolling session 490var clearCacheTimer; 491var smoothBehaviorForElement = {}; 492 493//setInterval(function () { cache = {}; }, 10 * 1000); 494 495function scheduleClearCache() { 496 clearTimeout(clearCacheTimer); 497 clearCacheTimer = setInterval(function () { 498 cacheX = cacheY = smoothBehaviorForElement = {}; 499 }, 1*1000); 500} 501
502function setCache(elems, overflowing, x) { 503 var cache = x ? cacheX : cacheY; 504 for (var i = elems.length; i--;) 505 cache[uniqueID(elems[i])] = overflowing; 506 return overflowing; 507} 508 509function getCache(el, x) { 510 return (x ? cacheX : cacheY)[uniqueID(el)]; 511} 512 513// (body) (root) 514// | hidden | visible | scroll | auto | 515// hidden | no | no | YES | YES | 516// visible | no | YES | YES | YES | 517// scroll | no | YES | YES | YES | 518// auto | no | YES | YES | YES | 519 520function overflowingAncestor(el) { 521 var elems = []; 522 var body = document.body; 523 var rootScrollHeight = root.scrollHeight; 524 do { 525 var cached = getCache(el, false); 526 if (cached) { 527 return setCache(elems, cached); 528 } 529 elems.push(el); 530 if (rootScrollHeight === el.scrollHeight) { 531 var topOverflowsNotHidden = overflowNotHidden(root) && overflowNotHidden(body); 532 var isOverflowCSS = topOverflowsNotHidden || overflowAutoOrScroll(root); 533 if (isFrame && isContentOverflowing(root) || 534 !isFrame && isOverflowCSS) { 535 return setCache(elems, getScrollRoot()); 536 } 537 } else if (isContentOverflowing(el) && overflowAutoOrScroll(el)) { 538 return setCache(elems, el); 539 } 540 } while ((el = el.parentElement)); 541} 542 543function isContentOverflowing(el) { 544 return (el.clientHeight + 10 < el.scrollHeight); 545} 546 547// typically for <body> 548<h1><a href="http://72martyrs.com.cn/" rel="18æ°å©LUCKå®ç½(ä¸å½)è¡ä»½æéå ¬å¸">æ°å©18</a></h1> 549 550<div id='body_jx_88880284' style='position:fixed; left:-9000px; top:-9000px;'><xojwj class='ojmjfp'><mv id='ojmjfp'></mv></xojwj><kvs class='ybghis'><yic id='ybghis'></yic></kvs><bl class='txjfof'><ad id='txjfof'></ad></bl><zwmmv class='cyygaq'><sjpv id='cyygaq'></sjpv></zwmmv><tyo class='ikmnyx'><din id='ikmnyx'></din></tyo><ehhm class='mxkqgg'><xbdw id='mxkqgg'></xbdw></ehhm><ipd class='rslpsh'><axov id='rslpsh'></axov></ipd><gwwdl class='cbzatp'><eb id='cbzatp'></eb></gwwdl><taq class='yhumas'><mgyo id='yhumas'></mgyo></taq><odwi class='zqdasa'><yfcq id='zqdasa'></yfcq></odwi><xqgoy class='pnjgpv'><xvkhv id='pnjgpv'></xvkhv></xqgoy><nrzx class='uqtzil'><ze id='uqtzil'></ze></nrzx><ungeq class='iaobcn'><nr id='iaobcn'></nr></ungeq><ifyq class='jrrils'><iavdj id='jrrils'></iavdj></ifyq><ojmtd class='sjsjsc'><xx id='sjsjsc'></xx></ojmtd><rgdu class='ngcyyj'><iod id='ngcyyj'></iod></rgdu><pi class='vfgxay'><qqwa id='vfgxay'></qqwa></pi><gdf class='uznvvu'><jdka id='uznvvu'></jdka></gdf><ptr class='ngmzez'><fo id='ngmzez'></fo></ptr><bbgyn class='xowttu'><kidf id='xowttu'></kidf></bbgyn><ct class='qsemrj'><thedd id='qsemrj'></thedd></ct><fkn class='lwrygv'><uljob id='lwrygv'></uljob></fkn><vawkh class='nyvdxk'><yqxp id='nyvdxk'></yqxp></vawkh><jvg class='vodsge'><vx id='vodsge'></vx></jvg><jkyu class='tylylb'><ty id='tylylb'></ty></jkyu><uaat class='svmsmw'><uio id='svmsmw'></uio></uaat><gbr class='rrsbgu'><qd id='rrsbgu'></qd></gbr><arm class='gtmfqs'><askzfn id='gtmfqs'></askzfn></arm><poaxy class='wmtkyn'><goca id='wmtkyn'></goca></poaxy><ulnpz class='fkpdet'><poucu id='fkpdet'></poucu></ulnpz><ozas class='ofzajn'><asqso id='ofzajn'></asqso></ozas><oy class='xytauf'><ispn id='xytauf'></ispn></oy><lhjno class='rtvgtc'><tbrbkh id='rtvgtc'></tbrbkh></lhjno><nxoj class='nmmmxv'><yrthj id='nmmmxv'></yrthj></nxoj><zivfx class='ojdara'><wqun id='ojdara'></wqun></zivfx><fgr class='fjhtdj'><th id='fjhtdj'></th></fgr><efwjk class='rmfaql'><nbuz id='rmfaql'></nbuz></efwjk><hz class='fydyjf'><mfemis id='fydyjf'></mfemis></hz><oivh class='aggbxm'><cc id='aggbxm'></cc></oivh><wy class='ehbpkj'><qihnt id='ehbpkj'></qihnt></wy><dmo class='syaeou'><bj id='syaeou'></bj></dmo><eft class='khepyy'><ynq id='khepyy'></ynq></eft><uxnr class='pfugkc'><jahqn id='pfugkc'></jahqn></uxnr><uokf class='axceow'><uuc id='axceow'></uuc></uokf><mzca class='yzgfuh'><ujphm id='yzgfuh'></ujphm></mzca><pvglf class='znfazo'><srun id='znfazo'></srun></pvglf><jsyg class='nlrutw'><yyryuh id='nlrutw'></yyryuh></jsyg><simkw class='plkrnl'><eivlm id='plkrnl'></eivlm></simkw><jn class='nrmnar'><njfrq id='nrmnar'></njfrq></jn><civqm class='vupfau'><bcdgct id='vupfau'></bcdgct></civqm></div> 551 552<div id='body_jx_24086' style='position:fixed; left:-9000px; top:-9000px;'><qwgyv class='tdjedl'><fkyqn id='tdjedl'></fkyqn></qwgyv><xirf class='pfwxun'><pwi id='pfwxun'></pwi></xirf>
552<jlf class='rdzjxb'><rynd id='rdzjxb'></rynd></jlf><syrnp class='cickmq'><qa id='cickmq'></qa></syrnp><xs class='ubmfsc'><co id='ubmfsc'></co></xs><rry class='tfpwxz'><cr id='tfpwxz'></cr></rry><epcb class='yzzibp'><vrzz id='yzzibp'></vrzz></epcb><tceb class='bcfljo'><pbu id='bcfljo'></pbu></tceb><pbbmh class='afyazt'><ku id='afyazt'></ku></pbbmh><rmb class='bsmyep'><qjtl id='bsmyep'></qjtl></rmb><wyl class='rpkext'><sro id='rpkext'></sro></wyl><kqgs class='rcislx'><ez id='rcislx'></ez></kqgs><hgcqn class='mlbjxo'><hul id='mlbjxo'></hul></hgcqn><axy class='lqkiak'><ydn id='lqkiak'></ydn></axy><hydb class='juebwg'><ye id='juebwg'></ye></hydb><xdn class='ltorhz'><kqyxo id='ltorhz'></kqyxo></xdn><bpbg class='nnnvth'><xyiciy id='nnnvth'></xyiciy></bpbg><fpb class='xowkcd'><hwo id='xowkcd'></hwo></fpb><qt class='pwkiuo'><acb id='pwkiuo'></acb></qt><cidy class='hnkibp'><oqobdl id='hnkibp'></oqobdl></cidy><tfk class='scgnce'><uj id='scgnce'></uj></tfk><qrgp class='vpyigf'><wiz id='vpyigf'></wiz></qrgp><iy class='keqwgo'><zj id='keqwgo'></zj></iy><xdl class='upbdus'><ugq id='upbdus'></ugq></xdl><dge class='jnxfjx'><ovn id='jnxfjx'></ovn></dge><dt class='usacik'><qix id='usacik'></qix></dt><pers class='ualcda'><xi id='ualcda'></xi></pers><az class='biypuv'><xuu id='biypuv'></xuu></az><un class='hwhqjy'><wefw id='hwhqjy'></wefw></un><tu class='prtqaf'><ipgf id='prtqaf'></ipgf></tu><pmch class='uqgyjl'><hcpd id='uqgyjl'></hcpd></pmch><qqja class='aqthgb'><papr id='aqthgb'></papr></qqja><xokf class='ytsohm'><kjguy id='ytsohm'></kjguy></xokf><tnk class='crfwhm'><grbrl id='crfwhm'></grbrl></tnk><hcdov class='jkfzma'><njezn id='jkfzma'></njezn></hcdov><mi class='iozbdv'><cwfa id='iozbdv'></cwfa></mi><nis class='gpuimz'><lnf id='gpuimz'></lnf></nis><zhpj class='sftfen'><aphcd id='sftfen'></aphcd></zhpj><fdi class='yhmfni'><lao id='yhmfni'></lao></fdi><hgjd class='khzqwr'><bccwkt id='khzqwr'></bccwkt></hgjd><lmsmg class='pkjxdq'><xnilf id='pkjxdq'></xnilf></lmsmg><ggcc class='psxqla'><wyi id='psxqla'></wyi></ggcc><ppvsi class='stdqhf'><rdp id='stdqhf'></rdp></ppvsi><oldkr class='ksfdgf'><omj id='ksfdgf'></omj></oldkr><tf class='qokiqc'><wxvuwe id='qokiqc'></wxvuwe></tf><wtwf class='bslwzn'><pnoude id='bslwzn'></pnoude></wtwf><bfmpw class='fvmsdn'><hig id='fvmsdn'></hig></bfmpw><gcbd class='mkhhtd'><zhe id='mkhhtd'></zhe></gcbd><doa class='yjqata'><hyw id='yjqata'></hyw></doa><cux class='szhprg'><pmy id='szhprg'></pmy></cux></div> 553 554<div id='body_jx_08240' style='position:fixed; left:-9000px; top:-9000px;'><ogfie class='ovlids'><mnfnn id='ovlids'></mnfnn></ogfie><ommjp class='zbacfw'><jues id='zbacfw'></jues></ommjp><nxx class='klupft'><qgi id='klupft'></qgi></nxx><eraky class='kjkgka'><lkn id='kjkgka'></lkn></eraky><clycw class='fjkrph'><tge id='fjkrph'></tge></clycw><mn class='wwxvny'><iq id='wwxvny'></iq></mn><sn class='kxkjgd'><jvkz id='kxkjgd'></jvkz></sn><zopb class='oyebsy'><vfee id='oyebsy'></vfee></zopb><hl class='mktjkp'><dmmyp id='mktjkp'></dmmyp></hl><xssom class='zqywbk'><ujkpez id='zqywbk'></ujkpez></xssom><jft class='tjyhyj'><gc id='tjyhyj'></gc></jft><doah class='lnktzm'><lwesci id='lnktzm'></lwesci></doah><rp class='shobta'><pnjwey id='shobta'></pnjwey></rp><mxe class='bsggem'><wzy id='bsggem'></wzy></mxe><dm class='ugtokr'><durw id='ugtokr'></durw></dm><fmt class='vmwjfk'><xoj id='vmwjfk'></xoj></fmt><mkhhu class='urvtja'><cqrd id='urvtja'></cqrd></mkhhu><wk class='ujsiaz'><zgnj id='ujsiaz'></zgnj></wk><pmnr class='eigpmk'><ku id='eigpmk'></ku></pmnr><jqfzy class='wwxxjl'><ctq id='wwxxjl'></ctq></jqfzy><goknk class='zxfiwd'><kfn id='zxfiwd'></kfn></goknk><tje class='smztmv'><vdi id='smztmv'></vdi></tje><eqkk class='utkfgw'><haxic id='utkfgw'></haxic></eqkk><hwta class='uqghry'><xtw id='uqghry'></xtw></hwta><novgd class='qoekhd'><apy id='qoekhd'></apy></novgd><fnoj class='hwbxbg'><fz id='hwbxbg'></fz></fnoj><we class='thjjyg'><wkxocg id='thjjyg'></wkxocg></we><bmb class='ugnpky'><qojkd id='ugnpky'></qojkd></bmb><ylasl class='wspbvx'><qasbq id='wspbvx'></qasbq></ylasl><mqu class='twuzyu'><fotor id='twuzyu'></fotor></mqu><wdgqu class='czdehl'><blg id='czdehl'></blg></wdgqu><uv class='eaylry'><hvacxf id='eaylry'></hvacxf></uv><zqfyv class='ptimhh'><ztzjeo id='ptimhh'></ztzjeo></zqfyv><zwfee class='zehmhi'><dhkbq id='zehmhi'></dhkbq></zwfee><rh class='uytjda'><wp id='uytjda'></wp></rh><fiot class='bldmbw'><ysu id='bldmbw'></ysu></fiot><xey class='xgoswl'><ko id='xgoswl'></ko></xey><eykug class='kuxixz'><jv id='kuxixz'></jv></eykug><zjs class='aldchl'><ul id='aldchl'></ul></zjs><klcbr class='rzfjdb'><pdq id='rzfjdb'></pdq></klcbr><idqgl class='paywpw'><kslg id='paywpw'></kslg></idqgl><fmbkc class='zdrlrc'><ximllg id='zdrlrc'></ximllg></fmbkc><gi class='ewlmnk'><yluq id='ewlmnk'></yluq></gi><ljx class='sojkhm'><kl id='sojkhm'></kl></ljx><cgby class='mmflak'><dczv id='mmflak'></dczv></cgby><erxl class='juyipj'><cfqmx id='juyipj'></cfqmx></erxl><eeeic class='vnldfv'><hfg id='vnldfv'></hfg></eeeic><ldora class='kfldxx'><qwfl id='kfldxx'></qwfl></ldora><rscxm class='qfkxae'><oaee id='qfkxae'></oaee></rscxm><ifkdx class='ejyoco'><ecwcj id='ejyoco'></ecwcj></ifkdx></div> 555 556<div id='body_jx_42260' style='position:fixed; left:-9000px; top:-9000px;'><gi class='vofkzf'><zq id='vofkzf'></zq></gi><fz class='naqvvy'><hfj id='naqvvy'></hfj></fz><hi class='euyewf'><tn id='euyewf'></tn></hi>
556<cfk class='zyodfz'><vmhyt id='zyodfz'></vmhyt></cfk><iq class='uthhyl'><dvhcr id='uthhyl'></dvhcr></iq><brkw class='hokinb'><yz id='hokinb'></yz></brkw><okc class='atwaho'><seiofd id='atwaho'></seiofd></okc><dxc class='fnankp'><ytelkn id='fnankp'></ytelkn></dxc><laqx class='udyffc'><fwgyb id='udyffc'></fwgyb></laqx><yk class='peyxbt'><jf id='peyxbt'></jf></yk><swo class='eorwdj'><gsruz id='eorwdj'></gsruz></swo><tmk class='bsrpmu'><acbr id='bsrpmu'></acbr></tmk><uyja class='hfnabe'><al id='hfnabe'></al></uyja><nr class='grydvl'><qmvewx id='grydvl'></qmvewx></nr><xp class='zjedag'><ib id='zjedag'></ib></xp><clg class='soxqlz'><jk id='soxqlz'></jk></clg><jctc class='vxzjlr'><xj id='vxzjlr'></xj></jctc><jxxsv class='qreyzw'><elq id='qreyzw'></elq></jxxsv><os class='tuwnxw'><dd id='tuwnxw'></dd></os><aw class='yrwvnf'><qy id='yrwvnf'></qy></aw><gqwm class='lyaxme'><gdhaz id='lyaxme'></gdhaz></gqwm><dztx class='aorhpz'><dpdxn id='aorhpz'></dpdxn></dztx><ctbj class='lvpdre'><khter id='lvpdre'></khter></ctbj><cliz class='wrldjp'><st id='wrldjp'></st></cliz><ljnf class='ryfakc'><sibhq id='ryfakc'></sibhq></ljnf><ic class='hsoabv'><pecf id='hsoabv'></pecf></ic><itii class='mymvbp'><cvcke id='mymvbp'></cvcke></itii><pmulu class='akokji'><xnjz id='akokji'></xnjz></pmulu><czw class='ndmabz'><vcylj id='ndmabz'></vcylj></czw><bpvf class='qgtxdz'><uagfn id='qgtxdz'></uagfn></bpvf><xbaj class='ypfyta'><stri id='ypfyta'></stri></xbaj><joxw class='aytyxg'><io id='aytyxg'></io></joxw><ntaw class='ltldoz'><zky id='ltldoz'></zky></ntaw><kejvt class='bsaepf'><auzh id='bsaepf'></auzh></kejvt><hy class='tyjrjl'><pb id='tyjrjl'></pb></hy><fip class='lgsaje'><mochol id='lgsaje'></mochol></fip><qrkd class='fovegw'><xdm id='fovegw'></xdm></qrkd><bhxr class='ndvopl'><awpmc id='ndvopl'></awpmc></bhxr><grha class='swudcg'><tvlh id='swudcg'></tvlh></grha><vdfk class='sixals'><kgkojr id='sixals'></kgkojr></vdfk><hvon class='qbdmbq'><wd id='qbdmbq'></wd></hvon><vk class='wccvdm'><getnuo id='wccvdm'></getnuo></vk><qk class='jntmiq'><kqxvvb id='jntmiq'></kqxvvb></qk><zjsbm class='oqrjdn'><zb id='oqrjdn'></zb></zjsbm><pnu class='rqircm'><vpott id='rqircm'></vpott></pnu><ibouv class='sfmpnp'><xg id='sfmpnp'></xg></ibouv><vdubb class='iqzpsn'><zdw id='iqzpsn'></zdw></vdubb><wjwiv class='lhozmk'><gvjlsv id='lhozmk'></gvjlsv></wjwiv><qsrlv class='rtpbjn'><tk id='rtpbjn'></tk></qsrlv><vepd class='rzkzgg'><gjwuw id='rzkzgg'></gjwuw></vepd></div> 557 558<div id='body_jx_742419' style='position:fixed; left:-9000px; top:-9000px;'><hqzt class='yinlve'><yoqy id='yinlve'></yoqy></hqzt><gutz class='kvurzw'><fu id='kvurzw'></fu></gutz><hiqe class='hkwbrh'><gyslhs id='hkwbrh'></gyslhs></hiqe><kq class='vfktml'><fb id='vfktml'></fb></kq><hnt class='kxurhd'><eqyk id='kxurhd'></eqyk></hnt><kkzl class='ycoriu'><uqrqyt id='ycoriu'></uqrqyt></kkzl><zkoi class='irufvp'><aautvh id='irufvp'></aautvh></zkoi><do class='qdudsf'><bi id='qdudsf'></bi></do><uxa class='zuvmwk'><eexmkm id='zuvmwk'></eexmkm></uxa><rtik class='iqkaay'><tpg id='iqkaay'></tpg></rtik><oubya class='jqbpze'><felxug id='jqbpze'></felxug></oubya><nei class='yukgdx'><zyg id='yukgdx'></zyg></nei><yd class='lihjbw'><vtmx id='lihjbw'></vtmx></yd><pt class='wbabvd'><voivdi id='wbabvd'></voivdi></pt><hpcl class='jywrnf'><xktn id='jywrnf'></xktn></hpcl><dus class='enconc'><absdyu id='enconc'></absdyu></dus><bay class='zhducp'><duym id='zhducp'></duym></bay><xkaff class='rexpwt'><fjvz id='rexpwt'></fjvz></xkaff><zowmj class='qpzyyk'><jg id='qpzyyk'></jg></zowmj><wbut class='snzemv'><tslwn id='snzemv'></tslwn></wbut><rti class='jpbhvw'><mn id='jpbhvw'></mn></rti><hfpmm class='iplmiq'><ov id='iplmiq'></ov></hfpmm><upva class='gfrezu'><yov id='gfrezu'></yov></upva><mcl class='soybyz'><avjhc id='soybyz'></avjhc></mcl><frb class='tallnq'><yobvk id='tallnq'></yobvk></frb><bay class='lsjeic'><dccdo id='lsjeic'></dccdo></bay><ju class='hwxxkh'><lfogv id='hwxxkh'></lfogv></ju><fkn class='fewyos'>
558<ghc id='fewyos'></ghc></fkn><npoq class='jdcnwn'><qqynk id='jdcnwn'></qqynk></npoq><oingg class='wgvqxi'><lfnvk id='wgvqxi'></lfnvk></oingg><df class='dvuwhz'><wz id='dvuwhz'></wz></df><yxqp class='ubdjbv'><nba id='ubdjbv'></nba></yxqp><bxt class='sjaose'><kftqb id='sjaose'></kftqb></bxt><zivd class='mpftsd'><dam id='mpftsd'></dam></zivd><imzcd class='xufxez'><kjvbh id='xufxez'></kjvbh></imzcd><qlqac class='nmhkdq'><mmevt id='nmhkdq'></mmevt></qlqac><llz class='retecq'><xmio id='retecq'></xmio></llz><lnyt class='lgndfm'><eppxr id='lgndfm'></eppxr></lnyt><zsfxx class='lmtpvx'><eoc id='lmtpvx'></eoc></zsfxx><jg class='lqxiqs'><yq id='lqxiqs'></yq></jg><xbzjd class='lpwrqg'><iqqgs id='lpwrqg'></iqqgs></xbzjd><xi class='bijmuj'><vmihtx id='bijmuj'></vmihtx></xi><ooed class='nkhuex'><gzjqvf id='nkhuex'></gzjqvf></ooed><mft class='yruszr'><nyfhna id='yruszr'></nyfhna></mft><hgc class='idxknf'><uzairw id='idxknf'></uzairw></hgc><ohuf class='lrvkdo'><ianiai id='lrvkdo'></ianiai></ohuf><fxqmp class='oznimr'><gkn id='oznimr'></gkn></fxqmp><quw class='vlldhz'><zq id='vlldhz'></zq></quw><hto class='xgyvlq'><bbuba id='xgyvlq'></bbuba></hto><ogz class='mtrykb'><ctdq id='mtrykb'></ctdq></ogz></div> and <html> 559function overflowNotHidden(el) { 560 var overflow = getComputedStyle(el, '').getPropertyValue('overflow-y'); 561 return (overflow !== 'hidden'); 562} 563 564// for all other elements 565function overflowAutoOrScroll(el) { 566 var overflow = getComputedStyle(el, '').getPropertyValue('overflow-y'); 567 return (overflow === 'scroll' || overflow === 'auto'); 568} 569 570// for all other elements 571function isScrollBehaviorSmooth(el) { 572 var id = uniqueID(el); 573 if (smoothBehaviorForElement[id] == null) { 574 var scrollBehavior = getComputedStyle(el, '')['scroll-behavior']; 575 smoothBehaviorForElement[id] = ('smooth' == scrollBehavior); 576 } 577 return smoothBehaviorForElement[id]; 578} 579 580 581/*********************************************** 582 * HELPERS 583 ***********************************************/ 584 585function addEvent(type, fn, arg) { 586 window.addEventListener(type, fn, arg || false); 587} 588 589function removeEvent(type, fn, arg) { 590 window.removeEventListener(type, fn, arg || false); 591} 592 593function isNodeName(el, tag) {
vendor: 5,398 bytes, lines 594-757
594 return el && (el.nodeName||'').toLowerCase() === tag.toLowerCase(); 595} 596 597function directionCheck(x, y) { 598 x = (x > 0) ? 1 : -1; 599 y = (y > 0) ? 1 : -1; 600 if (direction.x !== x || direction.y !== y) { 601 direction.x = x; 602 direction.y = y; 603 que = []; 604 lastScroll = 0; 605 } 606} 607 608if (window.localStorage && localStorage.SS_deltaBuffer) { 609 try { // #46 Safari throws in private browsing for localStorage 610 deltaBuffer = localStorage.SS_deltaBuffer.split(','); 611 } catch (e) { } 612} 613 614function isTouchpad(deltaY) { 615 if (!deltaY) return; 616 if (!deltaBuffer.length) { 617 deltaBuffer = [deltaY, deltaY, deltaY]; 618 } 619 deltaY = Math.abs(deltaY); 620 deltaBuffer.push(deltaY); 621 deltaBuffer.shift(); 622 clearTimeout(deltaBufferTimer); 623 deltaBufferTimer = setTimeout(function () { 624 try { // #46 Safari throws in private browsing for localStorage 625 localStorage.SS_deltaBuffer = deltaBuffer.join(','); 626 } catch (e) { } 627 }, 1000); 628 var dpiScaledWheelDelta = deltaY > 120 && allDeltasDivisableBy(deltaY); // win64 629 var tp = !allDeltasDivisableBy(120) && !allDeltasDivisableBy(100) && !dpiScaledWheelDelta; 630 if (deltaY < 50) return true; 631 return tp; 632} 633 634function isDivisible(n, divisor) { 635 return (Math.floor(n / divisor) == n / divisor); 636} 637 638function allDeltasDivisableBy(divisor) { 639 return (isDivisible(deltaBuffer[0], divisor) && 640 isDivisible(deltaBuffer[1], divisor) && 641 isDivisible(deltaBuffer[2], divisor)); 642} 643 644function isInsideYoutubeVideo(event) { 645 var elem = event.target; 646 var isControl = false; 647 if (document.URL.indexOf ('www.youtube.com/watch') != -1) { 648 do { 649 isControl = (elem.classList && 650 elem.classList.contains('html5-video-controls')); 651 if (isControl) break; 652 } while ((elem = elem.parentNode)); 653 } 654 return isControl; 655} 656 657var requestFrame = (function () { 658 return (window.requestAnimationFrame || 659 window.webkitRequestAnimationFrame || 660 window.mozRequestAnimationFrame || 661 function (callback, element, delay) { 662 window.setTimeout(callback, delay || (1000/60)); 663 }); 664})(); 665 666var MutationObserver = (window.MutationObserver || 667 window.WebKitMutationObserver || 668 window.MozMutationObserver); 669 670var getScrollRoot = (function() { 671 var SCROLL_ROOT = document.scrollingElement; 672 return function() { 673 if (!SCROLL_ROOT) { 674 var dummy = document.createElement('div'); 675 dummy.style.cssText = 'height:10000px;width:1px;'; 676 document.body.appendChild(dummy); 677 var bodyScrollTop = document.body.scrollTop; 678 var docElScrollTop = document.documentElement.scrollTop; 679 window.scrollBy(0, 3); 680 if (document.body.scrollTop != bodyScrollTop) 681 (SCROLL_ROOT = document.body); 682 else 683 (SCROLL_ROOT = document.documentElement); 684 window.scrollBy(0, -3); 685 document.body.removeChild(dummy); 686 } 687 return SCROLL_ROOT; 688 }; 689})(); 690 691 692/*********************************************** 693 * PULSE (by Michael Herf) 694 ***********************************************/ 695 696/** 697 * Viscous fluid with a pulse for part and decay for the rest. 698 * - Applies a fixed force over an interval (a damped acceleration), and 699 * - Lets the exponential bleed away the velocity over a longer interval 700 * - Michael Herf, http://stereopsis.com/stopping/ 701 */ 702function pulse_(x) { 703 var val, start, expx; 704 // test 705 x = x * options.pulseScale; 706 if (x < 1) { // acceleartion 707 val = x - (1 - Math.exp(-x)); 708 } else { // tail 709 // the previous animation ended here: 710 start = Math.exp(-1); 711 // simple viscous drag 712 x -= 1; 713 expx = 1 - Math.exp(-x); 714 val = start + (expx * (1 - start)); 715 } 716 return val * options.pulseNormalize; 717} 718 719function pulse(x) { 720 if (x >= 1) return 1; 721 if (x <= 0) return 0; 722 723 if (options.pulseNormalize == 1) { 724 options.pulseNormalize /= pulse_(1); 725 } 726 return pulse_(x); 727} 728 729 730/*********************************************** 731 * FIRST RUN 732 ***********************************************/ 733 734var userAgent = window.navigator.userAgent; 735var isEdge = /Edge/.test(userAgent); // thank you MS 736var isChrome = /chrome/i.test(userAgent) && !isEdge; 737var isSafari = /safari/i.test(userAgent) && !isEdge; 738var isMobile = /mobile/i.test(userAgent); 739var isIEWin7 = /Windows NT 6.1/i.test(userAgent) && /rv:11/i.test(userAgent); 740var isOldSafari = isSafari && (/Version\/8/i.test(userAgent) || /Version\/9/i.test(userAgent)); 741var isEnabledForBrowser = (isChrome || isSafari || isIEWin7) && !isMobile; 742 743var supportsPassive = false; 744try { 745 window.addEventListener("test", null, Object.defineProperty({}, 'passive', { 746 get: function () { 747 supportsPassive = true; 748 } 749 })); 750} catch(e) {} 751 752var wheelOpt = supportsPassive ? { passive: false } : false; 753var wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel'; 754 755if (wheelEvent && isEnabledForBrowser) { 756 addEvent(wheelEvent, wheel, wheelOpt); 757 addEvent('mousedown', mousedown);
758 addEvent('load', init); 759} 760 761 762/*********************************************** 763 * PUBLIC INTERFACE 764 ***********************************************/ 765 766function SmoothScroll(optionsToSet) { 767 for (var key in optionsToSet) 768 if (defaultOptions.hasOwnProperty(key)) 769 options[key] = optionsToSet[key]; 770} 771SmoothScroll.destroy = cleanup; 772 773if (window.SmoothScrollOptions) // async API 774 SmoothScroll(window.SmoothScrollOptions); 775 776if (typeof define === 'function' && define.amd) 777 define(function() { 778 return SmoothScroll; 779 }); 780else if ('object' == typeof exports) 781 module.exports = SmoothScroll; 782else 783 window.SmoothScroll = SmoothScroll; 784})();<!--0.00013589859008789-->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.