1function st_get_cookie(cookieName) { 2 const regex = new RegExp(cookieName + '=([^;]+)'); 3 const cookieValue = document.cookie.match(regex); 4 return cookieValue ? cookieValue[1] : null; 5} 6 7function st_trigger_ajax(element) { 8 var button = element; 9 button.disabled = true; 10 var form = button.closest("form"); 11 var formData = new FormData(form); 12 13 var inputTriggerId = button.parentNode.querySelector('input[name="st_trigger_id"]'); 14 var inputLoadingLabel = button.parentNode.querySelector('input[name="st_loading_label"]'); 15 var inputClickedLabel = button.parentNode.querySelector('input[name="st_clicked_label"]'); 16 var inputButtonLabel = button.parentNode.querySelector('input[name="st_button_label"]'); 17 var inputUserId = button.parentNode.querySelector('input[name="st_user_id"]'); 18 19 var cookiename = 'st_trigger_button_clicked_' + inputTriggerId.value; 20 var cookie = 'yes_' + inputUserId.value; 21 var cookieValue = st_get_cookie(cookiename); 22 23 if (cookieValue === null || cookieValue !== cookie) { 24 button.classList.add('st_trigger_button_loading'); 25 if (inputLoadingLabel.value !== '') { 26 button.textContent = inputLoadingLabel.value; 27 } 28 var xhr = new XMLHttpRequest(); 29 xhr.open('POST', st_ajax_object.ajax_url); 30 xhr.onreadystatechange = function() { 31 if (xhr.readyState === XMLHttpRequest.DONE) { 32 if (xhr.status === 200) { 33 button.classList.remove('st_trigger_button_loading'); 34 button.disabled = false; 35 if (inputClickedLabel.value !== '') { 36 button.textContent = inputClickedLabel.value; 37 } else { 38 button.textContent = inputButtonLabel.value; 39 } 40 if( xhr.responseText != '' ){ 41 var response = JSON.parse(xhr.responseText); 42 const parsed = new URL(response.data); 43 if (['http:', 'https:'].includes(parsed.protocol)) { 44 const redirectencodedURL = encodeURI(parsed.href); 45 try { 46 const redirectURL = decodeURI(redirectencodedURL); 47 window.location.href = redirectURL; 48 } catch (e) { 49 console.error(e); 50 } 51 } 52 } 53 } 54 } 55 }; 56 xhr.send(formData); 57 } else { 58 if (inputClickedLabel.value !== '') { 59 button.textContent = inputClickedLabel.value; 60 } 61 } 62}; 63/** 64 * File skip-link-focus-fix.js. 65 * 66 * Helps with accessibility for keyboard only users. 67 * 68 * Learn more: https://git.io/vWdr2 69 */ 70(function() { 71 var isIe = /(trident|msie)/i.test( navigator.userAgent ); 72 73 if ( isIe && document.getElementById && window.addEventListener ) { 74 window.addEventListener( 'hashchange', function() { 75 var id = location.hash.substring( 1 ), 76 element; 77 78 if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) { 79 return; 80 } 81 82 element = document.getElementById( id ); 83 84 if ( element ) { 85 if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) { 86 element.tabIndex = -1; 87 } 88 89 element.focus(); 90 } 91 }, false ); 92 } 93})(); 94; 95/* global twentyseventeenScreenReaderText */ 96(function( $ ) { 97 98 // Variables and DOM Caching. 99 var $body = $( 'body' ), 100 $customHeader = $body.find( '.custom-header' ), 101 $branding = $customHeader.find( '.site-branding' ), 102 $navigation = $body.find( '.navigation-top' ), 103 $navWrap = $navigation.find( '.wrap' ), 104 $navMenuItem = $navigation.find( '.menu-item' ), 105 $menuToggle = $navigation.find( '.menu-toggle' ), 106 $menuScrollDown = $body.find( '.menu-scroll-down' ), 107 $sidebar = $body.find( '#secondary' ), 108 $entryContent = $body.find( '.entry-content' ), 109 $formatQuote = $body.find( '.format-quote blockquote' ), 110 isFrontPage = $body.hasClass( 'twentyseventeen-front-page' ) || $body.hasClass( 'home blog' ), 111 navigationFixedClass = 'site-navigation-fixed', 112 navigationHeight, 113 navigationOuterHeight, 114 navPadding, 115 navMenuItemHeight, 116 idealNavHeight, 117 navIsNotTooTall, 118 headerOffset, 119 menuTop = 0, 120 resizeTimer; 121 122 // Ensure the sticky navigation doesn't cover current focused links.
123 $( 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], [contenteditable]', '.site-content-contain' ).filter( ':visible' ).on( 'focus', function() { 124 if ( $navigation.hasClass( 'site-navigation-fixed' ) ) { 125 var windowScrollTop = $( window ).scrollTop(), 126 fixedNavHeight = $navigation.height(), 127 itemScrollTop = $( this ).offset().top, 128 offsetDiff = itemScrollTop - windowScrollTop; 129 130 // Account for Admin bar. 131 if ( $( '#wpadminbar' ).length ) { 132 offsetDiff -= $( '#wpadminbar' ).height(); 133 } 134 135 if ( offsetDiff < fixedNavHeight ) { 136 $( window ).scrollTo( itemScrollTop - ( fixedNavHeight + 50 ), 0 ); 137 } 138 } 139 }); 140 141 // Set properties of navigation. 142 function setNavProps() { 143 navigationHeight = $navigation.height(); 144 navigationOuterHeight = $navigation.outerHeight(); 145 navPadding = parseFloat( $navWrap.css( 'padding-top' ) ) * 2; 146 navMenuItemHeight = $navMenuItem.outerHeight() * 2; 147 idealNavHeight = navPadding + navMenuItemHeight; 148 navIsNotTooTall = navigationHeight <= idealNavHeight; 149 } 150 151 // Make navigation 'stick'. 152 function adjustScrollClass() { 153 154 // Make sure we're not on a mobile screen. 155 if ( 'none' === $menuToggle.css( 'display' ) ) { 156 157 // Make sure the nav isn't taller than two rows. 158 if ( navIsNotTooTall ) { 159 160 // When there's a custom header image or video, the header offset includes the height of the navigation. 161 if ( isFrontPage && ( $body.hasClass( 'has-header-image' ) || $body.hasClass( 'has-header-video' ) ) ) { 162 headerOffset = $customHeader.innerHeight() - navigationOuterHeight; 163 } else { 164 headerOffset = $customHeader.innerHeight(); 165 } 166 167 // If the scroll is more than the custom header, set the fixed class. 168 if ( $( window ).scrollTop() >= headerOffset ) { 169 $navigation.addClass( navigationFixedClass ); 170 } else { 171 $navigation.removeClass( navigationFixedClass ); 172 } 173 174 } else { 175 176 // Remove 'fixed' class if nav is taller than two rows. 177 $navigation.removeClass( navigationFixedClass ); 178 } 179 } 180 } 181 182 // Set margins of branding in header. 183 function adjustHeaderHeight() { 184 if ( 'none' === $menuToggle.css( 'display' ) ) { 185 186 // The margin should be applied to different elements on front-page or home vs interior pages. 187 if ( isFrontPage ) { 188 $branding.css( 'margin-bottom', navigationOuterHeight ); 189 } else { 190 $customHeader.css( 'margin-bottom', navigationOuterHeight ); 191 } 192 193 } else { 194 $customHeader.css( 'margin-bottom', '0' ); 195 $branding.css( 'margin-bottom', '0' ); 196 } 197 } 198 199 // Set icon for quotes. 200 function setQuotesIcon() { 201 $( twentyseventeenScreenReaderText.quote ).prependTo( $formatQuote ); 202 } 203 204 // Add 'below-entry-meta' class to elements. 205 function belowEntryMetaClass( param ) { 206 var sidebarPos, sidebarPosBottom; 207 208 if ( ! $body.hasClass( 'has-sidebar' ) || 209 typeof $sidebar === 'undefined' || 210 $sidebar.length < 1 || ( 211 $body.hasClass( 'search' ) || 212 $body.hasClass( 'single-attachment' ) || 213 $body.hasClass( 'error404' ) || 214 $body.hasClass( 'twentyseventeen-front-page' ) 215 ) ) { 216 return; 217 } 218 219 sidebarPos = $sidebar.offset(); 220 sidebarPosBottom = sidebarPos.top + ( $sidebar.height() + 28 ); 221 222 $entryContent.find( param ).each( function() { 223 var $element = $( this ), 224 elementPos = $element.offset(), 225 elementPosTop = elementPos.top; 226 227 // Add 'below-entry-meta' to elements below the entry meta. 228 if ( elementPosTop > sidebarPosBottom ) { 229 $element.addClass( 'below-entry-meta' ); 230 } else { 231 $element.removeClass( 'below-entry-meta' ); 232 } 233 }); 234 } 235 236 /* 237 * Test if inline SVGs are supported. 238 * @link https://github.com/Modernizr/Modernizr/ 239 */ 240 function supportsInlineSVG() { 241 var div = document.createElement( 'div' ); 242 div.innerHTML = '<svg/>'; 243 return 'http://www.w3.org/2000/svg' === ( 'undefined' !== typeof SVGRect && div.firstChild && div.firstChild.namespaceURI ); 244 } 245 246 /** 247 * Test if an iOS device. 248 */ 249 function checkiOS() { 250 return /iPad|iPhone|iPod/.test(navigator.userAgent) && ! window.MSStream; 251 } 252 253 /* 254 * Test if background-attachment: fixed is supported. 255 * @link http://stackoverflow.com/questions/14115080/detect-support-for-background-attachment-fixed 256 */
257 function supportsFixedBackground() { 258 var el = document.createElement('div'), 259 isSupported; 260 261 try { 262 if ( ! ( 'backgroundAttachment' in el.style ) || checkiOS() ) { 263 return false; 264 } 265 el.style.backgroundAttachment = 'fixed'; 266 isSupported = ( 'fixed' === el.style.backgroundAttachment ); 267 return isSupported; 268 } 269 catch (e) { 270 return false; 271 } 272 } 273 274 // Fire on document ready. 275 $( function() { 276 277 // If navigation menu is present on page, setNavProps and adjustScrollClass. 278 if ( $navigation.length ) { 279 setNavProps(); 280 adjustScrollClass(); 281 } 282 283 // If 'Scroll Down' arrow in present on page, calculate scroll offset and bind an event handler to the click event. 284 if ( $menuScrollDown.length ) { 285 286 if ( $( 'body' ).hasClass( 'admin-bar' ) ) { 287 menuTop -= 32; 288 } 289 if ( $( 'body' ).hasClass( 'blog' ) ) { 290 menuTop -= 30; // The div for latest posts has no space above content, add some to account for this. 291 } 292 if ( ! $navigation.length ) { 293 navigationOuterHeight = 0; 294 } 295 296 $menuScrollDown.on( 'click', function( e ) { 297 e.preventDefault(); 298 $( window ).scrollTo( '#primary', { 299 duration: 600, 300 offset: { top: menuTop - navigationOuterHeight } 301 }); 302 }); 303 } 304 305 adjustHeaderHeight(); 306 setQuotesIcon(); 307 belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' ); 308 if ( true === supportsInlineSVG() ) { 309 document.documentElement.className = document.documentElement.className.replace( /(\s*)no-svg(\s*)/, '$1svg$2' ); 310 } 311 312 if ( true === supportsFixedBackground() ) { 313 document.documentElement.className += ' background-fixed'; 314 } 315 } ); 316 317 // If navigation menu is present on page, adjust it on scroll and screen resize. 318 if ( $navigation.length ) { 319 320 // On scroll, we want to stick/unstick the navigation. 321 $( window ).on( 'scroll', function() { 322 adjustScrollClass(); 323 adjustHeaderHeight(); 324 }); 325 326 // Also want to make sure the navigation is where it should be on resize. 327 $( window ).on( 'resize', function() { 328 setNavProps(); 329 setTimeout( adjustScrollClass, 500 ); 330 }); 331 } 332 333 $( window ).on( 'resize', function() { 334 clearTimeout( resizeTimer ); 335 resizeTimer = setTimeout( function() { 336 belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' ); 337 }, 300 ); 338 setTimeout( adjustHeaderHeight, 1000 ); 339 }); 340 341 // Add header video class after the video is loaded. 342 $( document ).on( 'wp-custom-header-video-loaded', function() { 343 $body.addClass( 'has-header-video' ); 344 }); 345 346})( jQuery ); 347; 348/*! 349 * jQuery.scrollTo 350 * Copyright (c) 2007 Ariel Flesler - aflesler â gmail ⢠com | https://github.com/flesler 351 * Licensed under MIT 352 * https://github.com/flesler/jquery.scrollTo 353 * @projectDescription Lightweight, cross-browser and highly customizable animated scrolling with jQuery 354 * @author Ariel Flesler 355 * @version 2.1.3 356 */ 357;(function(factory) { 358 'use strict'; 359 if (typeof define === 'function' && define.amd) { 360 // AMD 361 define(['jquery'], factory); 362 } else if (typeof module !== 'undefined' && module.exports) { 363 // CommonJS 364 module.exports = factory(require('jquery')); 365 } else { 366 // Global 367 factory(jQuery); 368 } 369})(function($) { 370 'use strict'; 371 372 var $scrollTo = $.scrollTo = function(target, duration, settings) { 373 return $(window).scrollTo(target, duration, settings); 374 }; 375 376 $scrollTo.defaults = { 377 axis:'xy', 378 duration: 0, 379 limit:true 380 }; 381 382 function isWin(elem) { 383 return !elem.nodeName || 384 $.inArray(elem.nodeName.toLowerCase(), ['iframe','#document','html','body']) !== -1; 385 } 386 387 function isFunction(obj) { 388 // Brought from jQuery since it's deprecated 389 return typeof obj === 'function' 390 } 391 392 $.fn.scrollTo = function(target, duration, settings) { 393 if (typeof duration === 'object') { 394 settings = duration; 395 duration = 0; 396 } 397 if (typeof settings === 'function') { 398 settings = { onAfter:settings }; 399 } 400 if (target === 'max') { 401 target = 9e9; 402 } 403 404 settings = $.extend({}, $scrollTo.defaults, settings); 405 // Speed is still recognized for backwards compatibility 406 duration = duration || settings.duration; 407 // Make sure the settings are given right 408 var queue = settings.queue && settings.axis.length > 1; 409 if (queue) { 410 // Let's keep the overall duration 411 duration /= 2; 412 } 413 settings.offset = both(settings.offset); 414 settings.over = both(settings.over); 415 416 return this.each(function() { 417 // Null target yields nothing, just like jQuery does 418 if (target === null) return; 419 420 var win = isWin(this), 421 elem = win ? this.contentWindow || window : this, 422 $elem = $(elem), 423 targ = target, 424 attr = {}, 425 toff; 426 427 switch (typeof targ) { 428 // A number will pass the regex 429 case 'number': 430 case 'string': 431 if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) { 432 targ = both(targ); 433 // We are done 434 break; 435 } 436 // Relative/Absolute selector 437 targ = win ? $(targ) : $(targ, elem); 438 /* falls through */
439 case 'object': 440 if (targ.length === 0) return; 441 // DOMElement / jQuery 442 if (targ.is || targ.style) { 443 // Get the real position of the target 444 toff = (targ = $(targ)).offset(); 445 } 446 } 447 448 var offset = isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset; 449 450 $.each(settings.axis.split(''), function(i, axis) { 451 var Pos = axis === 'x' ? 'Left' : 'Top', 452 pos = Pos.toLowerCase(), 453 key = 'scroll' + Pos, 454 prev = $elem[key](), 455 max = $scrollTo.max(elem, axis); 456 457 if (toff) {// jQuery / DOMElement 458 attr[key] = toff[pos] + (win ? 0 : prev - $elem.offset()[pos]); 459 460 // If it's a dom element, reduce the margin 461 if (settings.margin) { 462 attr[key] -= parseInt(targ.css('margin'+Pos), 10) || 0; 463 attr[key] -= parseInt(targ.css('border'+Pos+'Width'), 10) || 0; 464 } 465 466 attr[key] += offset[pos] || 0; 467 468 if (settings.over[pos]) { 469 // Scroll to a fraction of its width/height 470 attr[key] += targ[axis === 'x'?'width':'height']() * settings.over[pos]; 471 } 472 } else { 473 var val = targ[pos]; 474 // Handle percentage values 475 attr[key] = val.slice && val.slice(-1) === '%' ? 476 parseFloat(val) / 100 * max 477 : val; 478 } 479 480 // Number or 'number' 481 if (settings.limit && /^\d+$/.test(attr[key])) { 482 // Check the limits 483 attr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max); 484 } 485 486 // Don't waste time animating, if there's no need. 487 if (!i && settings.axis.length > 1) { 488 if (prev === attr[key]) { 489 // No animation needed 490 attr = {}; 491 } else if (queue) { 492 // Intermediate animation 493 animate(settings.onAfterFirst); 494 // Don't animate this axis again in the next iteration. 495 attr = {}; 496 } 497 } 498 }); 499 500 animate(settings.onAfter); 501 502 function animate(callback) { 503 var opts = $.extend({}, settings, { 504 // The queue setting conflicts with animate() 505 // Force it to always be true 506 queue: true, 507 duration: duration, 508 complete: callback && function() { 509 callback.call(elem, targ, settings); 510 } 511 }); 512 $elem.animate(attr, opts); 513 } 514 }); 515 }; 516 517 // Max scrolling position, works on quirks mode 518 // It only fails (not too badly) on IE, quirks mode. 519 $scrollTo.max = function(elem, axis) { 520 var Dim = axis === 'x' ? 'Width' : 'Height', 521 scroll = 'scroll'+Dim; 522 523 if (!isWin(elem)) 524 return elem[scroll] - $(elem)[Dim.toLowerCase()](); 525 526 var size = 'client' + Dim, 527 doc = elem.ownerDocument || elem.document, 528 html = doc.documentElement, 529 body = doc.body; 530 531 return Math.max(html[scroll], body[scroll]) - Math.min(html[size], body[size]); 532 }; 533 534 function both(val) { 535 return isFunction(val) || $.isPlainObject(val) ? val : { top:val, left:val }; 536 } 537 538 // Add special hooks so that window scroll properties can be animated 539 $.Tween.propHooks.scrollLeft = 540 $.Tween.propHooks.scrollTop = { 541 get: function(t) { 542 return $(t.elem)[t.prop](); 543 }, 544 set: function(t) { 545 var curr = this.get(t); 546 // If interrupt is true and user scrolled, stop animating 547 if (t.options.interrupt && t._last && t._last !== curr) { 548 return $(t.elem).stop(); 549 } 550 var next = Math.round(t.now); 551 // Don't waste CPU 552 // Browsers don't render floating point scroll 553 if (curr !== next) { 554 $(t.elem)[t.prop](next); 555 t._last = this.get(t); 556 } 557 } 558 }; 559 560 // AMD requirement 561 return $scrollTo; 562}); 563; 564var showLoader=!1;function pwaforwp_play_loader(){var e=!!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/),t=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream;if(e&&t){let e=document.querySelectorAll("a,input,button");for(let t=0;t<e.length;t++)e[t].addEventListener("click",handle_ios_clicks_for_loader);"disabled"!=window.localStorage.getItem("pwaforwp_defaultload")&&(document.getElementsByClassName("pwaforwp-loading-wrapper")&&void 0!==document.getElementsByClassName("pwaforwp-loading-wrapper")[0]&&(document.getElementsByClassName("pwaforwp-loading-wrapper")[0].style.display="flex"),document.getElementById("pwaforwp_loading_div")&&(document.getElementById("pwaforwp_loading_div").style.display="flex"),document.getElementById("pwaforwp_loading_icon")&&(document.getElementById("pwaforwp_loading_icon").style.display="flex"),setInterval(function(){if(document.getElementById("pwaforwp_loading_div")&&(document.getElementById("pwaforwp_loading_div").style.display="none"),document.getElementById("pwaforwp_loading_icon")&&(document.getElementById("pwaforwp_loading_icon").style.display="none"),document.getElementsByClassName("pwaforwp-loading-wrapper")&&document.getElementsByClassName("pwaforwp-loading-wrapper").length){const e=document.getElementsByClassName("pwaforwp-loading-wrapper");for(let t=0;t<e.length;t++)e[t].style.display="none"}},1e3,!0)),window.addEventListener("pagehide",function(){if(document.getElementById("pwaforwp_loading_div")&&(document.getElementById("pwaforwp_loading_div").style.display="none"),document.getElementById("pwaforwp_loading_icon")&&(document.getElementById("pwaforwp_loading_icon").style.display="none"),document.getElementsByClassName("pwaforwp-loading-wrapper")&&document.getElementsByClassName("pwaforwp-loading-wrapper").length){const e=document.getElementsByClassName("pwaforwp-loading-wrapper");for(let t=0;t<e.length;t++)e[t].style.display="none"}}),window.localStorage.setItem("pwaforwp_defaultload","enabled")}else window.addEventListener("beforeunload",function(){document.getElementsByClassName("pwaforwp-loading-wrapper")&&void 0!==document.getElementsByClassName("pwaforwp-loading-wrapper")[0]&&(document.getElementsByClassName("pwaforwp-loading-wrapper")[0].style.display="flex"),document.getElementById("pwaforwp_loading_div")&&(document.getElementById("pwaforwp_loading_div").style.display="flex"),document.getElementById("pwaforwp_loading_icon")&&(document.getElementById("pwaforwp_loading_icon").style.display="flex")}),setInterval(function(){if(document.getElementsByClassName("pwaforwp-loading-wrapper")&&document.getElementsByClassName("pwaforwp-loading-wrapper").length>0)for(var e=document.getElementsByClassName("pwaforwp-loading-wrapper"),t=0;t<e.length;t++)e[t].style.display="none";document.getElementById("pwaforwp_loading_div")&&(document.getElementById("pwaforwp_loading_div").style.display="none"),document.getElementById("pwaforwp_loading_icon")&&(document.getElementById("pwaforwp_loading_icon").style.display="none")},5e3,!0)}pwaforwp_is_mobile()&&"1"==pwaforwp_js_obj.loader_mobile&&screen.availWi
564dth<521&&(console.log(screen.availWidth),pwaforwp_play_loader()),"1"==pwaforwp_js_obj.loader_desktop&&screen.availWidth>520&&pwaforwp_play_loader(),"1"==pwaforwp_js_obj.loader_admin&&"1"==pwaforwp_js_obj.user_admin&&pwaforwp_play_loader(),"1"==pwaforwp_js_obj.loader_only_pwa&&(window.matchMedia("(display-mode: standalone)").matches||window.matchMedia("(display-mode: fullscreen)").matches||window.matchMedia("(display-mode: minimal-ui)").matches)&&pwaforwp_play_loader();var close_btns=document.getElementsByClassName(".pwaforwp_add_home_close");function pwaforwp_is_mobile(){var e=!1;return(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.
564substr(0,4)))&&(e=!0),e}function handle_ios_clicks_for_loader(e){var t,o;t=e.target.getAttribute("href"),o=e.target.getAttribute("type"),(is_valid_url(t)||"submit"==o)&&(window.localStorage.setItem("pwaforwp_defaultload","disabled"),document.getElementsByClassName("pwaforwp-loading-wrapper")&&document.getElementsByClassName("pwaforwp-loading-wrapper").length&&(document.getElementsByClassName("pwaforwp-loading-wrapper")[0].style.display="flex"),document.getElementById("pwaforwp_loading_div")&&(document.getElementById("pwaforwp_loading_div").style.display="flex"),document.getElementById("pwaforwp_loading_icon")&&(document.getElementById("pwaforwp_loading_icon").style.display="flex"))}function is_valid_url(e){return!!new RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i").test(e)}function pwaforwp_is_standalone_pwa(){var e=window.matchMedia("(display-mode: standalone)").matches||window.matchMedia("(display-mode: fullscreen)").matches||window.matchMedia("(display-mode: minimal-ui)").matches,t=document.referrer,o=t&&-1!==t.indexOf("android-app://"),a=/Android/.test(navigator.userAgent)&&(e||o),n=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,i=n&&(-1!==navigator.userAgent.indexOf("PWABuilder-iOS")||window.webkit&&window.webkit.messageHandlers),d=n&&(!0===window.navigator.standalone||i);return e||d||a}close_btns.length&&(close_btns[0].addEventListener("click",function(e){document.cookie="pwaforwp_prompt_close="+new Date,close_btns[0].parentNode.style.display="none"}),0==close_btns[0].offsetWidth&&0==close_btns[0].offsetHeight?document.getElementsByClassName("pwaforwp-sticky-banner").style.display="none":document.getElementsByClassName("pwaforwp-sticky-banner").style.display="block",1==pwaforwp_js_obj.reset_cookies&&(document.cookie="pwaforwp_prompt_close=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;")),document.addEventListener("DOMContentLoaded",function(){if(!("ontouchstart"in window)||"1"!=pwaforwp_js_obj.swipe_navigation||window.innerWidth>768||!pwaforwp_js_obj.prev_post_url&&!pwaforwp_js_obj.next_post_url)return;let e=0,t=0;const o=document.createElement("div");o.id="swipe-gradient-left",Object.assign(o.style,{position:"fixed",top:"0",bottom:"0",left:"0",width:"50%",pointerEvents:"none",zIndex:"9999",background:"linear-gradient(to right, rgba(0,0,0,0.5), transparent)",opacity:"0",transition:"opacity 0.1s"});const a=document.createElement("div");function n(){o.style.opacity="0",a.style.opacity="0"}a.id="swipe-gradient-right",Object.assign(a.style,{position:"fixed",top:"0",bottom:"0",right:"0",width:"50%",pointerEvents:"none",zIndex:"9999",background:"linear-gradient(to left, rgba(0,0,0,0.5), transparent)",opacity:"0",transition:"opacity 0.1s"}),document.body.appendChild(o),document.body.appendChild(a),document.addEventListener("touchstart",function(t){e=t.changedTouches[0].screenX,n()}),document.addEventListener("touchmove",function(t){const n=t.changedTouches[0].screenX-e,i=Math.min(Math.abs(n)/100,1);(pwaforwp_js_obj.prev_post_url||pwaforwp_js_obj.next_post_url)&&(n>0?(o.style.opacity=i.toString(),a.style.opacity="0"):n<0&&(a.style.opacity=i.toString(),o.style.opacity="0"))}),document.addEventListener("touchend",function(i){t=i.changedTouches[0].screenX;const d=t-e;Math.min(Math.abs(d)/100,1)<1?n():d>0&&pwaforwp_js_obj.prev_post_url?(o.style.opacity="1",setTimeout(function(){window.location.href=pwaforwp_js_obj.prev_post_url},300)):d<0&&pwaforwp_js_obj.next_post_url&&(a.style.opacity="1",setTimeout(function(){window.location.href=pwaforwp_js_obj.next_post_url},300))})}),window.addEventListener("load",function(){let e="undefined"!=typeof pwaforwp_js_obj&&pwaforwp_js_obj.pwa_manifest_name?pwaforwp_js_obj.pwa_manifest_name:"pwa-manifest.json";if(document.querySelectorAll('link[rel="manifest"]').forEach(e=>e.remove()),"1"==pwaforwp_js_obj.is_desplay){const t=document.createElement("link");t.rel="manifest";let o="undefined"!=typeof pwaforwp_js_obj&&pwaforwp_js_obj.pwa_home_url?pwaforwp_js_obj.pwa_home_url:"/";t.href=o+e,document.head.appendChild(t)}}),document.addEventListener("click",function(e){const t=e.target.closest("a");if(!t||void 0===pwaforwp_js_obj.visibility_excludes||!pwaforwp_js_obj.visibility_excludes.length)return;if(e.defaultPrevented||e.ctrlKey||e.metaKey||e.shiftKey||0!==e.button)return;const o=pwaforwp_js_obj.visibility_excludes.map(e=>((e=e.trim()).startsWith("/")||(e="/"+e),e.replace(/\/+$/,"")));let a;try{a=new URL(t.href,window.location.href)}catch(e){return}if(!pwaforwp_is_standalone_pwa())return;const n=a.pathname.replace(/\/+$/,"");o.some(e=>n===e||n.startsWith(e+"/"))&&(e.preventDefault(),window.open(t.href,"_blank","noopener,noreferrer"))}),function(){if("undefined"==typeof pwaforwp_js_obj||!pwaforwp_js_obj.utm_enabled||1!=
564pwaforwp_js_obj.utm_enabled)return;if(!pwaforwp_is_standalone_pwa())return;const e=pwaforwp_js_obj.utm_details||{};function t(){document.querySelectorAll("a[href]").forEach(function(t){const o=t.getAttribute("href");if(o)try{const a=new URL(o,window.location.origin),n=new URL(window.location.origin);if(a.origin===n.origin){const a=function(t){if(!t||"string"!=typeof t)return t;try{const o=new URL(t,window.location.origin);let a=!1;for(const t in e)if(o.searchParams.has(t)){a=!0;break}if(!a)for(const t in e)e[t]&&o.searchParams.set(t,e[t]);return o.toString()}catch(e){return t}}(o);a!==o&&t.setAttribute("href",a)}}catch(e){}})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",t):t()}();; 565setTimeout(()=>{if((window.matchMedia("(display-mode: standalone)").matches||window.matchMedia("(display-mode: fullscreen)").matches||window.matchMedia("(display-mode: minimal-ui)").matches)&&!navigator.onLine){var e;Array.from(document.getElementsByTagName("video")).forEach(function(e){console.log("Each Loop",e);var a,t,i,o=e.src;console.log(o),!0==(a=o,"mp4"===(t=a,i=t.split("."),i[i.length-1]).toLowerCase())&&(e.setAttribute("src",""),e.parentElement.append("<p>MP4 video is not supported in service worker app</p>"))})}},1e3);; 566setTimeout((()=>{(window.matchMedia("(display-mode: standalone)").matches||window.matchMedia("(display-mode: fullscreen)").matches||window.matchMedia("(display-mode: minimal-ui)").matches)&&document.addEventListener("click",(function(e){const o=e.target.closest("a");if(!o)return;const t=o.getAttribute("download"),n=o.getAttribute("href");if(!t||!n)return;e.preventDefault();const d=new XMLHttpRequest;d.open("GET",n,!0),d.responseType="blob",d.onload=function(){if(200===d.status){const e=d.response,o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(o)}else console.error(`Failed to download file. Status: ${d.status}`)},d.onerror=function(){console.error("Download failed due to a network error.")},d.send()}))}),1e3),document.addEventListener("DOMContentLoaded",(function(){if(pwaforwp_download_js_obj&&pwaforwp_download_js_obj.hasOwnProperty("force_rememberme")&&1==pwaforwp_download_js_obj.force_rememberme){var e=document.getElementById("rememberme"),o=document.querySelector('[name="rememberme"]');e&&(e.checked=!0),o&&(o.checked=!0)}}));;
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.