PageSourceSearch

https://www.orchardortho.com/application/files/cache/js/01940d8ad74c9fe6c4afdd29f1f2bdf8bb9e865f.js

js orchardortho.com collected 2026-10-04 13:25:24 UTC 48,759 bytes, 654 lines download raw bytes

1/**
2 * Popup Alert JavaScript
3 * Reads settings from window.popupAlertSettings and displays popup
4 */
5
6(function() {
7    'use strict';
8
9    // Check if settings exist
10    if (typeof window.popupAlertSettings === 'undefined' || !window.popupAlertSettings.popup) {
11        return;
12    }
13
14    var config = window.popupAlertSettings.popup;
15
16    // Configuration
17    var CONFIG = {
18        autoShowDelay: 500, // Half a second after page load
19        animationDuration: 500
20    };
21
22    // Additional CTA Classes - Edit these to add custom classes to CTAs
23    var ADDITIONAL_POPUP_CTA_CLASSES = ''; // Additional classes for popup CTA button (e.g., 'btn-primary btn-large')
24    var ADDITIONAL_HERO_CTA_CLASSES = ''; // Additional classes for hero CTA button (e.g., 'btn-primary btn-large')
25
26    // Hero CTA Text Override - Set this to use different text on the hero button
27    // Leave as empty string '' to use the popup's CTA text instead
28    var HERO_CTA_TEXT_OVERRIDE = '';
29
30    // Check if current page is the home page
31    function isHomePage() {
32        // Method 1: Check pathname is root (works for most sites)
33        var pathname = window.location.pathname;
34        var cleanPath = pathname.replace(/\/$/, '') || '/';
35        if (cleanPath === '/') {
36            return true;
37        }
38
39        // Method 2: Check body or html for home-related classes (fallback)
40        // Covers: WordPress (page-template-home, home, front-page),
41        //         Concrete CMS (ccm-page-id-1, page_1),
42        //         generic (page-home)
43        var htmlClasses = document.documentElement.className || '';
44        var bodyClasses = document.body ? (document.body.className || '') : '';
45        var combined = ' ' + htmlClasses + ' ' + bodyClasses + ' ';
46
47        var homeIndicators = [
48            /\bpage-template-home\b/i,
49            /\bfront-page\b/i,
50            /\bpage-home\b/i,
51            /\bccm-page-id-1\b/i,   // Concrete CMS home page
52            /\bpage_1\b/i,           // Concrete CMS home page alt
53            /\s+home\s+/i            // generic "home" as standalone class
54        ];
55
56        for (var i = 0; i < homeIndicators.length; i++) {
57            if (homeIndicators[i].test(combined)) {
58                return true;
59            }
60        }
61
62        return false;
63    }
64
65    // Check if popup should be shown
66    function shouldShowPopup() {
67        console.log('Popup Alert: Checking if should show popup...');
68
69        // Check if enabled
70        if (!config.enabled) {
71            console.log('Popup Alert: Popup is disabled');
72            return false;
73        }
74        console.log('Popup Alert: Popup is enabled');
75
76        // Only show on home page
77        if (!isHomePage()) {
78            console.log('Popup Alert: Not on home page, pathname:', window.location.pathname);
79            return false;
80        }
81        console.log('Popup Alert: On home page, will check other conditions');
82
83        // Check date range
84        var now = new Date();
85        console.log('Popup Alert: Current date:', now);
86
87        // Check start date - if set, must be today or in the past
88        if (config.start_date) {
89            var startDate = new Date(config.start_date);
90            startDate.setHours(0, 0, 0, 0); // Start of day
91            var today = new Date();
92            today.setHours(0, 0, 0, 0);
93            console.log('Popup Alert: Start date:', startDate);
94            if (today < startDate) {
95                console.log('Popup Alert: Not started yet');
96                return false; // Not started yet
97            }
98        }
99
100        // Check end date - if set, must be today or in the future
101        if (config.end_date) {
102            var endDate = new Date(config.end_date);
103            endDate.setHours(23, 59, 59, 999); // End of day
104            var nowTime = new Date().getTime();
105            console.log('Popup Alert: End date:', endDate);
106            console.log('Popup Alert: Current time:', nowTime);
107            console.log('Popup Alert: End time:', endDate.getTime());
108            if (nowTime > endDate.getTime()) {
109                console.log('Popup Alert: Already ended - will not show');
110                return false; // Already ended
111            }
112        }
113
114        console.log('Popup Alert: All checks passed, popup should show');
115        return true;
116    }
117
118    // Create and inject popup HTML
119    function createPopup() {
120        console.log('Popup Alert: Creating popup HTML...');
121
122        // Create overlay
123        var overlay = document.createElement('div');
124        overlay.className = 'popup-overlay';
125        overlay.id = 'popup-overlay';
126
127        // Create popup container
128        var container = document.createElement('div');
129        container.className = 'popup-container';
130        container.id = 'popup-container';
131
132        // Create close button
133        var closeBtn = document.createElement('button');
134        closeBtn.className = 'popup-close';
135        closeBtn.id = 'popup-close';
136        closeBtn.setAttribute('aria-label', 'Close popup');
137        closeBtn.innerHTML = '<span>&times;</span>';
138
139        // Create content wrapper
140        var content = document.createElement('div');
141        content.className = 'popup-content';
142
143        // Add image if exists
144        if (config.img_url) {
145            var imageDiv = document.createElement('div');
146            imageDiv.className = 'popup-image';
147            var img = document.createElement('img');
148            img.src = config.img_url;
149            img.alt = config.img_alt || '';
150            if (config.img_width) img.width = config.img_width;
151            if (config.img_height) img.height = config.img_height;
152            imageDiv.appendChild(img);
153            content.appendChild(imageDiv);
154        }
155
156        // Add heading and description
157        if (config.heading || config.description) {
158            var textDiv = document.createElement('div');
159
160            if (config.heading) {
161                var h2 = document.createElement('h2');
162                h2.textContent = config.heading;
163                textDiv.appendChild(h2);
164            }
165
166            if (config.description) {
167                // Security: Use DOMParser to safely parse HTML and prevent XSS
168                var parser = new DOMParser();
169                var doc = parser.parseFromString(config.description, 'text/html');
170                var bodyContent = doc.body;
171                while (bodyContent.firstChild) {
172                    textDiv.appendChild(bodyContent.firstChild);
173                }
174            }
175
176            content.appendChild(textDiv);
177        }
178
179        // Add CTA if exists
180        if (config.cta_link) {
181            var ctaDiv = document.createElement('div');
182            ctaDiv.className = 'popup-cta';
183            var ctaLink = document.createElement('a');
184            ctaLink.href = config.cta_link;
185            ctaLink.className = 'btn' + (ADDITIONAL_POPUP_CTA_CLASSES ? ' ' + ADDITIONAL_POPUP_CTA_CLASSES : '');
186            var ctaSpan = document.createElement('span');
187            ctaSpan.textContent = config.cta_text || config.cta_name || 'Learn More';
188            ctaLink.appendChild(ctaSpan);
189            ctaDiv.appendChild(ctaLink);
190            content.appendChild(ctaDiv);
191        }
192
193        // Assemble popup
194        container.appendChild(closeBtn);
195        container.appendChild(content);
196        overlay.appendChild(container);
197
198        // Inject before closing </main> tag, or fallback to body
199        var mainElement = document.querySelector('main');
200        if (mainElement) {
201            mainElement.appendChild(overlay);
202        } else {
203            document.body.appendChild(overlay);
204        }
205
206        return {
207            overlay: overlay,
208            container: container,
209            closeBtn: closeBtn
210        };
211    }
212
213    // Helper: check if an element's class list contains a token matching "xs"
214    // Only flags actual word-boundary matches like "xs_something", "something-xs", "xs"
215    // Does NOT flag substrings like "exposed", "boxshadow", "fixsubmenu"
216    function classHasXsToken(className) {
217        if (!className) return false;
218        // Split by whitespace and check each class name
219        var classes = className.split(/\s+/);
220        for (var i = 0; i < classes.length; i++) {
221            var cls = classes[i];
222            // Match class names that start with "xs", end with "xs", contain "_xs_" or "-xs-",
223            // or are exactly "xs"
224            if (/^xs[_-]|[_-]xs$|[_-]xs[_-]|^xs$/i.test(cls)) {
225                return true;
226            }
227        }
228        return false;
229    }
230
231    // Inject popup CTA into hero section (if on home page)
232    function injectHeroCTA() {
233        // Check if already injected (prevent duplicate injections)
234        if (document.querySelector('.popup-hero-cta-injected')) {
235            console.log('Popup Alert: Hero CTA already injected, skipping');
236            return;
237        }
238
239        // Check if on home page (using same logic as popup display)
240        if (!isHomePage()) {
241            console.log('Popup Alert: Not home page, skipping hero CTA injection');
242            return;
243        }
244
245        // Check if popup has CTA configured
246        if (!config.cta_link) {
247            console.log('Popup Alert: No CTA link configured, skipping hero injection');
248            return;
249        }
250
251        // Find hero element - look for any element with "hero" in class
252        var heroElements = document.querySelectorAll('[class*="hero"]');
253        console.log('Popup Alert: Searching for elements with "hero" in class, found:', heroElements.length);
254
255        if (heroElements.length === 0) {
256            console.log('Popup Alert: No hero element found');
257            return;
258        }
259
260        var heroElement = null;
261        var headerElement = document.querySelector('.header, header');
262
263        // Filter hero elements - skip ones with "xs" token or inside header
264        for (var i = 0; i < heroElements.length; i++) {
265            var elem = heroElements[i];
266            var className = elem.className || '';
267
268            // Skip if class has an "xs" token (sticky mobile buttons, etc.)
269            if (classHasXsToken(className)) {
270                console.log('Popup Alert: Skipping element (has "xs" token):', elem, 'Classes:', className);
271                continue;
272            }
273
274            // Skip if element is inside .header or <header>
275            if (headerElement && headerElement.contains(elem)) {
276                console.log('Popup Alert: Skipping element (inside header):', elem);
277                continue;
278            }
279
280            // Found valid hero element
281            heroElement = elem;
282            console.log('Popup Alert: Selected hero element:', heroElement);
283            console.log('Popup Alert: Hero element classes:', heroElement.className);
284            break;
285        }
286
287        if (!heroElement) {
288            console.log('Popup Alert: No valid hero element found');
289            return;
290        }
291
292        // Find all <a> tags with class "btn" within the hero
293        // Use [class*="btn"] selector to also catch "btn btn-lg" etc.,
294        // then filter to actual btn class
295        var allLinks = heroElement.querySelectorAll('a');
296        var existingBtns = [];
297        for (var j = 0; j < allLinks.length; j++) {
298            var link = allLinks[j];
299            // Check if it has "btn" as a class token (not substring)
300            if (link.classList && link.classList.contains('btn')) {
301                existingBtns.push(link);
302            }
303        }
304
305        if (existingBtns.length === 0) {
306            console.log('Popup Alert: No existing buttons (a.btn) found in hero');
307            return;
308        }
309
310        console.log('Popup Alert: Found', existingBtns.length, 'existing button(s) in hero');
311
312        // Inject popup CTA after each existing button
313        existingBtns.forEach(function(existingBtn, index) {
314            var existingClasses = existingBtn.className;
315            console.log('Popup Alert: Existing button', index + 1, 'classes:', existingClasses);
316
317            // Create wrapper div
318            var wrapperDiv = document.createElement('div');
319            wrapperDiv.className = 'popup-hero-cta-wrapper';
320            wrapperDiv.style.marginTop = '15px';
321
322            // Create new CTA link with same classes as existing button
323            var newCtaLink = document.createElement('a');
324            newCtaLink.href = config.cta_link;
325            newCtaLink.className = existingClasses + ' popup-hero-cta-injected' + (ADDITIONAL_HERO_CTA_CLASSES ? ' ' + ADDITIONAL_HERO_CTA_CLASSES : '');
326            var heroCtaSpan = document.createElement('span');
327            // Use hero-specific text if provided, otherwise fall back to popup CTA text
328            var heroCtaText = HERO_CTA_TEXT_OVERRIDE || config.hero_cta_text || config.cta_text || config.cta_name || 'Learn More';
329            heroCtaSpan.textContent = heroCtaText;
330            newCtaLink.setAttribute('title', heroCtaText);
331            newCtaLink.appendChild(heroCtaSpan);
332
333            wrapperDiv.appendChild(newCtaLink);
334
335            if (existingBtn.parentNode) {
336                existingBtn.parentNode.insertBefore(wrapperDiv, existingBtn.nextSibling);
337                console.log('Popup Alert: Successfully injected CTA after button', index + 1);
338            } else {
339                console.error('Popup Alert: Could not find parent node for button', index + 1);
340            }
341        });
342    }
343
344    // Show Popup
345    function showPopup() {
346        console.log('Popup Alert: showPopup() called');
347        var popup = createPopup();
348        if (!popup || !popup.overlay) {
349            console.error('Popup Alert: Failed to create popup element');
350            return;
351        }
352        console.log('Popup Alert: Popup created, showing...');
353        var overlay = popup.overlay;
354        var container = popup.container;
355        var closeBtn = popup.closeBtn;
356
357        container.classList.remove('slide-in');
358        overlay.style.display = 'block';
359
360        void overlay.offsetWidth;
361        void container.offsetWidth;
362
363        requestAnimationFrame(function() {
364            overlay.classList.add('active');
365            setTimeout(function() {
366                container.classList.add('slide-in');
367            }, 100);
368        });
369
370        document.body.style.overflow = 'hidden';
371
372        closeBtn.addEventListener('click', function(e) {
373            e.preventDefault();
374            hidePopup(overlay, container);
375        });
376
377        overlay.addEventListener('click', function(e) {
378            if (e.target === overlay) {
379                hidePopup(overlay, container);
380            }
381        });
382
383        var escHandler = function(e) {
384            if (e.key === 'Escape' && overlay.classList.contains('active')) {
385                hidePopup(overlay, container);
386                document.removeEventListener('keydown', escHandler);
387            }
388        };
389        document.addEventListener('keydown', escHandler);
390    }
391
392    // Hide Popup
393    function hidePopup(overlay, container) {
394        container.classList.remove('slide-in');
395
396        setTimeout(function() {
397            overlay.classList.remove('active');
398            setTimeout(function() {
399                overlay.style.display = 'none';
400                overlay.remove();
401            }, 300);
402            document.body.style.overflow = '';
403        }, CONFIG.animationDuration);
404    }
405
406    // Auto-show popup on page load
407    function initAutoShow() {
408        console.log('Popup Alert: Initializing auto-show...');
409
410        // Always try to inject hero CTA on home page (independent of popup display timing)
411        // Use a small delay to ensure DOM is fully ready
412        if (isHomePage() && config.enabled && config.cta_link) {
413            setTimeout(function() {
414                injectHeroCTA();
415            }, 100);
416        }
417
418        if (shouldShowPopup()) {
419            console.log('Popup Alert: Will show popup in', CONFIG.autoShowDelay, 'ms');
420            setTimeout(function() {
421                console.log('Popup Alert: Showing popup now');
422                showPopup();
423            }, CONFIG.autoShowDelay);
424        } else {
425            console.log('Popup Alert: Popup will not be shown');
426        }
427    }
428
429    // Initialize on DOM ready
430    if (document.readyState === 'loading') {
431        document.addEventListener('DOMContentLoaded', initAutoShow);
432    } else {
433        initAutoShow();
434    }
435
436    // Debug logging
437    console.log('Popup Alert: Script loaded');
438    console.log('Popup Alert: Settings available?', typeof window.popupAlertSettings !== 'undefined');
439    if (typeof window.popupAlertSettings !== 'undefined') {
440        console.log('Popup Alert: Popup enabled?', config.enabled);
441        console.log('Popup Alert: Full settings:', window.popupAlertSettings);
442    }
443
444})();;
445
446/**
447 * Alert Bar JavaScript
448 * Reads settings from window.popupAlertSettings and displays alert bar above header
449 */
450
451(function() {
452    'use strict';
453
454    // Check if settings exist
455    if (typeof window.popupAlertSettings === 'undefined' || !window.popupAlertSettings.alert_bar) {
456        return;
457    }
458
459    var config = window.popupAlertSettings.alert_bar;
460
461    // Configuration
462    var CONFIG = {
463        animationDuration: 300
464    };
465
466    // Additional CTA Classes - Edit these to add custom classes to CTAs
467    var ADDITIONAL_ALERT_BAR_CTA_CLASSES = ''; // Additional classes for alert bar CTA button (e.g., 'btn-primary btn-large')
468
469    // Check if alert bar should be shown
470    function shouldShowAlertBar() {
471        // Check if enabled
472        if (!config.enabled) {
473            return false;
474        }
475
476        // Check date range
477        var now = new Date();
478        
479        // Check start date - if set, must be today or in the past
480        if (config.start_date) {
481            var startDate = new Date(config.start_date);
482            startDate.setHours(0, 0, 0, 0); // Start of day
483            var today = new Date();
484            today.setHours(0, 0, 0, 0);
485            if (today < startDate) {
486                return false; // Not started yet
487            }
488        }
489
490        // Check end date - if set, must be today or in the future
491        if (config.end_date) {
492            var endDate = new Date(config.end_date);
493            endDate.setHours(23, 59, 59, 999); // End of day
494            var nowTime = now.getTime();
495            if (nowTime >
495 endDate.getTime()) {
496                return false; // Already ended - IMPORTANT: This prevents display after end date
497            }
498        }
499
500        return true;
501    }
502
503    // Smart positioning - inject as first child inside header element
504    function positionAlertBar(alertBar) {
505        var header = document.querySelector('.header');
506        var body = document.body;
507
508        if (header) {
509            // Insert as first child inside the header element
510            if (header.firstChild) {
511                header.insertBefore(alertBar, header.firstChild);
512            } else {
513                header.appendChild(alertBar);
514            }
515        } else {
516            // Fallback: top of body
517            body.insertBefore(alertBar, body.firstChild);
518        }
519
520        // Add class to body to indicate alert bar is present (CSS will handle spacing)
521        if (header) {
522            document.body.classList.add('alert-bar-active');
523        }
524    }
525
526    // Create and inject alert bar HTML
527    function createAlertBar() {
528        // Create alert bar element
529        var alertBar = document.createElement('div');
530        alertBar.className = 'alert-bar';
531        alertBar.id = 'alert-bar';
532        alertBar.style.backgroundColor = config.bg_color || '#4A90E2';
533        alertBar.style.color = config.text_color || '#FFFFFF';
534
535        // Create content wrapper
536        var content = document.createElement('div');
537        content.className = 'alert-bar-content';
538
539        // Create text container with inline CTA
540        var textContainer = document.createElement('div');
541        textContainer.className = 'alert-bar-text';
542        
543        // Add text
544        if (config.text) {
545            textContainer.textContent = config.text;
546        }
547        
548        // Add CTA inline if exists
549        if (config.cta_link) {
550            var ctaLink = document.createElement('a');
551            ctaLink.href = config.cta_link;
552            // Add base btn class and additional classes if defined
553            ctaLink.className = 'btn' + (ADDITIONAL_ALERT_BAR_CTA_CLASSES ? ' ' + ADDITIONAL_ALERT_BAR_CTA_CLASSES : '');
554            // Wrap CTA text in span element
555            var ctaSpan = document.createElement('span');
556            ctaSpan.textContent = config.cta_text || config.cta_name || 'Learn More';
557            ctaLink.appendChild(ctaSpan);
558            textContainer.appendChild(ctaLink);
559        }
560        
561        content.appendChild(textContainer);
562
563        // Create close button
564        var closeBtn = document.createElement('button');
565        closeBtn.className = 'alert-bar-close';
566        closeBtn.setAttribute('aria-label', 'Close alert bar');
567        closeBtn.innerHTML = '&times;';
568        content.appendChild(closeBtn);
569
570        // Assemble alert bar
571        alertBar.appendChild(content);
572
573        return alertBar;
574    }
575
576    // Show Alert Bar
577    function showAlertBar() {
578        var alertBar = createAlertBar();
579
580        // Position it
581        positionAlertBar(alertBar);
582
583        // Start hidden (above viewport)
584        alertBar.style.transform = 'translateY(-100%)';
585        alertBar.style.display = 'block';
586
587        // Force reflow
588        void alertBar.offsetWidth;
589
590        // Slide down animation
591        requestAnimationFrame(function() {
592            alertBar.classList.add('slide-down');
593            alertBar.style.transform = 'translateY(0)';
594        });
595
596        // Close button handler
597        var closeBtn = alertBar.querySelector('.alert-bar-close');
598        if (closeBtn) {
599            closeBtn.addEventListener('click', function(e) {
600                e.preventDefault();
601                // No cookie - alert bar will show again on next visit
602                hideAlertBar(alertBar);
603            });
604        }
605
606        return alertBar;
607    }
608
609    // Hide Alert Bar
610    function hideAlertBar(alertBar) {
611        // Slide up animation
612        alertBar.style.transform = 'translateY(-100%)';
613        alertBar.classList.remove('slide-down');
614
615        setTimeout(function() {
616            alertBar.style.display = 'none';
617            
618            // Remove alert bar active class (CSS will restore header spacing)
619            document.body.classList.remove('alert-bar-active');
620
621            // Remove from DOM
622            alertBar.remove();
623        }, CONFIG.animationDuration);
624    }
625
626    // Initialize on DOM ready
627    function init() {
628        if (shouldShowAlertBar()) {
629            // Wait a bit for page to load
630            setTimeout(function() {
631                showAlertBar();
632            }, 100);
633        }
634    }
635
636    if (document.readyState === 'loading') {
637        document.addEventListener('DOMContentLoaded', init);
638    } else {
639        init();
640    }
641
642})();
643;
644
645(()=>{var e={1107:()=>{$("[data-gallery-lightbox=true]").magnificPopup({type:"image",gallery:{enabled:!0},image:{titleSrc:function(e){var t=$("<div />"),n=e.el.attr("data-caption");t.append(n);var i=e.el.attr("data-download-link");if(i.length){var a=$("<a></a>");a.attr("href",i),a.attr("target","_blank"),a.attr("class","ms-2"),a.html("Download"),t.append(a)}return t.html()}}})},1424:()=>{$("a[data-concrete-link-lightbox=image],a[data-concrete5-link-lightbox=image]").each((function(){$(this).magnificPopup({type:"image",removalDelay:500,callbacks:{beforeOpen:function(){this.st.image.markup=this.st.image.markup.replace("mfp-figure","mfp-figure mfp-with-anim"),this.st.mainClass="mfp-zoom-in"}},closeOnContentClick:!0,midClick:!0})})),$("a[data-concrete-link-lightbox=iframe],a[data-concrete5-link-lightbox=iframe]").each((function(){var e=$
645(this),t=500,n=400;$(this).attr("data-concrete-link-lightbox-width")&&$(this).attr("data-concrete-link-lightbox-height")?(t=$(this).attr("data-concrete-link-lightbox-width"),n=$(this).attr("data-concrete-link-lightbox-height")):$(this).attr("data-concrete5-link-lightbox-width")&&$(this).attr("data-concrete5-link-lightbox-height")&&(t=$(this).attr("data-concrete5-link-lightbox-width"),n=$(this).attr("data-concrete5-link-lightbox-height")),e.magnificPopup({type:"iframe",callbacks:{beforeOpen:function(){this.st.iframe.markup=this.st.iframe.markup.replace("mfp-figure","mfp-figure mfp-with-anim"),this.st.mainClass="mfp-zoom-in";var e=$.magnificPopup.instance;$(e.contentContainer).css("maxWidth",t+"px").css("maxHeight",n+"px")}},iframe:{patterns:{website:{index:"",src:"%id%"}}},closeOnContentClick:!0,midClick:!0})}))},7634:()=>{
646/*! ResponsiveSlides.js v1.55
647 * http://responsiveslides.com
648 * http://viljamis.com
649 *
650 * Copyright (c) 2011-2012 @viljamis
651 * Available under the MIT license
652 */
653!function(e,t,n){e.fn.responsiveSlides=function(i){var a=e.extend({auto:!0,speed:500,timeout:4e3,pager:!1,nav:!1,random:!1,pause:!1,pauseControls:!0,prevText:"Previous",nextText:"Next",maxwidth:"",navContainer:"",manualControls:"",namespace:"rslides",before:e.noop,after:e.noop},i);return this.each((function(){n++;var o,r,s,l,c,d,u=e(this),p=0,f=u.children(),m=f.length,g=parseFloat(a.speed),h=parseFloat(a.timeout),v=parseFloat(a.maxwidth),C=a.namespace,y=C+n,b=C+"_nav "+y+"_nav",w=C+"_here",x=y+"_on",k=y+"_s",I=e("<ul class='"+C+"_tabs "+y+"_tabs' />"),_={float:"left",position:"relative",opacity:1,zIndex:2},T={float:"none",position:"absolute",opacity:0,zIndex:1},P=function(){var e,t=(document.body||document.documentElement).style,n="transition";if("string"==typeof t[n])return!0;for(o=["Moz","Webkit","Khtml","O","ms"],n=n.charAt(0).toUpperCase()+n.substr(1),e=0;e<o.length;e++)if("string"==typeof t[o[e]+n])return!0;return!1}(),S=function(t){a.before(t),P?(f.removeClass(x).css(T).eq(t).addClass(x).css(_),p=t,setTimeout((function(){a.after(t)}),g)):f.stop().fadeOut(g,(function(){e(this).removeClass(x).css(T).css("opacity",1)})).eq(t).fadeIn(g,(function(){e(this).addClass(x).css(_),a.after(t),p=t}))};if(a.random&&(f.sort((function(){return Math.round(Math.random())-.5})),u.empty().append(f)),f.each((function(e){this.id=k+e})),u.addClass(C+" "+y),i&&i.maxwidth&&u.css("max-width",v),f.hide().css(T).eq(0).addClass(x).css(_).show(),P&&f.show().css({"-webkit-transition":"opacity "+g+"ms ease-in-out","-moz-transition":"opacity "+g+"ms ease-in-out","-o-transition":"opacity "+g+"ms ease-in-out",transition:"opacity "+g+"ms ease-in-out"}),f.length>1){if(h<g+100)return;if(a.pager&&!a.manualControls){var O=[];f.each((function(e){var t=e+1;O+="<li><a href='#' class='"+k+t+"'>"+t+"</a></li>"})),I.append(O),i.navContainer?e(a.navContainer).append(I):u.after(I)}if(a.manualControls&&(I=e(a.manualControls)).addClass(C+"_tabs "+y+"_tabs"),(a.pager||a.manualControls)&&I.find("li").each((function(t){e(this).addClass(k+(t+1))})),(a.pager||a.manualControls)&&(d=I.find("a"),r=function(e){d.closest("li").removeClass(w).eq(e).addClass(w)}),a.auto&&(s=function(){c=setInterval((function(){f.stop(!0,!0);var e=p+1<m?p+1:0;(a.pager||a.manualControls)&&r(e),S(e)}),h)})(),l=function(){a.auto&&(clearInterval(c),s())},a.pause&&u.hover((function(){clearInterval(c)}),(function(){l()})),(a.pager||a.manualControls)&&(d.bind("click",(function(t){t.preventDefault(),a.pauseControls||l();var n=d.index(this);p===n||e("."+x).queue("fx").length||(r(n),S(n))})).eq(0).closest("li").addClass(w),a.pauseControls&&d.hover((function(){clearInterval(c)}),(function(){l()}))),a.nav){var z="<a href='#' class='"+b+" prev'>"+a.prevText+"</a><a href='#' class='"+b+" next'>"+a.nextText+"</a>";i.navContainer?e(a.navContainer).append(z):u.after(z);var E=e("."+y+"_nav"),M=E.filter(".prev");E.bind("click",(function(t){t.preventDefault();var n=e("."+x);if(!n.queue("fx").length){var i=f.index(n),o=i-1,s=i+1<m?p+1:0;S(e(this)[0]===M[0]?o:s),(a.pager||a.manualControls)&&r(e(this)[0]===M[0]?o:s),a.pauseControls||l()}})),a.pauseControls&&E.hover((function(){clearInterval(c)}),(function(){l()}))}}if(void 0===document.body.style.maxWidth&&i.maxwidth){var B=function(){u.css("width","100%"),u.width()>v&&u.css("width",v)};B(),e(t).bind("resize",(function(){B()}))}}))}}(jQuery,window,0)},101:(e,t,n)=>{var i,a,o;a=[n(1669)],i=function(e){var t,n,i,a,o,r,s="Close",l="BeforeClose",c="AfterClose",d="BeforeAppend",u="MarkupParse",p="Open",f="Change",m="mfp",g="."+m,h="mfp-ready",v="mfp-removing",C="mfp-prevent-close",y=function(){},b=!!window.jQuery,w=e(window),x=function(e,n){t.ev.on(m+e+g,n)},k=function(t,n,i,a){var o=document.createElement("div");return o.className="mfp-"+t,i&&(o.innerHTML=i),a?n&&n.appendChild(o):(o=e(o
653),n&&o.appendTo(n)),o},I=function(n,i){t.ev.triggerHandler(m+n,i),t.st.callbacks&&(n=n.charAt(0).toLowerCase()+n.slice(1),t.st.callbacks[n]&&t.st.callbacks[n].apply(t,e.isArray(i)?i:[i]))},_=function(n){return n===r&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),r=n),t.currTemplate.closeBtn},T=function(){e.magnificPopup.instance||((t=new y).init(),e.magnificPopup.instance=t)},P=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1};y.prototype={constructor:y,init:function(){var n=navigator.appVersion;t.isLowIE=t.isIE8=document.all&&!document.addEventListener,t.isAndroid=/android/gi.test(n),t.isIOS=/iphone|ipad|ipod/gi.test(n),t.supportsTransition=P(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),i=e(document),t.popupsCache={}},open:function(n){var a;if(!1===n.isObj){t.items=n.items.toArray(),t.index=0;var r,s=n.items;for(a=0;a<s.length;a++)if((r=s[a]).parsed&&(r=r.el[0]),r===n.el[0]){t.index=a;break}}else t.items=e.isArray(n.items)?n.items:[n.items],t.index=n.index||0;if(!t.isOpen){t.types=[],o="",n.mainEl&&n.mainEl.length?t.ev=n.mainEl.eq(0):t.ev=i,n.key?(t.popupsCache[n.key]||(t.popupsCache[n.key]={}),t.currTemplate=t.popupsCache[n.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,n),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=k("bg").on("click"+g,(function(){t.close()})),t.wrap=k("wrap").attr("tabindex",-1).on("click"+g,(function(e){t._checkIfClose(e.target)&&t.close()})),t.container=k("container",t.wrap)),t.contentContainer=k("content"),t.st.preloader&&(t.preloader=k("preloader",t.container,t.st.tLoading));var l=e.magnificPopup.modules;for(a=0;a<l.length;a++){var c=l[a];c=c.charAt(0).toUpperCase()+c.slice(1),t["init"+c].call(t)}I("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(x(u,(function(e,t,n,i){n.close_replaceWith=_(i.type)})),o+=" mfp-close-btn-in"):t.wrap.append(_())),t.st.alignTop&&(o+=" mfp-align-top"),t.fixedContentPos?t.wrap.css({overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}):t.wrap.css({top:w.scrollTop(),position:"absolute"}),(!1===t.st.fixedBgPos||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:i.height(),position:"absolute"}),t.st.enableEscapeKey&&i.on("keyup"+g,(function(e){27===e.keyCode&&t.close()})),w.on("resize"+g,(function(){t.updateSize()})),t.st.closeOnContentClick||(o+=" mfp-auto-cursor"),o&&t.wrap.addClass(o);var d=t.wH=w.height(),f={};if(t.fixedContentPos&&t._hasScrollBar(d)){var m=t._getScrollbarSize();m&&(f.marginRight=m)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):f.overflow="hidden");var v=t.st.mainClass;return t.isIE7&&(v+=" mfp-ie7"),v&&t._addClassToMFP(v),t.updateItemHTML(),I("BuildControls"),e("html").css(f),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||e(document.body)),t._lastFocusedEl=document.activeElement,setTimeout((function(){t.content?(t._addClassToMFP(h),t._setFocus()):t.bgOverlay.addClass(h),i.on("focusin"+g,t._onFocusIn)}),16),t.isOpen=!0,t.updateSize(d),I(p),n}t.updateItemHTML()},close:function(){t.isOpen&&(I(l),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(v),setTimeout((function(){t._close()}),t.st.removalDelay)):t._close())},_close:function(){I(s);var n=v+" "+h+" ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(n+=t.st.mainClass+" "),t._removeClassFromMFP(n),t.fixedContentPos){var a={marginRight:""};t.isIE7?e("body, html").css("overflow",""):a.overflow="",e("html").css(a)}i.off("keyup"+g+" focusin"+g),t.ev.off(g),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&!0!==t.currTemplate[t.currItem.type]||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t.st.autoFocusLast&&t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,I(c)},updateSize:function(e){if(t.isIOS){var n=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*n;t.wrap.css("height",i),t.wH=i}else t.wH=e||w.height();t.fixedContentPos||t.wrap.css("height",t.wH),I("Resize")},updateItemHTML:function(){var n=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),n.parsed||(n=t.parseEl(t.index));var i=n.type;if(I("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=n,!t.currTemplate[i]){var o=!!t.st[i]&&t.st[i].markup;I("FirstMarkupParse",o),t.currTemplate[i]=!o||e(o)}a&&a!==n.type&&t.container.removeClass("mfp-"+a+"-holder");var r=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](n,t.currTemplate[i]);t.appendContent(r,i),n.preloaded=!0,I(f,n),a=n.type,t.container.prepend(t.contentContainer),I("AfterChange")},appendContent:function(e,n){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&!0===t.currTemplate[n]?t.content.find(".mfp-close").length||t.content.append(_()):t.content=e:t.content="",I(d),t.container.addClass("mfp-"+n+"-holder"),t.contentContainer.append(t.content)},parseEl:function(n){var i,a=t.items[n];if(a.tagName?a={el:e(a)}:(i=a.type,a={data:a,src:a.src}
653),a.el){for(var o=t.types,r=0;r<o.length;r++)if(a.el.hasClass("mfp-"+o[r])){i=o[r];break}a.src=a.el.attr("data-mfp-src"),a.src||(a.src=a.el.attr("href"))}return a.type=i||t.st.type||"inline",a.index=n,a.parsed=!0,t.items[n]=a,I("ElementParse",a),t.items[n]},addGroup:function(e,n){var i=function(i){i.mfpEl=this,t._openClick(i,e,n)};n||(n={});var a="click.magnificPopup";n.mainEl=e,n.items?(n.isObj=!0,e.off(a).on(a,i)):(n.isObj=!1,n.delegate?e.off(a).on(a,n.delegate,i):(n.items=e,e.off(a).on(a,i)))},_openClick:function(n,i,a){if((void 0!==a.midClick?a.midClick:e.magnificPopup.defaults.midClick)||!(2===n.which||n.ctrlKey||n.metaKey||n.altKey||n.shiftKey)){var o=void 0!==a.disableOn?a.disableOn:e.magnificPopup.defaults.disableOn;if(o)if(e.isFunction(o)){if(!o.call(t))return!0}else if(w.width()<o)return!0;n.type&&(n.preventDefault(),t.isOpen&&n.stopPropagation()),a.el=e(n.mfpEl),a.delegate&&(a.items=i.find(a.delegate)),t.open(a)}},updateStatus:function(e,i){if(t.preloader){n!==e&&t.container.removeClass("mfp-s-"+n),i||"loading"!==e||(i=t.st.tLoading);var a={status:e,text:i};I("UpdateStatus",a),e=a.status,i=a.text,t.preloader.html(i),t.preloader.find("a").on("click",(function(e){e.stopImmediatePropagation()})),t.container.addClass("mfp-s-"+e),n=e}},_checkIfClose:function(n){if(!e(n).hasClass(C)){var i=t.st.closeOnContentClick,a=t.st.closeOnBgClick;if(i&&a)return!0;if(!t.content||e(n).hasClass("mfp-close")||t.preloader&&n===t.preloader[0])return!0;if(n===t.content[0]||e.contains(t.content[0],n)){if(i)return!0}else if(a&&e.contains(document,n))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?i.height():document.body.scrollHeight)>(e||w.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(n){if(n.target!==t.wrap[0]&&!e.contains(t.wrap[0],n.target))return t._setFocus(),!1},_parseMarkup:function(t,n,i){var a;i.data&&(n=e.extend(i.data,n)),I(u,[t,n,i]),e.each(n,(function(n,i){if(void 0===i||!1===i)return!0;if((a=n.split("_")).length>1){var o=t.find(g+"-"+a[0]);if(o.length>0){var r=a[1];"replaceWith"===r?o[0]!==i[0]&&o.replaceWith(i):"img"===r?o.is("img")?o.attr("src",i):o.replaceWith(e("<img>").attr("src",i).attr("class",o.attr("class"))):o.attr(a[1],i)}}else t.find(g+"-"+n).html(i)}))},_getScrollbarSize:function(){if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:y.prototype,modules:[],open:function(t,n){return T(),(t=t?e.extend(!0,{},t):{}).isObj=!0,t.index=n||0,this.instance.open(t)},close:function(){return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,n){n.options&&(e.magnificPopup.defaults[t]=n.options),e.extend(this.proto,n.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},e.fn.magnificPopup=function(n){T();var i=e(this);if("string"==typeof n)if("open"===n){var a,o=b?i.data("magnificPopup"):i[0].magnificPopup,r=parseInt(arguments[1],10)||0;o.items?a=o.items[r]:(a=i,o.delegate&&(a=a.find(o.delegate)),a=a.eq(r)),t._openClick({mfpEl:a},i,o)}else t.isOpen&&t[n].apply(t,Array.prototype.slice.call(arguments,1));else n=e.extend(!0,{},n),b?i.data("magnificPopup",n):i[0].magnificPopup=n,t.addGroup(i,n);return i};var S,O,z,E="inline",M=function(){z&&(O.after(z.addClass(S)).detach(),z=null)};e.magnificPopup.registerModule(E,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){t.types.push(E),x(s+"."+E,(function(){M()}))}
653,getInline:function(n,i){if(M(),n.src){var a=t.st.inline,o=e(n.src);if(o.length){var r=o[0].parentNode;r&&r.tagName&&(O||(S=a.hiddenClass,O=k(S),S="mfp-"+S),z=o.after(O).detach().removeClass(S)),t.updateStatus("ready")}else t.updateStatus("error",a.tNotFound),o=e("<div>");return n.inlineElement=o,o}return t.updateStatus("ready"),t._parseMarkup(i,{},n),i}}});var B,F="ajax",H=function(){B&&e(document.body).removeClass(B)},L=function(){H(),t.req&&t.req.abort()};e.magnificPopup.registerModule(F,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){t.types.push(F),B=t.st.ajax.cursor,x(s+"."+F,L),x("BeforeChange."+F,L)},getAjax:function(n){B&&e(document.body).addClass(B),t.updateStatus("loading");var i=e.extend({url:n.src,success:function(i,a,o){var r={data:i,xhr:o};I("ParseAjax",r),t.appendContent(e(r.data),F),n.finished=!0,H(),t._setFocus(),setTimeout((function(){t.wrap.addClass(h)}),16),t.updateStatus("ready"),I("AjaxContentAdded")},error:function(){H(),n.finished=n.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",n.src))}},t.st.ajax.settings);return t.req=e.ajax(i),""}}});var A,j=function(n){if(n.data&&void 0!==n.data.title)return n.data.title;
653var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return i.call(t,n);if(n.el)return n.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var n=t.st.image,i=".image";t.types.push("image"),x(p+i,(function(){"image"===t.currItem.type&&n.cursor&&e(document.body).addClass(n.cursor)})),x(s+i,(function(){n.cursor&&e(document.body).removeClass(n.cursor),w.off("resize"+g)})),x("Resize"+i,t.resizeImage),t.isLowIE&&x("AfterChange",t.resizeImage)},resizeImage:function(){var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var n=0;t.isLowIE&&(n=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-n)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,A&&clearInterval(A),e.isCheckingImgSize=!1,I("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var n=0,i=e.img[0];!function a(o){A&&clearInterval(A),A=setInterval((function(){i.naturalWidth>0?t._onImageHasSize(e):(n>200&&clearInterval(A),3==++n?a(10):40===n?a(50):100===n&&a(500))}),o)}(1)},getImage:function(n,i){var a=0,o=function e(){n&&(n.img[0].complete?(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("ready")),n.hasSize=!0,n.loaded=!0,I("ImageLoadComplete")):++a<200?setTimeout(e,100):r())},r=function(){n&&(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("error",s.tError.replace("%url%",n.src))),n.hasSize=!0,n.loaded=!0,n.loadError=!0)},s=t.st.image,l=i.find(".mfp-img");if(l.length){var c=document.createElement("img");c.className="mfp-img",n.el&&n.el.find("img").length&&(c.alt=n.el.find("img").attr("alt")),n.img=e(c).on("load.mfploader",o).on("error.mfploader",r),c.src=n.src,l.is("img")&&(n.img=n.img.clone()),(c=n.img[0]).naturalWidth>0?n.hasSize=!0:c.width||(n.hasSize=!1)}return t._parseMarkup(i,{title:j(n),img_replaceWith:n.img},n),t.resizeImage(),n.hasSize?(A&&clearInterval(A),n.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",s.tError.replace("%url%",n.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),n.loading=!0,n.hasSize||(n.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(n)),i)}}});var $,W=function(){return void 0===$&&($=void 0!==document.createElement("p").style.MozTransform),$};e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,n=t.st.zoom,i=".zoom";if(n.enabled&&t.supportsTransition){var a,o,r=n.duration,c=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all "+n.duration/1e3+"s "+n.easing,a={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},o="transition";return a["-webkit-"+o]=a["-moz-"+o]=a["-o-"+o]=a[o]=i,t.css(a),t},d=function(){t.content.css("visibility","visible")};x("BuildControls"+i,(function(){if(t._allowZoom()){if(clearTimeout(a),t.content.css("visibility","hidden"),!(e=t._getItemToZoom()))return void d();(o=c(e)).css(t._getOffset()),t.wrap.append(o),a=setTimeout((function(){o.css(t._getOffset(!0)),a=setTimeout((function(){d(),setTimeout((function(){o.remove(),e=o=null,I("ZoomAnimationEnded")}),16)}),r)}),16)}})),x(l+i,(function(){if(t._allowZoom()){if(clearTimeout(a),t.st.removalDelay=r,!e){if(!(e=t._getItemToZoom()))return;o=c(e)}o.css(t._getOffset(!0)),t.wrap.append(o),t.content.css("visibility","hidden"),setTimeout((function(){o.css(t._getOffset())}),16)}})),x(s+i,(function(){t._allowZoom()&&(d(),o&&o.remove(),e=null)}))}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return!!t.currItem.hasSize&&t.currItem.img},_getOffset:function(n){var i,a=(i=n?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem)).offset(),o=parseInt(i.css("padding-top"),10),r=parseInt(i.css("padding-bottom"),10);a.top-=e(window).scrollTop()-o;var s={width:i.width(),height:(b?i.innerHeight():i[0].offsetHeight)-r-o};
653return W()?s["-moz-transform"]=s.transform="translate("+a.left+"px,"+a.top+"px)":(s.left=a.left,s.top=a.top),s}}});var N="iframe",q="//about:blank",D=function(e){if(t.currTemplate[N]){var n=t.currTemplate[N].find("iframe");n.length&&(e||(n[0].src=q),t.isIE8&&n.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(N,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(N),x("BeforeChange",(function(e,t,n){t!==n&&(t===N?D():n===N&&D(!0))})),x(s+"."+N,(function(){D()}))},getIframe:function(n,i){var a=n.src,o=t.st.iframe;e.each(o.patterns,(function(){if(a.indexOf(this.index)>-1)return this.id&&(a="string"==typeof this.id?a.substr(a.lastIndexOf(this.id)+this.id.length,a.length):this.id.call(this,a)),a=this.src.replace("%id%",a),!1}));var r={};return o.srcAction&&(r[o.srcAction]=a),t._parseMarkup(i,r,n),t.updateStatus("ready"),i}}});var K=function(e){var n=t.items.length;return e>n-1?e-n:e<0?n+e:e},R=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var n=t.st.gallery,a=".mfp-gallery";if(t.direction=!0,!n||!n.enabled)return!1;o+=" mfp-gallery",x(p+a,(function(){n.navigateByImgClick&&t.wrap.on("click"+a,".mfp-img",(function(){if(t.items.length>1)return t.next(),!1})),i.on("keydown"+a,(function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()}))}
653)),x("UpdateStatus"+a,(function(e,n){n.text&&(n.text=R(n.text,t.currItem.index,t.items.length))})),x(u+a,(function(e,i,a,o){var r=t.items.length;a.counter=r>1?R(n.tCounter,o.index,r):""})),x("BuildControls"+a,(function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var i=n.arrowMarkup,a=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(C),o=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(C);a.click((function(){t.prev()})),o.click((function(){t.next()})),t.container.append(a.add(o))}})),x(f+a,(function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout((function(){t.preloadNearbyImages(),t._preloadTimeout=null}),16)})),x(s+a,(function(){i.off(a),t.wrap.off("click"+a),t.arrowRight=t.arrowLeft=null}))},next:function(){t.direction=!0,t.index=K(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=K(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),a=Math.min(n[1],t.items.length);for(e=1;e<=(t.direction?a:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:a);e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=K(n),!t.items[n].preloaded){var i=t.items[n];i.parsed||(i=t.parseEl(n)),I("LazyLoad",i),"image"===i.type&&(i.img=e('<img class="mfp-img" />').on("load.mfploader",(function(){i.hasSize=!0})).on("error.mfploader",(function(){i.hasSize=!0,i.loadError=!0,I("LazyLoadError",i)})).attr("src",i.src)),i.preloaded=!0}}}});var Z="retina";e.magnificPopup.registerModule(Z,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,(function(e){return"@2x"+e}))},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;(n=isNaN(n)?n():n)>1&&(x("ImageHasSize."+Z,(function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})})),x("ElementParse."+Z,(function(t,i){i.src=e.replaceSrc(i,n)})))}}}}),T()},void 0===(o="function"==typeof i?i.apply(t,a):i)||(e.exports=o)},1669:e=>{"use strict";e.exports=jQuery}},t={};function n(i){var a=t[i];if(void 0!==a)return a.exports;var o=t[i]={exports:{}};return e[i](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";n(101),n(1424),n(7634),n(1107);window.$=window.jQuery=jQuery})()})();;
654

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.