{"product_id":"210366","title":"Net.Cover Preferred - 1 año para AT-x530L-28GTX","description":"\u003cbody\u003e\n\n\n  \n    \u003cmeta charset=\"utf-8\"\u003e\n    \u003cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"\u003e\n\u003cscript type=\"text\/javascript\"\u003e(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:false},ajax:{deny_list:[\"bam.nr-data.net\"]}};(window.NREUM||(NREUM={})).loader_config={xpid:\"VwYEWVJbCxAHXFJXBAkFVFw=\",licenseKey:\"NRJS-624cf1b7bf4add3973c\",applicationID:\"783538228\"};;\/*! For license information please see nr-loader-full-1.246.1.min.js.LICENSE.txt *\/\n(()=\u003e{\"use strict\";var e,t,r={234:(e,t,r)=\u003e{r.d(t,{P_:()=\u003eg,Mt:()=\u003ev,C5:()=\u003es,DL:()=\u003ex,OP:()=\u003eS,lF:()=\u003eC,Yu:()=\u003eA,Dg:()=\u003em,CX:()=\u003ec,GE:()=\u003ew,sU:()=\u003ej});var n=r(8632),i=r(9567);const a={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},o={};function s(e){if(!e)throw new Error(\"All info objects require an agent identifier!\");if(!o[e])throw new Error(\"Info for \".concat(e,\" was never set\"));return o[e]}function c(e,t){if(!e)throw new Error(\"All info objects require an agent identifier!\");o[e]=(0,i.D)(t,a),(0,n.Qy)(e,o[e],\"info\")}const d=e=\u003e{if(!e||\"string\"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(7056),l=r(50);const f=()=\u003e{const e={mask_selector:\"*\",block_selector:\"[data-nr-block]\",mask_input_options:{color:!1,date:!1,\"datetime-local\":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{feature_flags:[],proxy:{assets:void 0,beacon:void 0},privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},metrics:{enabled:!0,autoStart:!0},page_action:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1,autoStart:!0},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},harvest:{tooManyRequestsDelay:60},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,sampling_rate:50,error_sampling_rate:50,collect_fonts:!1,inline_images:!1,inline_stylesheet:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector=t+\",[data-nr-mask]\":null===t?e.mask_selector=t:(0,l.Z)(\"An invalid session_replay.mask_selector was provided and will not be used\",t)},get block_class(){return\"nr-block\"},get ignore_class(){return\"nr-ignore\"},get mask_text_class(){return\"nr-mask\"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=\",\".concat(t):\"\"!==t\u0026\u0026(0,l.Z)(\"An invalid session_replay.block_selector was provided and will not be used\",t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t\u0026\u0026\"object\"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.Z)(\"An invalid session_replay.mask_input_option was provided and will not be used\",t)}},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0}}},h={},p=\"All configuration objects require an agent identifier!\";function g(e){if(!e)throw new Error(p);if(!h[e])throw new Error(\"Configuration for \".concat(e,\" was never set\"));return h[e]}function m(e,t){if(!e)throw new Error(p);h[e]=(0,i.D)(t,f()),(0,n.Qy)(e,h[e],\"config\")}function v(e,t){if(!e)throw new Error(p);var r=g(e);if(r){for(var n=t.split(\".\"),i=0;i\u003cn.length-1;i++)if(\"object\"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}const b={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},y={};function x(e){if(!e)throw new Error(\"All loader-config objects require an agent identifier!\");if(!y[e])throw new Error(\"LoaderConfig for \".concat(e,\" was never set\"));return y[e]}function w(e,t){if(!e)throw new Error(\"All loader-config objects require an agent identifier!\");y[e]=(0,i.D)(t,b),(0,n.Qy)(e,y[e],\"loader_config\")}const A=(0,n.mF)().o;var _=r(385),E=r(6818);const T={buildEnv:E.Re,customTransaction:void 0,disabled:!1,distMethod:E.gF,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,offset:Math.floor(_._A?.performance?.timeOrigin||_._A?.performance?.timing?.navigationStart||Date.now()),onerror:void 0,origin:\"\"+_._A.location,ptid:void 0,releaseIds:{},session:void 0,xhrWrappable:\"function\"==typeof _._A.XMLHttpRequest?.prototype?.addEventListener,version:E.q4,denyList:void 0},D={};function S(e){if(!e)throw new Error(\"All runtime objects require an agent identifier!\");if(!D[e])throw new Error(\"Runtime for \".concat(e,\" was never set\"));return D[e]}function j(e,t){if(!e)throw new Error(\"All runtime objects require an agent identifier!\");D[e]=(0,i.D)(t,T),(0,n.Qy)(e,D[e],\"runtime\")}function C(e){return function(e){try{const t=s(e);return!!t.licenseKey\u0026\u0026!!t.errorBeacon\u0026\u0026!!t.applicationID}catch(e){return!1}}(e)}},9567:(e,t,r)=\u003e{r.d(t,{D:()=\u003ei});var n=r(50);function i(e,t){try{if(!e||\"object\"!=typeof e)return(0,n.Z)(\"Setting a Configurable requires an object as input\");if(!t||\"object\"!=typeof t)return(0,n.Z)(\"Setting a Configurable requires a model to set its initial properties\");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),a=0===Object.keys(r).length?e:r;for(let o in a)if(void 0!==e[o])try{Array.isArray(e[o])\u0026\u0026Array.isArray(t[o])?r[o]=Array.from(new Set([...e[o],...t[o]])):\"object\"==typeof e[o]\u0026\u0026\"object\"==typeof t[o]?r[o]=i(e[o],t[o]):r[o]=e[o]}catch(e){(0,n.Z)(\"An error occurred while setting a property of a Configurable\",e)}return r}catch(e){(0,n.Z)(\"An error occured while setting a Configurable\",e)}}},6818:(e,t,r)=\u003e{r.d(t,{Re:()=\u003ei,gF:()=\u003ea,lF:()=\u003eo,q4:()=\u003en});const n=\"1.246.1\",i=\"PROD\",a=\"CDN\",o=\"2.0.0-alpha.11\"},385:(e,t,r)=\u003e{r.d(t,{FN:()=\u003es,IF:()=\u003eu,Nk:()=\u003ef,Tt:()=\u003ec,_A:()=\u003ea,cv:()=\u003eh,iS:()=\u003eo,il:()=\u003en,ux:()=\u003ed,v6:()=\u003ei,w1:()=\u003el});const n=\"undefined\"!=typeof window\u0026\u0026!!window.document,i=\"undefined\"!=typeof WorkerGlobalScope\u0026\u0026(\"undefined\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self.navigator instanceof WorkerNavigator||\"undefined\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis.navigator instanceof WorkerNavigator),a=n?window:\"undefined\"!=typeof WorkerGlobalScope\u0026\u0026(\"undefined\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self||\"undefined\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis),o=Boolean(\"hidden\"===a?.document?.visibilityState),s=\"\"+a?.location,c=\/iPad|iPhone|iPod\/.test(a.navigator?.userAgent),d=c\u0026\u0026\"undefined\"==typeof SharedWorker,u=(()=\u003e{const e=a.navigator?.userAgent?.match(\/Firefox[\/\\s](\\d+\\.\\d+)\/);return Array.isArray(e)\u0026\u0026e.length\u003e=2?+e[1]:0})(),l=Boolean(n\u0026\u0026window.document.documentMode),f=!!a.navigator?.sendBeacon,h=Math.floor(a?.performance?.timeOrigin||a?.performance?.timing?.navigationStart||Date.now())},1117:(e,t,r)=\u003e{r.d(t,{w:()=\u003ea});var n=r(50);const i={agentIdentifier:\"\",ee:void 0};class a{constructor(e){try{if(\"object\"!=typeof e)return(0,n.Z)(\"shared context requires an object as input\");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=\u003e{let[t,r]=e;Object.keys(i).includes(t)\u0026\u0026(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)(\"An error occured while setting SharedContext\",e)}}}},8e3:(e,t,r)=\u003e{r.d(t,{L:()=\u003eu,R:()=\u003ec});var n=r(8325),i=r(1284),a=r(4322),o=r(3325);const s={};function c(e,t){const r={staged:!1,priority:o.p[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function d(e){e\u0026\u0026(s[e]||(s[e]=new Map))}function u(){let e=arguments.length\u003e0\u0026\u0026void 0!==arguments[0]?arguments[0]:\"\",t=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]?arguments[1]:\"feature\";if(d(e),!e||!s[e].get(t))return o(t);s[e].get(t).staged=!0;const r=[...s[e]];function o(t){const r=e?n.ee.get(e):n.ee,o=a.X.handlers;if(r.backlog\u0026\u0026o){var s=r.backlog[t],c=o[t];if(c){for(var d=0;s\u0026\u0026d\u003cs.length;++d)l(s[d],c);(0,i.D)(c,(function(e,t){(0,i.D)(t,(function(t,r){r[0].on(e,r[1])}))}))}delete o[t],r.backlog[t]=null,r.emit(\"drain-\"+t,[])}}r.every((e=\u003e{let[t,r]=e;return r.staged}))\u0026\u0026(r.sort(((e,t)=\u003ee[1].priority-t[1].priority)),r.forEach((t=\u003e{let[r]=t;s[e].delete(r),o(r)})))}function l(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],a=e[3],o=e[2];i.apply(a,o)}}))}},8325:(e,t,r)=\u003e{r.d(t,{A:()=\u003ec,ee:()=\u003ed});var n=r(8632),i=r(2210),a=r(234);class o{constructor(e){this.contextId=e}}var s=r(3117);const c=\"nr@context:\".concat(s.a),d=function e(t,r){var n={},s={},u={},f=!1;try{f=16===r.length\u0026\u0026(0,a.OP)(r).isolatedBacklog}catch(e){}var h={on:g,addEventListener:g,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i\u003cr.length;i++)r[i]===t\u0026\u0026r.splice(i,1)},emit:function(e,r,n,i,a){!1!==a\u0026\u0026(a=!0);if(d.aborted\u0026\u0026!i)return;t\u0026\u0026a\u0026\u0026t.emit(e,r,n);for(var o=p(n),c=m(e),u=c.length,l=0;l\u003cu;l++)c[l].apply(o,r);var f=b()[s[e]];f\u0026\u0026f.push([h,e,r,o]);return o},get:v,listeners:m,context:p,buffer:function(e,t){const r=b();if(t=t||\"feature\",h.aborted)return;Object.entries(e||{}).forEach((e=\u003e{let[n,i]=e;s[i]=t,t in r||(r[t]=[])}))},abort:l,aborted:!1,isBuffering:function(e){return!!b()[s[e]]},debugId:r,backlog:f?{}:t\u0026\u0026\"object\"==typeof t.backlog?t.backlog:{}};return h;function p(e){return e\u0026\u0026e instanceof o?e:e?(0,i.X)(e,c,(()=\u003enew o(c))):new o(c)}function g(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function v(t){return u[t]=u[t]||e(h,t)}function b(){return h.backlog}}(void 0,\"globalEE\"),u=(0,n.fP)();function l(){d.aborted=!0,d.backlog={}}u.ee||(u.ee=d)},5546:(e,t,r)=\u003e{r.d(t,{E:()=\u003en,p:()=\u003ei});var n=r(8325).ee.get(\"handle\");function i(e,t,r,i,a){a?(a.buffer([e],i),a.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=\u003e{r.d(t,{X:()=\u003ea});var n=r(5546);a.on=o;var i=a.handlers={};function a(e,t,r,a){o(a||n.E,i,e,t,r)}function o(e,t,r,i,a){a||(a=\"feature\"),e||(e=n.E);var o=t[a]=t[a]||{};(o[r]=o[r]||[]).push([e,i])}},3239:(e,t,r)=\u003e{r.d(t,{bP:()=\u003es,iz:()=\u003ec,m$:()=\u003eo});var n=r(385);let i=!1,a=!1;try{const e={get passive(){return i=!0,!1},get signal(){return a=!0,!1}};n._A.addEventListener(\"test\",null,e),n._A.removeEventListener(\"test\",null,e)}catch(e){}function o(e,t){return i||a?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length\u003e2\u0026\u0026void 0!==arguments[2]\u0026\u0026arguments[2],n=arguments.length\u003e3?arguments[3]:void 0;window.addEventListener(e,t,o(r,n))}function c(e,t){let r=arguments.length\u003e2\u0026\u0026void 0!==arguments[2]\u0026\u0026arguments[2],n=arguments.length\u003e3?arguments[3]:void 0;document.addEventListener(e,t,o(r,n))}},3117:(e,t,r)=\u003e{r.d(t,{a:()=\u003en});const n=(0,r(4402).Rl)()},4402:(e,t,r)=\u003e{r.d(t,{Ht:()=\u003ed,M:()=\u003ec,Rl:()=\u003eo,ky:()=\u003es});var n=r(385);const i=\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";function a(e,t){return e?15\u0026e[t]:16*Math.random()|0}function o(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e\u0026\u0026e.getRandomValues\u0026\u0026(t=e.getRandomValues(new Uint8Array(31))),i.split(\"\").map((e=\u003e\"x\"===e?a(t,++r).toString(16):\"y\"===e?(3\u0026a()|8).toString(16):e)).join(\"\")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t\u0026\u0026t.getRandomValues\u0026\u0026(r=t.getRandomValues(new Uint8Array(31)));const o=[];for(var s=0;s\u003ce;s++)o.push(a(r,++i).toString(16));return o.join(\"\")}function c(){return s(16)}function d(){return s(32)}},7056:(e,t,r)=\u003e{r.d(t,{Bq:()=\u003en,Hb:()=\u003ea,oD:()=\u003ei});const n=\"NRBA\",i=144e5,a=18e5},7894:(e,t,r)=\u003e{function n(){return Math.round(performance.now())}r.d(t,{z:()=\u003en})},7243:(e,t,r)=\u003e{r.d(t,{e:()=\u003ei});var n=r(385);function i(e){if(0===(e||\"\").indexOf(\"data:\"))return{protocol:\"data\"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(\":\")),sameOrigin:t.protocol===n._A?.location?.protocol\u0026\u0026t.host===n._A?.location?.host};return r.port\u0026\u0026\"\"!==r.port||(\"http:\"===t.protocol\u0026\u0026(r.port=\"80\"),\"https:\"===t.protocol\u0026\u0026(r.port=\"443\")),r.pathname\u0026\u0026\"\"!==r.pathname?r.pathname.startsWith(\"\/\")||(r.pathname=\"\/\".concat(r.pathname)):r.pathname=\"\/\",r}catch(e){return{}}}},50:(e,t,r)=\u003e{function n(e,t){\"function\"==typeof console.warn\u0026\u0026(console.warn(\"New Relic: \".concat(e)),t\u0026\u0026console.warn(t))}r.d(t,{Z:()=\u003en})},2587:(e,t,r)=\u003e{r.d(t,{N:()=\u003ec,T:()=\u003ed});var n=r(8325),i=r(5546),a=r(3325);const o={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]},s=new Set;function c(e,t){const r=n.ee.get(t);e\u0026\u0026\"object\"==typeof e\u0026\u0026(s.has(t)||Object.entries(e).forEach((e=\u003e{let[t,n]=e;o[t]?o[t].forEach((e=\u003e{n?(0,i.p)(\"feat-\"+t,[],void 0,e,r):(0,i.p)(\"block-\"+t,[],void 0,e,r),(0,i.p)(\"rumresp-\"+t,[Boolean(n)],void 0,e,r)})):n\u0026\u0026(0,i.p)(\"feat-\"+t,[],void 0,void 0,r),d[t]=Boolean(n)})),Object.keys(o).forEach((e=\u003e{void 0===d[e]\u0026\u0026(o[e]?.forEach((t=\u003e(0,i.p)(\"rumresp-\"+e,[!1],void 0,t,r))),d[e]=!1)})),s.add(t))}const d={}},2210:(e,t,r)=\u003e{r.d(t,{X:()=\u003ei});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=\u003e{r.d(t,{D:()=\u003en});const n=(e,t)=\u003eObject.entries(e||{}).map((e=\u003e{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=\u003e{r.d(t,{P:()=\u003ea});var n=r(8325);const i=()=\u003e{const e=new WeakSet;return(t,r)=\u003e{if(\"object\"==typeof r\u0026\u0026null!==r){if(e.has(r))return;e.add(r)}return r}};function a(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit(\"internal-error\",[e])}catch(e){}}}},3960:(e,t,r)=\u003e{r.d(t,{K:()=\u003eo,b:()=\u003ea});var n=r(3239);function i(){return\"undefined\"==typeof document||\"complete\"===document.readyState}function a(e,t){if(i())return e();(0,n.bP)(\"load\",e,t)}function o(e){if(i())return e();(0,n.iz)(\"DOMContentLoaded\",e)}},8632:(e,t,r)=\u003e{r.d(t,{EZ:()=\u003ed,Qy:()=\u003ec,ce:()=\u003ea,fP:()=\u003eo,gG:()=\u003eu,mF:()=\u003es});var n=r(7894),i=r(385);const a={beacon:\"bam.nr-data.net\",errorBeacon:\"bam.nr-data.net\"};function o(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic\u0026\u0026(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=o();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=o();const a=i.initializedAgents||{},s=a[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...a,[e]:{...s,[r]:t}},i}function d(e,t){o()[e]=t}function u(){return function(){let e=o();const t=e.info||{};e.info={beacon:a.beacon,errorBeacon:a.errorBeacon,...t}}(),function(){let e=o();const t=e.init||{};e.init={...t}}(),s(),function(){let e=o();const t=e.loader_config||{};e.loader_config={...t}}(),o()}},7956:(e,t,r)=\u003e{r.d(t,{N:()=\u003ei});var n=r(3239);function i(e){let t=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]\u0026\u0026arguments[1],r=arguments.length\u003e2?arguments[2]:void 0,i=arguments.length\u003e3?arguments[3]:void 0;(0,n.iz)(\"visibilitychange\",(function(){if(t)return void(\"hidden\"===document.visibilityState\u0026\u0026e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=\u003e{r.d(t,{em:()=\u003eb,u5:()=\u003eS,QU:()=\u003eP,Kf:()=\u003eI});var n=r(8325),i=r(3117);const a=\"nr@original:\".concat(i.a);var o=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,a){n||(n=\"\");const o=\"-\"===n.charAt(0);for(let s=0;s\u003ct.length;s++){const c=t[s],d=e[c];u(d)||(e[c]=r(d,o?c+n:n,i,c,a))}},r.flag=a,r;function r(t,r,n,s,c){return u(t)?t:(r||(r=\"\"),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){d([e],r)}for(var n in e)o.call(e,n)\u0026\u0026(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,u,l;try{o=this,a=[...arguments],u=\"function\"==typeof n?n(a,o):n||{}}catch(t){d([t,\"\",[a,o,s],u],e)}i(r+\"start\",[a,o,s],u,c);try{return l=t.apply(o,a)}catch(e){throw i(r+\"err\",[a,o,e],u,c),e}finally{i(r+\"end\",[a,o,l],u,c)}}}function i(r,n,i,a){if(!s||t){var o=s;s=!0;try{e.emit(r,n,i,t,a)}catch(t){d([t,r,n,i],e)}s=o}}}function d(e,t){t||(t=n.ee);try{t.emit(\"internal-error\",e)}catch(e){}}function u(e){return!(e\u0026\u0026\"function\"==typeof e\u0026\u0026e.apply\u0026\u0026!e[a])}var l=r(2210),f=r(385);const h={},p=f._A.XMLHttpRequest,g=\"addEventListener\",m=\"removeEventListener\",v=\"nr@wrapped:\".concat(n.A);function b(e){var t=function(e){return(e||n.ee).get(\"events\")}(e);if(h[t.debugId]++)return t;h[t.debugId]=1;var r=c(t,!0);function i(e){r.inPlace(e,[g,m],\"-\",a)}function a(e,t){return e[1]}return\"getPrototypeOf\"in Object\u0026\u0026(f.il\u0026\u0026y(document,i),y(f._A,i),y(p.prototype,i)),t.on(g+\"-start\",(function(e,t){var n=e[1];if(null!==n\u0026\u0026(\"function\"==typeof n||\"object\"==typeof n)){var i=(0,l.X)(n,v,(function(){var e={object:function(){if(\"function\"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,\"fn-\",null,e.name||\"anonymous\"):n}));this.wrapped=e[1]=i}})),t.on(m+\"-start\",(function(e){e[1]=this.wrapped||e[1]})),t}function y(e,t){let r=e;for(;\"object\"==typeof r\u0026\u0026!Object.prototype.hasOwnProperty.call(r,g);)r=Object.getPrototypeOf(r);for(var n=arguments.length,i=new Array(n\u003e2?n-2:0),a=2;a\u003cn;a++)i[a-2]=arguments[a];r\u0026\u0026t(r,...i)}var x=\"fetch-\",w=x+\"body-\",A=[\"arrayBuffer\",\"blob\",\"json\",\"text\",\"formData\"],_=f._A.Request,E=f._A.Response,T=\"prototype\";const D={};function S(e){const t=function(e){return(e||n.ee).get(\"fetch\")}(e);if(!(_\u0026\u0026E\u0026\u0026f._A.fetch))return t;if(D[t.debugId]++)return t;function r(e,r,i){var a=e[r];\"function\"==typeof a\u0026\u0026(e[r]=function(){var e,r=[...arguments],o={};t.emit(i+\"before-start\",[r],o),o[n.A]\u0026\u0026o[n.A].dt\u0026\u0026(e=o[n.A].dt);var s=a.apply(this,r);return t.emit(i+\"start\",[r,e],s),s.then((function(e){return t.emit(i+\"end\",[null,e],s),e}),(function(e){throw t.emit(i+\"end\",[e],s),e}))})}return D[t.debugId]=1,A.forEach((e=\u003e{r(_[T],e,w),r(E[T],e,w)})),r(f._A,\"fetch\",x),t.on(x+\"end\",(function(e,r){var n=this;if(r){var i=r.headers.get(\"content-length\");null!==i\u0026\u0026(n.rxSize=i),t.emit(x+\"done\",[null,r],n)}else t.emit(x+\"done\",[e],n)})),t}const j={},C=[\"pushState\",\"replaceState\"];function P(e){const t=function(e){return(e||n.ee).get(\"history\")}(e);return!f.il||j[t.debugId]++||(j[t.debugId]=1,c(t).inPlace(window.history,C,\"-\")),t}var O=r(3239);var R=r(50);const k={},N=[\"open\",\"send\"];function I(e){var t=e||n.ee;const r=function(e){return(e||n.ee).get(\"xhr\")}(t);if(k[r.debugId]++)return r;k[r.debugId]=1,b(t);var i=c(r),a=f._A.XMLHttpRequest,o=f._A.MutationObserver,s=f._A.Promise,d=f._A.setInterval,u=\"readystatechange\",l=[\"onload\",\"onerror\",\"onabort\",\"onloadstart\",\"onloadend\",\"onprogress\",\"ontimeout\"],h=[],p=f._A.XMLHttpRequest=function(e){const t=new a(e),n=r.context(t);try{r.emit(\"new-xhr\",[t],n),t.addEventListener(u,(o=n,function(){var e=this;e.readyState\u003e3\u0026\u0026!o.resolved\u0026\u0026(o.resolved=!0,r.emit(\"xhr-resolved\",[],e)),i.inPlace(e,l,\"fn-\",w)}),(0,O.m$)(!1))}catch(e){(0,R.Z)(\"An error occurred while intercepting XHR\",e);try{r.emit(\"internal-error\",[e])}catch(e){}}var o;return t};function g(e,t){i.inPlace(t,[\"onreadystatechange\"],\"fn-\",w)}if(function(e,t){for(var r in e)t[r]=e[r]}(a,p),p.prototype=a.prototype,i.inPlace(p.prototype,N,\"-xhr-\",w),r.on(\"send-xhr-start\",(function(e,t){g(e,t),function(e){h.push(e),o\u0026\u0026(m?m.then(x):d?d(x):(v=-v,y.data=v))}(t)})),r.on(\"open-xhr-start\",g),o){var m=s\u0026\u0026s.resolve();if(!d\u0026\u0026!s){var v=1,y=document.createTextNode(v);new o(x).observe(y,{characterData:!0})}}else t.on(\"fn-end\",(function(e){e[0]\u0026\u0026e[0].type===u||x()}));function x(){for(var e=0;e\u003ch.length;e++)g(0,h[e]);h.length\u0026\u0026(h=[])}function w(e,t){return t}return r}},7825:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.ajax},6660:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.jserrors},3081:(e,t,r)=\u003e{r.d(t,{gF:()=\u003ea,mY:()=\u003ei,t9:()=\u003en,vz:()=\u003es,xS:()=\u003eo});const n=r(3325).D.metrics,i=\"sm\",a=\"cm\",o=\"storeSupportabilityMetrics\",s=\"storeEventMetrics\"},4649:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.pageAction},7633:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.pageViewEvent},9251:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.pageViewTiming},7144:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.sessionReplay},3614:(e,t,r)=\u003e{r.d(t,{BST_RESOURCE:()=\u003ei,END:()=\u003es,FEATURE_NAME:()=\u003en,FN_END:()=\u003ed,FN_START:()=\u003ec,PUSH_STATE:()=\u003eu,RESOURCE:()=\u003ea,START:()=\u003eo});const n=r(3325).D.sessionTrace,i=\"bstResource\",a=\"resource\",o=\"-start\",s=\"-end\",c=\"fn\"+o,d=\"fn\"+s,u=\"pushState\"},5938:(e,t,r)=\u003e{r.d(t,{W:()=\u003ei});var n=r(8325);class i{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=n.ee.get(e),this.featureName=r,this.blocked=!1}}},7530:(e,t,r)=\u003e{r.d(t,{j:()=\u003eb});var n=r(3325),i=r(234),a=r(5546),o=r(8325),s=r(7894),c=r(8e3),d=r(3960),u=r(385),l=r(50),f=r(3081),h=r(8632);function p(){const e=(0,h.gG)();[\"setErrorHandler\",\"finished\",\"addToTrace\",\"addRelease\",\"addPageAction\",\"setCurrentRouteName\",\"setPageViewName\",\"setCustomAttribute\",\"interaction\",\"noticeError\",\"setUserId\",\"setApplicationVersion\",\"start\"].forEach((t=\u003e{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i\u003cr;i++)n[i]=arguments[i];return function(t){for(var r=arguments.length,n=new Array(r\u003e1?r-1:0),i=1;i\u003cr;i++)n[i-1]=arguments[i];let a=[];return Object.values(e.initializedAgents).forEach((e=\u003e{e.exposed\u0026\u0026e.api[t]\u0026\u0026a.push(e.api[t](...n))})),a.length\u003e1?a:a[0]}(t,...n)}}))}var g=r(2587);const m=e=\u003e{const t=e.startsWith(\"http\");e+=\"\/\",r.p=t?e:\"https:\/\/\"+e};let v=!1;function b(e){let t=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]?arguments[1]:{},b=arguments.length\u003e2?arguments[2]:void 0,y=arguments.length\u003e3?arguments[3]:void 0,{init:x,info:w,loader_config:A,runtime:_={loaderType:b},exposed:E=!0}=t;const T=(0,h.gG)();w||(x=T.init,w=T.info,A=T.loader_config),(0,i.Dg)(e,x||{}),(0,i.GE)(e,A||{}),w.jsAttributes??={},u.v6\u0026\u0026(w.jsAttributes.isWorker=!0),(0,i.CX)(e,w);const D=(0,i.P_)(e),S=[w.beacon,w.errorBeacon];v||(v=!0,D.proxy.assets\u0026\u0026(m(D.proxy.assets),S.push(D.proxy.assets)),D.proxy.beacon\u0026\u0026S.push(D.proxy.beacon)),_.denyList=[...D.ajax.deny_list||[],...D.ajax.block_internal?S:[]],(0,i.sU)(e,_),p();const j=function(e,t){t||(0,c.R)(e,\"api\");const h={};var p=o.ee.get(e),g=p.get(\"tracer\"),m=\"api-\",v=m+\"ixn-\";function b(t,r,n,a){const o=(0,i.C5)(e);return null===r?delete o.jsAttributes[t]:(0,i.CX)(e,{...o,jsAttributes:{...o.jsAttributes,[t]:r}}),w(m,n,!0,a||null===r?\"session\":void 0)(t,r)}function y(){}[\"setErrorHandler\",\"finished\",\"addToTrace\",\"addRelease\"].forEach((e=\u003e{h[e]=w(m,e,!0,\"api\")})),h.addPageAction=w(m,\"addPageAction\",!0,n.D.pageAction),h.setCurrentRouteName=w(m,\"routeName\",!0,n.D.spa),h.setPageViewName=function(t,r){if(\"string\"==typeof t)return\"\/\"!==t.charAt(0)\u0026\u0026(t=\"\/\"+t),(0,i.OP)(e).customTransaction=(r||\"http:\/\/custom.transaction\")+t,w(m,\"setPageViewName\",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length\u003e2\u0026\u0026void 0!==arguments[2]\u0026\u0026arguments[2];if(\"string\"==typeof e){if([\"string\",\"number\",\"boolean\"].includes(typeof t)||null===t)return b(e,t,\"setCustomAttribute\",r);(0,l.Z)(\"Failed to execute setCustomAttribute.\\nNon-null value must be a string, number or boolean type, but a type of \u003c\".concat(typeof t,\"\u003e was provided.\"))}else(0,l.Z)(\"Failed to execute setCustomAttribute.\\nName must be a string type, but a type of \u003c\".concat(typeof e,\"\u003e was provided.\"))},h.setUserId=function(e){if(\"string\"==typeof e||null===e)return b(\"enduser.id\",e,\"setUserId\",!0);(0,l.Z)(\"Failed to execute setUserId.\\nNon-null value must be a string type, but a type of \u003c\".concat(typeof e,\"\u003e was provided.\"))},h.setApplicationVersion=function(e){if(\"string\"==typeof e||null===e)return b(\"application.version\",e,\"setApplicationVersion\",!1);(0,l.Z)(\"Failed to execute setApplicationVersion. Expected \u003cString | null\u003e, but got \u003c\".concat(typeof e,\"\u003e.\"))},h.start=e=\u003e{try{const t=e?\"defined\":\"undefined\";(0,a.p)(f.xS,[\"API\/start\/\".concat(t,\"\/called\")],void 0,n.D.metrics,p);const r=Object.values(n.D);if(void 0===e)e=r;else{if((e=Array.isArray(e)\u0026\u0026e.length?e:[e]).some((e=\u003e!r.includes(e))))return(0,l.Z)(\"Invalid feature name supplied. Acceptable feature names are: \".concat(r));e.includes(n.D.pageViewEvent)||e.push(n.D.pageViewEvent)}e.forEach((e=\u003e{p.emit(\"\".concat(e,\"-opt-in\"))}))}catch(e){(0,l.Z)(\"An unexpected issue occurred\",e)}},h.interaction=function(){return(new y).get()};var x=y.prototype={createTracer:function(e,t){var r={},i=this,o=\"function\"==typeof t;return(0,a.p)(v+\"tracer\",[(0,s.z)(),e,r],i,n.D.spa,p),function(){if(g.emit((o?\"\":\"no-\")+\"fn-start\",[(0,s.z)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){throw g.emit(\"fn-err\",[arguments,this,e],r),e}finally{g.emit(\"fn-end\",[(0,s.z)()],r)}}}};function w(e,t,r,i){return function(){return(0,a.p)(f.xS,[\"API\/\"+t+\"\/called\"],void 0,n.D.metrics,p),i\u0026\u0026(0,a.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,p),r?void 0:this}}function A(){r.e(63).then(r.bind(r,7438)).then((t=\u003e{let{setAPI:r}=t;r(e),(0,c.L)(e,\"api\")})).catch((()=\u003e(0,l.Z)(\"Downloading runtime APIs failed...\")))}return[\"actionText\",\"setName\",\"setAttribute\",\"save\",\"ignore\",\"onEnd\",\"getContext\",\"end\",\"get\"].forEach((e=\u003e{x[e]=w(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){\"string\"==typeof e\u0026\u0026(e=new Error(e)),(0,a.p)(f.xS,[\"API\/noticeError\/called\"],void 0,n.D.metrics,p),(0,a.p)(\"err\",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,p)},u.il?(0,d.b)((()=\u003eA()),!0):A(),h}(e,y);return(0,h.Qy)(e,j,\"api\"),(0,h.Qy)(e,E,\"exposed\"),(0,h.EZ)(\"activatedFeatures\",g.T),j}},3325:(e,t,r)=\u003e{r.d(t,{D:()=\u003en,p:()=\u003ei});const n={ajax:\"ajax\",jserrors:\"jserrors\",metrics:\"metrics\",pageAction:\"page_action\",pageViewEvent:\"page_view_event\",pageViewTiming:\"page_view_timing\",sessionReplay:\"session_replay\",sessionTrace:\"session_trace\",spa:\"spa\"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return r[e](a,a.exports,i),a.exports}i.m=r,i.d=(e,t)=\u003e{for(var r in t)i.o(t,r)\u0026\u0026!i.o(e,r)\u0026\u0026Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=\u003ePromise.all(Object.keys(i.f).reduce(((t,r)=\u003e(i.f[r](e,t),t)),[])),i.u=e=\u003e({63:\"nr-full\",110:\"nr-full-compressor\",379:\"nr-full-recorder\"}[e]+\"-1.246.1.min.js\"),i.o=(e,t)=\u003eObject.prototype.hasOwnProperty.call(e,t),e={},t=\"NRBA-1.246.1.PROD:\",i.l=(r,n,a,o)=\u003e{if(e[r])e[r].push(n);else{var s,c;if(void 0!==a)for(var d=document.getElementsByTagName(\"script\"),u=0;u\u003cd.length;u++){var l=d[u];if(l.getAttribute(\"src\")==r||l.getAttribute(\"data-webpack\")==t+a){s=l;break}}s||(c=!0,(s=document.createElement(\"script\")).charset=\"utf-8\",s.timeout=120,i.nc\u0026\u0026s.setAttribute(\"nonce\",i.nc),s.setAttribute(\"data-webpack\",t+a),s.src=r),e[r]=[n];var f=(t,n)=\u003e{s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode\u0026\u0026s.parentNode.removeChild(s),i\u0026\u0026i.forEach((e=\u003ee(n))),t)return t(n)},h=setTimeout(f.bind(null,void 0,{type:\"timeout\",target:s}),12e4);s.onerror=f.bind(null,s.onerror),s.onload=f.bind(null,s.onload),c\u0026\u0026document.head.appendChild(s)}},i.r=e=\u003e{\"undefined\"!=typeof Symbol\u0026\u0026Symbol.toStringTag\u0026\u0026Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.p=\"https:\/\/js-agent.newrelic.com\/\",(()=\u003e{var e={29:0,789:0};i.f.j=(t,r)=\u003e{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var a=new Promise(((r,i)=\u003en=e[t]=[r,i]));r.push(n[2]=a);var o=i.p+i.u(t),s=new Error;i.l(o,(r=\u003e{if(i.o(e,t)\u0026\u0026(0!==(n=e[t])\u0026\u0026(e[t]=void 0),n)){var a=r\u0026\u0026(\"load\"===r.type?\"missing\":r.type),o=r\u0026\u0026r.target\u0026\u0026r.target.src;s.message=\"Loading chunk \"+t+\" failed.\\n(\"+a+\": \"+o+\")\",s.name=\"ChunkLoadError\",s.type=a,s.request=o,n[1](s)}}),\"chunk-\"+t,t)}};var t=(t,r)=\u003e{var n,a,[o,s,c]=r,d=0;if(o.some((t=\u003e0!==e[t]))){for(n in s)i.o(s,n)\u0026\u0026(i.m[n]=s[n]);if(c)c(i)}for(t\u0026\u0026t(r);d\u003co.length;d++)a=o[d],i.o(e,a)\u0026\u0026e[a]\u0026\u0026e[a][0](),e[a]=0},r=self[\"webpackChunk:NRBA-1.246.1.PROD\"]=self[\"webpackChunk:NRBA-1.246.1.PROD\"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=\u003e{var e=i(50);class t{addPageAction(t,r){(0,e.Z)(\"Call to agent api addPageAction failed. The page action feature is not currently initialized.\")}setPageViewName(t,r){(0,e.Z)(\"Call to agent api setPageViewName failed. The page view feature is not currently initialized.\")}setCustomAttribute(t,r,n){(0,e.Z)(\"Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.\")}noticeError(t,r){(0,e.Z)(\"Call to agent api noticeError failed. The js errors feature is not currently initialized.\")}setUserId(t){(0,e.Z)(\"Call to agent api setUserId failed. The js errors feature is not currently initialized.\")}setApplicationVersion(t){(0,e.Z)(\"Call to agent api setApplicationVersion failed. The agent is not currently initialized.\")}setErrorHandler(t){(0,e.Z)(\"Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.\")}finished(t){(0,e.Z)(\"Call to agent api finished failed. The page action feature is not currently initialized.\")}addRelease(t,r){(0,e.Z)(\"Call to agent api addRelease failed. The js errors feature is not currently initialized.\")}start(t){(0,e.Z)(\"Call to agent api addRelease failed. The agent is not currently initialized.\")}}var r=i(3325),n=i(234);const a=Object.values(r.D);function o(e){const t={};return a.forEach((r=\u003e{t[r]=function(e,t){return!1!==(0,n.Mt)(t,\"\".concat(e,\".enabled\"))}(r,e)})),t}var s=i(7530);var c=i(8e3),d=i(5938),u=i(3960),l=i(385);class f extends d.W{constructor(e,t,r){let i=!(arguments.length\u003e3\u0026\u0026void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=i,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===(0,n.Mt)(this.agentIdentifier,\"\".concat(this.featureName,\".autoStart\"))\u0026\u0026(this.auto=!1),this.auto\u0026\u0026(0,c.R)(e,r)}importAggregator(){let t=arguments.length\u003e0\u0026\u0026void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate)return;if(!this.auto)return void this.ee.on(\"\".concat(this.featureName,\"-opt-in\"),(()=\u003e{(0,c.R)(this.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator()}));const r=l.il\u0026\u0026!0===(0,n.Mt)(this.agentIdentifier,\"privacy.cookies_enabled\");let a;this.onAggregateImported=new Promise((e=\u003e{a=e}));const o=async()=\u003e{let n;try{if(r){const{setupAgentSession:e}=await i.e(63).then(i.bind(i,3228));n=e(this.agentIdentifier)}}catch(t){(0,e.Z)(\"A problem occurred when starting up session manager. This page will not start or extend any session.\",t)}try{if(!this.shouldImportAgg(this.featureName,n))return(0,c.L)(this.agentIdentifier,this.featureName),void a(!1);const{lazyFeatureLoader:e}=await i.e(63).then(i.bind(i,8582)),{Aggregate:r}=await e(this.featureName,\"aggregate\");this.featAggregate=new r(this.agentIdentifier,this.aggregator,t),a(!0)}catch(t){(0,e.Z)(\"Downloading and initializing \".concat(this.featureName,\" failed...\"),t),this.abortHandler?.(),(0,c.L)(this.agentIdentifier,this.featureName),a(!1)}};l.il?(0,u.b)((()=\u003eo()),!0):o()}shouldImportAgg(e,t){return e!==r.D.sessionReplay||!!n.Yu.MO\u0026\u0026(!1!==(0,n.Mt)(this.agentIdentifier,\"session_trace.enabled\")\u0026\u0026(!!t?.isNew||!!t?.state.sessionReplayMode))}}var h=i(7633);class p extends f{static featureName=h.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,h.t,r),this.importAggregator()}}var g=i(1117),m=i(1284);class v extends g.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var a=this.getBucket(e,t,r,i);return a.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,m.D)(e,(function(e,r){t[e]=b(r,t[e])})),t}(n,a.metrics),a}merge(e,t,r,n,i){var a=this.getBucket(e,t,n,i);if(a.metrics){var o=a.metrics;o.count+=r.count,(0,m.D)(r,(function(e,t){if(\"count\"!==e){var n=o[e],i=r[e];i\u0026\u0026!i.c?o[e]=b(i.t,n):o[e]=function(e,t){if(!t)return e;t.c||(t=y(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,o[e])}}))}else a.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=b(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n\u0026\u0026(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]\u0026\u0026this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r=\"\",n=!1,i=0;i\u003ce.length;i++)t[r=e[i]]=x(this.aggregatedData[r]),t[r].length\u0026\u0026(n=!0),delete this.aggregatedData[r];return n?t:null}}function b(e,t){return null==e?function(e){e?e.c++:e={c:1};return e}(t):t?(t.c||(t=y(t.t)),t.c+=1,t.t+=e,t.sos+=e*e,e\u003et.max\u0026\u0026(t.max=e),e\u003ct.min\u0026\u0026(t.min=e),t):{t:e}}function y(e){return{t:e,min:e,max:e,sos:e*e,c:1}}function x(e){return\"object\"!=typeof e?[]:(0,m.D)(e,w)}function w(e,t){return t}var A=i(8632),_=i(4402),E=i(4351);var T=i(5546),D=i(7956),S=i(3239),j=i(7894),C=i(9251);class P extends f{static featureName=C.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,C.t,r),l.il\u0026\u0026((0,D.N)((()=\u003e(0,T.p)(\"docHidden\",[(0,j.z)()],void 0,C.t,this.ee)),!0),(0,S.bP)(\"pagehide\",(()=\u003e(0,T.p)(\"winPagehide\",[(0,j.z)()],void 0,C.t,this.ee))),this.importAggregator())}}var O=i(3081);class R extends f{static featureName=O.t9;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,O.t9,r),this.importAggregator()}}var k=i(6660);class N{constructor(e,t,r,n){this.name=\"UncaughtError\",this.message=e,this.sourceURL=t,this.line=r,this.column=n}}class I extends f{static featureName=k.t;#e=new Set;constructor(e,t){let n=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,k.t,n);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on(\"fn-err\",((e,t,n)=\u003e{this.abortHandler\u0026\u0026!this.#e.has(n)\u0026\u0026(this.#e.add(n),(0,T.p)(\"err\",[this.#t(n),(0,j.z)()],void 0,r.D.jserrors,this.ee))})),this.ee.on(\"internal-error\",(e=\u003e{this.abortHandler\u0026\u0026(0,T.p)(\"ierr\",[this.#t(e),(0,j.z)(),!0],void 0,r.D.jserrors,this.ee)})),l._A.addEventListener(\"unhandledrejection\",(e=\u003e{this.abortHandler\u0026\u0026(0,T.p)(\"err\",[this.#r(e),(0,j.z)(),!1,{unhandledPromiseRejection:1}],void 0,r.D.jserrors,this.ee)}),(0,S.m$)(!1,this.removeOnAbort?.signal)),l._A.addEventListener(\"error\",(e=\u003e{this.abortHandler\u0026\u0026(this.#e.has(e.error)?this.#e.delete(e.error):(0,T.p)(\"err\",[this.#n(e),(0,j.z)()],void 0,r.D.jserrors,this.ee))}),(0,S.m$)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#i,this.importAggregator()}#i(){this.removeOnAbort?.abort(),this.#e.clear(),this.abortHandler=void 0}#t(e){return e instanceof Error?e:void 0!==e?.message?new N(e.message,e.filename||e.sourceURL,e.lineno||e.line,e.colno||e.col):new N(\"string\"==typeof e?e:(0,E.P)(e))}#r(e){let t=\"Unhandled Promise Rejection: \";if(e?.reason instanceof Error)try{return e.reason.message=t+e.reason.message,e.reason}catch(t){return e.reason}if(void 0===e.reason)return new N(t);const r=this.#t(e.reason);return r.message=t+r.message,r}#n(e){return e.error instanceof Error?e.error:new N(e.message,e.filename,e.lineno,e.colno)}}var z=i(2210);let H=1;const L=\"nr@id\";function M(e){const t=typeof e;return!e||\"object\"!==t\u0026\u0026\"function\"!==t?-1:e===l._A?0:(0,z.X)(e,L,(function(){return H++}))}function Z(e){if(\"string\"==typeof e\u0026\u0026e.length)return e.length;if(\"object\"==typeof e){if(\"undefined\"!=typeof ArrayBuffer\u0026\u0026e instanceof ArrayBuffer\u0026\u0026e.byteLength)return e.byteLength;if(\"undefined\"!=typeof Blob\u0026\u0026e instanceof Blob\u0026\u0026e.size)return e.size;if(!(\"undefined\"!=typeof FormData\u0026\u0026e instanceof FormData))try{return(0,E.P)(e).length}catch(e){return}}}var F=i(1214),B=i(7243);class U{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,n.DL)(this.agentIdentifier);if(!t)return null;var r=(t.accountID||\"\").toString()||null,i=(t.agentID||\"\").toString()||null,a=(t.trustKey||\"\").toString()||null;if(!r||!i)return null;var o=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),d={spanId:o,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)\u0026\u0026this.useTraceContextHeadersForCors())\u0026\u0026(d.traceContextParentHeader=this.generateTraceContextParentHeader(o,s),d.traceContextStateHeader=this.generateTraceContextStateHeader(o,c,r,i,a)),(e.sameOrigin\u0026\u0026!this.excludeNewrelicHeader()||!e.sameOrigin\u0026\u0026this.isAllowedOrigin(e)\u0026\u0026this.useNewrelicHeaderForCors())\u0026\u0026(d.newrelicHeader=this.generateTraceHeader(o,s,c,r,i,a)),d}generateTraceContextParentHeader(e,t){return\"00-\"+t+\"-\"+e+\"-01\"}generateTraceContextStateHeader(e,t,r,n,i){return i+\"@nr=0-1-\"+r+\"-\"+n+\"-\"+e+\"----\"+t}generateTraceHeader(e,t,r,n,i,a){if(!(\"function\"==typeof l._A?.btoa))return null;var o={v:[0,1],d:{ty:\"Browser\",ac:n,ap:i,id:e,tr:t,ti:r}};return a\u0026\u0026n!==a\u0026\u0026(o.d.tk=a),btoa((0,E.P)(o))}shouldGenerateTrace(e){return this.isDtEnabled()\u0026\u0026this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,n.Mt)(this.agentIdentifier,\"distributed_tracing\")\u0026\u0026(r=(0,n.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var i=0;i\u003cr.allowed_origins.length;i++){var a=(0,B.e)(r.allowed_origins[i]);if(e.hostname===a.hostname\u0026\u0026e.protocol===a.protocol\u0026\u0026e.port===a.port){t=!0;break}}return t}isDtEnabled(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!!e.enabled}excludeNewrelicHeader(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!!e.cors_use_tracecontext_headers}}var q=i(7825),V=[\"load\",\"error\",\"abort\",\"timeout\"],G=V.length,W=n.Yu.REQ,X=n.Yu.XHR;class Q extends f{static featureName=q.t;constructor(e,t){let i=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];if(super(e,t,q.t,i),(0,n.OP)(e).xhrWrappable){this.dt=new U(e),this.handler=(e,t,r,n)=\u003e(0,T.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:\"xhr\",fetch:\"fetch\",beacon:\"beacon\"};l._A?.performance?.getEntriesByType(\"resource\").forEach((t=\u003e{if(t.initiatorType in e\u0026\u00260!==t.responseStatus){const n={status:t.responseStatus},i={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};K(n,t.name),this.handler(\"xhr\",[n,i,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,r.D.ajax)}}))}catch(e){}(0,F.u5)(this.ee),(0,F.Kf)(this.ee),function(e,t,i,a){function o(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener(\"load\",(function(r){_(t,e)}),(0,S.m$)(!1)),l.IF||e.addEventListener(\"progress\",(function(e){t.lastSize=e.loaded}),(0,S.m$)(!1))}function s(e){this.params={method:e[0]},K(this,e[1]),this.metrics={}}function c(t,r){var i=(0,n.DL)(e);i.xpid\u0026\u0026this.sameOrigin\u0026\u0026r.setRequestHeader(\"X-NewRelic-ID\",i.xpid);var o=a.generateTracePayload(this.parsedOrigin);if(o){var s=!1;o.newrelicHeader\u0026\u0026(r.setRequestHeader(\"newrelic\",o.newrelicHeader),s=!0),o.traceContextParentHeader\u0026\u0026(r.setRequestHeader(\"traceparent\",o.traceContextParentHeader),o.traceContextStateHeader\u0026\u0026r.setRequestHeader(\"tracestate\",o.traceContextStateHeader),s=!0),s\u0026\u0026(this.dt=o)}}function d(e,r){var n=this.metrics,i=e[0],a=this;if(n\u0026\u0026i){var o=Z(i);o\u0026\u0026(n.txSize=o)}this.startTime=(0,j.z)(),this.body=i,this.listener=function(e){try{\"abort\"!==e.type||a.loadCaptureCalled||(a.params.aborted=!0),(\"load\"!==e.type||a.called===a.totalCbs\u0026\u0026(a.onloadCalled||\"function\"!=typeof r.onload)\u0026\u0026\"function\"==typeof a.end)\u0026\u0026a.end(r)}catch(e){try{t.emit(\"internal-error\",[e])}catch(e){}}};for(var s=0;s\u003cG;s++)r.addEventListener(V[s],this.listener,(0,S.m$)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled\u0026\u0026\"function\"==typeof r.onload||\"function\"!=typeof this.end||this.end(r)}function f(e,t){var r=\"\"+M(e)+!!t;this.xhrGuids\u0026\u0026!this.xhrGuids[r]\u0026\u0026(this.xhrGuids[r]=!0,this.totalCbs+=1)}function h(e,t){var r=\"\"+M(e)+!!t;this.xhrGuids\u0026\u0026this.xhrGuids[r]\u0026\u0026(delete this.xhrGuids[r],this.totalCbs-=1)}function p(){this.endTime=(0,j.z)()}function g(e,r){r instanceof X\u0026\u0026\"load\"===e[0]\u0026\u0026t.emit(\"xhr-load-added\",[e[1],e[2]],r)}function m(e,r){r instanceof X\u0026\u0026\"load\"===e[0]\u0026\u0026t.emit(\"xhr-load-removed\",[e[1],e[2]],r)}function v(e,t,r){t instanceof X\u0026\u0026(\"onload\"===r\u0026\u0026(this.onload=!0),(\"load\"===(e[0]\u0026\u0026e[0].type)||this.onload)\u0026\u0026(this.xhrCbStart=(0,j.z)()))}function b(e,r){this.xhrCbStart\u0026\u0026t.emit(\"xhr-cb-time\",[(0,j.z)()-this.xhrCbStart,this.onload,r],r)}function y(e){var t,r=e[1]||{};if(\"string\"==typeof e[0]?0===(t=e[0]).length\u0026\u0026l.il\u0026\u0026(t=\"\"+l._A.location.href):e[0]\u0026\u0026e[0].url?t=e[0].url:l._A?.URL\u0026\u0026e[0]\u0026\u0026e[0]instanceof URL?t=e[0].href:\"function\"==typeof e[0].toString\u0026\u0026(t=e[0].toString()),\"string\"==typeof t\u0026\u00260!==t.length){t\u0026\u0026(this.parsedOrigin=(0,B.e)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=a.generateTracePayload(this.parsedOrigin);if(n\u0026\u0026(n.newrelicHeader||n.traceContextParentHeader))if(e[0]\u0026\u0026e[0].headers)s(e[0].headers,n)\u0026\u0026(this.dt=n);else{var i={};for(var o in r)i[o]=r[o];i.headers=new Headers(r.headers||{}),s(i.headers,n)\u0026\u0026(this.dt=n),e.length\u003e1?e[1]=i:e.push(i)}}function s(e,t){var r=!1;return t.newrelicHeader\u0026\u0026(e.set(\"newrelic\",t.newrelicHeader),r=!0),t.traceContextParentHeader\u0026\u0026(e.set(\"traceparent\",t.traceContextParentHeader),t.traceContextStateHeader\u0026\u0026e.set(\"tracestate\",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,j.z)(),this.dt=t,e.length\u003e=1\u0026\u0026(this.target=e[0]),e.length\u003e=2\u0026\u0026(this.opts=e[1]);var r,n=this.opts||{},i=this.target;\"string\"==typeof i?r=i:\"object\"==typeof i\u0026\u0026i instanceof W?r=i.url:l._A?.URL\u0026\u0026\"object\"==typeof i\u0026\u0026i instanceof URL\u0026\u0026(r=i.href),K(this,r);var a=(\"\"+(i\u0026\u0026i instanceof W\u0026\u0026i.method||n.method||\"GET\")).toUpperCase();this.params.method=a,this.body=n.body,this.txSize=Z(n.body)||0}function w(e,t){var n;this.endTime=(0,j.z)(),this.params||(this.params={}),this.params.status=t?t.status:0,\"string\"==typeof this.rxSize\u0026\u0026this.rxSize.length\u003e0\u0026\u0026(n=+this.rxSize);var a={txSize:this.txSize,rxSize:n,duration:(0,j.z)()-this.startTime};i(\"xhr\",[this.params,a,this.startTime,this.endTime,\"fetch\"],this,r.D.ajax)}function A(e){var t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var a=0;a\u003cG;a++)e.removeEventListener(V[a],this.listener,!1);t.aborted||(n.duration=(0,j.z)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status\u0026\u0026(t.status=0):_(this,e),n.cbTime=this.cbTime,i(\"xhr\",[t,n,this.startTime,this.endTime,\"xhr\"],this,r.D.ajax))}}function _(e,t){e.params.status=t.status;var r=function(e,t){var r=e.responseType;return\"json\"===r\u0026\u0026null!==t?t:\"arraybuffer\"===r||\"blob\"===r||\"json\"===r?Z(e.response):\"text\"===r||\"\"===r||void 0===r?Z(e.responseText):void 0}(t,e.lastSize);if(r\u0026\u0026(e.metrics.rxSize=r),e.sameOrigin){var n=t.getResponseHeader(\"X-NewRelic-App-Data\");n\u0026\u0026(e.params.cat=n.split(\", \").pop())}e.loadCaptureCalled=!0}t.on(\"new-xhr\",o),t.on(\"open-xhr-start\",s),t.on(\"open-xhr-end\",c),t.on(\"send-xhr-start\",d),t.on(\"xhr-cb-time\",u),t.on(\"xhr-load-added\",f),t.on(\"xhr-load-removed\",h),t.on(\"xhr-resolved\",p),t.on(\"addEventListener-end\",g),t.on(\"removeEventListener-end\",m),t.on(\"fn-end\",b),t.on(\"fetch-before-start\",y),t.on(\"fetch-start\",x),t.on(\"fn-start\",v),t.on(\"fetch-done\",w)}(e,this.ee,this.handler,this.dt),this.importAggregator()}}}function K(e,t){var r=(0,B.e)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+\":\"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Y=i(3614);const{BST_RESOURCE:J,RESOURCE:ee,START:te,END:re,FEATURE_NAME:ne,FN_END:ie,FN_START:ae,PUSH_STATE:oe}=Y;var se=i(7144);class ce extends f{static featureName=se.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,se.t,r),this.importAggregator()}}var de=i(4649);class ue extends f{static featureName=de.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,de.t,r),this.importAggregator()}}new class extends t{constructor(t){let r=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);super(),l._A?(this.agentIdentifier=r,this.sharedAggregator=new v({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(p),Object.assign(this,(0,s.j)(this.agentIdentifier,t,t.loaderType||\"agent\")),this.run()):(0,e.Z)(\"Failed to initial the agent. Could not determine the runtime environment.\")}get config(){return{info:(0,n.C5)(this.agentIdentifier),init:(0,n.P_)(this.agentIdentifier),loader_config:(0,n.DL)(this.agentIdentifier),runtime:(0,n.OP)(this.agentIdentifier)}}run(){const t=\"features\";try{const n=o(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((e,t)=\u003er.p[e.featureName]-r.p[t.featureName])),i.forEach((t=\u003e{if(n[t.featureName]||t.featureName===r.D.pageViewEvent){const i=function(e){switch(e){case r.D.ajax:return[r.D.jserrors];case r.D.sessionTrace:return[r.D.ajax,r.D.pageViewEvent];case r.D.sessionReplay:return[r.D.sessionTrace];case r.D.pageViewTiming:return[r.D.pageViewEvent];default:return[]}}(t.featureName);i.every((e=\u003en[e]))||(0,e.Z)(\"\".concat(t.featureName,\" is enabled but one or more dependent features has been disabled (\").concat((0,E.P)(i),\"). This may cause unintended consequences or missing data...\")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,A.Qy)(this.agentIdentifier,this.features,t)}catch(r){(0,e.Z)(\"Failed to initialize all enabled instrument classes (agent aborted) -\",r);for(const e in this.features)this.features[e].abortHandler?.();const n=(0,A.fP)();return delete n.initializedAgents[this.agentIdentifier]?.api,delete n.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,n.ee?.abort(),delete n.ee?.get(this.agentIdentifier),!1}}addToTrace(t){(0,e.Z)(\"Call to agent api addToTrace failed. The session trace feature is not currently initialized.\")}setCurrentRouteName(t){(0,e.Z)(\"Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.\")}interaction(){(0,e.Z)(\"Call to agent api interaction failed. The spa feature is not currently initialized.\")}}({features:[p,P,class extends f{static featureName=ne;constructor(e,t){if(super(e,t,ne,!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2]),!l.il)return;const n=this.ee;let i;(0,F.QU)(n),this.eventsEE=(0,F.em)(n),this.eventsEE.on(ae,(function(e,t){this.bstStart=(0,j.z)()})),this.eventsEE.on(ie,(function(e,t){(0,T.p)(\"bst\",[e[0],t,this.bstStart,(0,j.z)()],void 0,r.D.sessionTrace,n)})),n.on(oe+te,(function(e){this.time=(0,j.z)(),this.startPath=location.pathname+location.hash})),n.on(oe+re,(function(e){(0,T.p)(\"bstHist\",[location.pathname+location.hash,this.startPath,this.time],void 0,r.D.sessionTrace,n)}));try{i=new PerformanceObserver((e=\u003e{const t=e.getEntries();(0,T.p)(J,[t],void 0,r.D.sessionTrace,n)})),i.observe({type:ee,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},ce,Q,R,ue,I],loaderType:\"pro\"})})()})();\u003c\/script\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\"\u003e\n    \u003c!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --\u003e\n    \u003cmeta name=\"description\" content=\"\"\u003e\n    \u003cmeta name=\"author\" content=\"\"\u003e\n\n    \u003clink rel=\"icon\" href=\"\/favico\/syscom_favico.png\"\u003e\n\n\t\u003cscript src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.11.3\/jquery.min.js\"\u003e\u003c\/script\u003e\n\t\u003cscript type=\"text\/javascript\" src=\"https:\/\/code.jquery.com\/jquery.js\"\u003e\u003c\/script\u003e\n\t\u003cscript src=\"\/\/code.jquery.com\/ui\/1.10.4\/jquery-ui.js\"\u003e\u003c\/script\u003e\n\n\t\u003clink rel=\"stylesheet\" href=\"\/bootstrap\/css\/bootstrap.css\"\u003e\n\t\u003cscript src=\"\/bootstrap\/js\/bootstrap.min.js?v=1109\"\u003e\u003c\/script\u003e \n    \n\n    \u003ctitle\u003eProductos Info - Todo en Sistemas de Emergencia, Seguridad y Comunicación\u003c\/title\u003e\n\n    \u003c!-- Bootstrap core CSS --\u003e\n\n\t\u003cstyle\u003e\n\/*\n\t\t.footer{\n\t\t\tbackground: #1b6aa9;\n\t\t\tcolor: #fff;\n\t\t}\n*\/\n\n\t\t.footer a{\n\t\t\tcolor: #fff;\n\t\t}\n\n\t\t#tc_carrito{\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t.container_page{\n\/* \t\t\tbox-shadow: rgba(130, 130, 130, 0.43) 1px 1px 23px 1px; *\/\n\t\t\tmin-height: calc(100vh - 325px);\n\t\t\tpadding-bottom: 10px;\n\t\t}\n\t\t@media only screen and (max-width: 991px) {\n\t\t\t.container_page{\n\t\t\t\tmin-height: calc(100vh - 260px);\n\t\t\t}\n\n\t\t}\n\n\t\t@media only screen and (max-width: 480px) {\n\t\t\t#logo_desktop{\n\t\t\t\tdisplay: none!important;\n\t\t\t}\n\n\t\t\t#logo_movil{\n\t\t\t\tdisplay: block!important;\n\t\t\t}\n\t\t}\n\n\t\t@media only screen and (max-width: 700px) {\n\t\t\t#tc_carrito{\n\t\t\t\tdisplay: none!important;\n\t\t\t}\n\t\t}\n\t\u003c\/style\u003e\n\n\n\n\n\n    \u003c!-- Google Tag Manager --\u003e\n\u003cscript\u003e\n    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'\u0026l='+l:'';j.async=true;j.src='https:\/\/www.googletagmanager.com\/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-MBBK4NC');\n\u003c\/script\u003e\u003c!-- End Google Tag Manager --\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\nfunction es_app(){\nreturn \u003cbr \/\u003e\n\u003cb\u003eNotice\u003c\/b\u003e:  Undefined index: HTTP_USER_AGENT in \u003cb\u003e\/var\/www\/websites\/syscom.mx\/app\/webroot\/syscomv6\/class\/pagina_consola.php\u003c\/b\u003e on line \u003cb\u003e401\u003c\/b\u003e\u003cbr \/\u003e\nfalse}\n\u003c\/script\u003e\n \u003cscript\u003e\n\n\n\tfunction buscador_productos(){\n\t\tbusqueda=$(\"#input_buscador\").val();\n\n\t\twindow.location.href=\"\/principal\/consultarproductosazul?global_search=\"+busqueda;\n\t}\n\n\tfunction detectar_tecla(evento){\n\t\tif(window.event){ \/\/ IE\n\t        keynum = evento.keyCode;\n\t    }else if(e.which){  \/\/ Netscape\/Firefox\/Opera\n\t        keynum = evento.which;\n\t    }\n\t\tif(keynum==13){\n\t\t\tbuscador_productos();\n\t\t}\n\t}\n\n \u003c\/script\u003e\n\n  \n\n  \n\n    \u003c!-- Fixed navbar --\u003e\n\n\n\n\n\t\n\t\t\u003cmeta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"\u003e\n\t\n\t\t\u003clink rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css?family=Open+Sans\u0026amp;?v=3.07\"\u003e\n\t\t\u003clink rel=\"stylesheet\" href=\"\/css\/jquery.fancybox.css?v=3.07\"\u003e\n\t\t\n\t\t\u003cscript\u003e\/*!\n  * Bootstrap v5.3.0 (https:\/\/getbootstrap.com\/)\n  * Copyright 2011-2023 The Bootstrap Authors (https:\/\/github.com\/twbs\/bootstrap\/graphs\/contributors)\n  * Licensed under MIT (https:\/\/github.com\/twbs\/bootstrap\/blob\/main\/LICENSE)\n  *\/\n!function(t,e){\"object\"==typeof exports\u0026\u0026\"undefined\"!=typeof module?module.exports=e(require(\"@popperjs\/core\")):\"function\"==typeof define\u0026\u0026define.amd?define([\"@popperjs\/core\"],e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){\"use strict\";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:\"Module\"}});if(t)for(const s in t)if(\"default\"!==s){const i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:()=\u003et[s]})}return e.default=t,Object.freeze(e)}const s=e(t),i=new Map,n={set(t,e,s){i.has(t)||i.set(t,new Map);const n=i.get(t);n.has(e)||0===n.size?n.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=\u003ei.has(t)\u0026\u0026i.get(t).get(e)||null,remove(t,e){if(!i.has(t))return;const s=i.get(t);s.delete(e),0===s.size\u0026\u0026i.delete(t)}},o=\"transitionend\",r=t=\u003e(t\u0026\u0026window.CSS\u0026\u0026window.CSS.escape\u0026\u0026(t=t.replace(\/#([^\\s\"#']+)\/g,((t,e)=\u003e`#${CSS.escape(e)}`))),t),a=t=\u003e{t.dispatchEvent(new Event(o))},l=t=\u003e!(!t||\"object\"!=typeof t)\u0026\u0026(void 0!==t.jquery\u0026\u0026(t=t[0]),void 0!==t.nodeType),c=t=\u003el(t)?t.jquery?t[0]:t:\"string\"==typeof t\u0026\u0026t.length\u003e0?document.querySelector(r(t)):null,h=t=\u003e{if(!l(t)||0===t.getClientRects().length)return!1;const e=\"visible\"===getComputedStyle(t).getPropertyValue(\"visibility\"),s=t.closest(\"details:not([open])\");if(!s)return e;if(s!==t){const e=t.closest(\"summary\");if(e\u0026\u0026e.parentNode!==s)return!1;if(null===e)return!1}return e},d=t=\u003e!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains(\"disabled\")||(void 0!==t.disabled?t.disabled:t.hasAttribute(\"disabled\")\u0026\u0026\"false\"!==t.getAttribute(\"disabled\")),u=t=\u003e{if(!document.documentElement.attachShadow)return null;if(\"function\"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?u(t.parentNode):null},_=()=\u003e{},g=t=\u003e{t.offsetHeight},f=()=\u003ewindow.jQuery\u0026\u0026!document.body.hasAttribute(\"data-bs-no-jquery\")?window.jQuery:null,m=[],p=()=\u003e\"rtl\"===document.documentElement.dir,b=t=\u003e{var e;e=()=\u003e{const e=f();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=\u003e(e.fn[s]=i,t.jQueryInterface)}},\"loading\"===document.readyState?(m.length||document.addEventListener(\"DOMContentLoaded\",(()=\u003e{for(const t of m)t()})),m.push(e)):e()},v=(t,e=[],s=t)=\u003e\"function\"==typeof t?t(...e):s,y=(t,e,s=!0)=\u003e{if(!s)return void v(t);const i=(t=\u003e{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(\",\")[0],s=s.split(\",\")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const r=({target:s})=\u003e{s===e\u0026\u0026(n=!0,e.removeEventListener(o,r),v(t))};e.addEventListener(o,r),setTimeout((()=\u003e{n||a(e)}),i)},w=(t,e,s,i)=\u003e{const n=t.length;let o=t.indexOf(e);return-1===o?!s\u0026\u0026i?t[n-1]:t[0]:(o+=s?1:-1,i\u0026\u0026(o=(o+n)%n),t[Math.max(0,Math.min(o,n-1))])},A=\/[^.]*(?=\\..*)\\.|.*\/,E=\/\\..*\/,C=\/::\\d+$\/,T={};let k=1;const S={mouseenter:\"mouseover\",mouseleave:\"mouseout\"},L=new Set([\"click\",\"dblclick\",\"mouseup\",\"mousedown\",\"contextmenu\",\"mousewheel\",\"DOMMouseScroll\",\"mouseover\",\"mouseout\",\"mousemove\",\"selectstart\",\"selectend\",\"keydown\",\"keypress\",\"keyup\",\"orientationchange\",\"touchstart\",\"touchmove\",\"touchend\",\"touchcancel\",\"pointerdown\",\"pointermove\",\"pointerup\",\"pointerleave\",\"pointercancel\",\"gesturestart\",\"gesturechange\",\"gestureend\",\"focus\",\"blur\",\"change\",\"reset\",\"select\",\"submit\",\"focusin\",\"focusout\",\"load\",\"unload\",\"beforeunload\",\"resize\",\"move\",\"DOMContentLoaded\",\"readystatechange\",\"error\",\"abort\",\"scroll\"]);function O(t,e){return e\u0026\u0026`${e}::${k++}`||t.uidEvent||k++}function I(t){const e=O(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function D(t,e,s=null){return Object.values(t).find((t=\u003et.callable===e\u0026\u0026t.delegationSelector===s))}function N(t,e,s){const i=\"string\"==typeof e,n=i?s:e||s;let o=j(t);return L.has(o)||(o=t),[i,n,o]}function P(t,e,s,i,n){if(\"string\"!=typeof e||!t)return;let[o,r,a]=N(e,s,i);if(e in S){const t=t=\u003efunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget\u0026\u0026!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=I(t),c=l[a]||(l[a]={}),h=D(c,r,o?s:null);if(h)return void(h.oneOff=h.oneOff\u0026\u0026n);const d=O(r,e.replace(A,\"\")),u=o?function(t,e,s){return function i(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r\u0026\u0026r!==this;r=r.parentNode)for(const a of o)if(a===r)return $(n,{delegateTarget:r}),i.oneOff\u0026\u0026F.off(t,n.type,e,s),s.apply(r,[n])}}(t,s,r):function(t,e){return function s(i){return $(i,{delegateTarget:t}),s.oneOff\u0026\u0026F.off(t,i.type,e),e.apply(t,[i])}}(t,r);u.delegationSelector=o?s:null,u.callable=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function x(t,e,s,i,n){const o=D(e[s],i,n);o\u0026\u0026(t.removeEventListener(s,o,Boolean(n)),delete e[s][o.uidEvent])}function M(t,e,s,i){const n=e[s]||{};for(const[o,r]of Object.entries(n))o.includes(i)\u0026\u0026x(t,e,s,r.callable,r.delegationSelector)}function j(t){return t=t.replace(E,\"\"),S[t]||t}const F={on(t,e,s,i){P(t,e,s,i,!1)},one(t,e,s,i){P(t,e,s,i,!0)},off(t,e,s,i){if(\"string\"!=typeof e||!t)return;const[n,o,r]=N(e,s,i),a=r!==e,l=I(t),c=l[r]||{},h=e.startsWith(\".\");if(void 0===o){if(h)for(const s of Object.keys(l))M(t,l,s,e.slice(1));for(const[s,i]of Object.entries(c)){const n=s.replace(C,\"\");a\u0026\u0026!e.includes(n)||x(t,l,r,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;x(t,l,r,o,n?s:null)}},trigger(t,e,s){if(\"string\"!=typeof e||!t)return null;const i=f();let n=null,o=!0,r=!0,a=!1;e!==j(e)\u0026\u0026i\u0026\u0026(n=i.Event(e,s),i(t).trigger(n),o=!n.isPropagationStopped(),r=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());const l=$(new Event(e,{bubbles:o,cancelable:!0}),s);return a\u0026\u0026l.preventDefault(),r\u0026\u0026t.dispatchEvent(l),l.defaultPrevented\u0026\u0026n\u0026\u0026n.preventDefault(),l}};function $(t,e={}){for(const[s,i]of Object.entries(e))try{t[s]=i}catch(e){Object.defineProperty(t,s,{configurable:!0,get:()=\u003ei})}return t}function z(t){if(\"true\"===t)return!0;if(\"false\"===t)return!1;if(t===Number(t).toString())return Number(t);if(\"\"===t||\"null\"===t)return null;if(\"string\"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function H(t){return t.replace(\/[A-Z]\/g,(t=\u003e`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,s){t.setAttribute(`data-bs-${H(e)}`,s)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${H(e)}`)},getDataAttributes(t){if(!t)return{};const e={},s=Object.keys(t.dataset).filter((t=\u003et.startsWith(\"bs\")\u0026\u0026!t.startsWith(\"bsConfig\")));for(const i of s){let s=i.replace(\/^bs\/,\"\");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=z(t.dataset[i])}return e},getDataAttribute:(t,e)=\u003ez(t.getAttribute(`data-bs-${H(e)}`))};class q{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method \"NAME\", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const s=l(e)?B.getDataAttribute(e,\"config\"):{};return{...this.constructor.Default,...\"object\"==typeof s?s:{},...l(e)?B.getDataAttributes(e):{},...\"object\"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,n]of Object.entries(e)){const e=t[i],o=l(e)?\"element\":null==(s=e)?`${s}`:Object.prototype.toString.call(s).match(\/\\s([a-z]+)\/i)[1].toLowerCase();if(!new RegExp(n).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${i}\" provided type \"${o}\" but expected type \"${n}\".`)}var s}}class W extends q{constructor(t,e){super(),(t=c(t))\u0026\u0026(this._element=t,this._config=this._getConfig(e),n.set(this._element,this.constructor.DATA_KEY,this))}dispose(){n.remove(this._element,this.constructor.DATA_KEY),F.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,s=!0){y(t,e,s)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return n.get(c(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,\"object\"==typeof e?e:null)}static get VERSION(){return\"5.3.0\"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const R=t=\u003e{let e=t.getAttribute(\"data-bs-target\");if(!e||\"#\"===e){let s=t.getAttribute(\"href\");if(!s||!s.includes(\"#\")\u0026\u0026!s.startsWith(\".\"))return null;s.includes(\"#\")\u0026\u0026!s.startsWith(\"#\")\u0026\u0026(s=`#${s.split(\"#\")[1]}`),e=s\u0026\u0026\"#\"!==s?s.trim():null}return r(e)},K={find:(t,e=document.documentElement)=\u003e[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=\u003eElement.prototype.querySelector.call(e,t),children:(t,e)=\u003e[].concat(...t.children).filter((t=\u003et.matches(e))),parents(t,e){const s=[];let i=t.parentNode.closest(e);for(;i;)s.push(i),i=i.parentNode.closest(e);return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]},focusableChildren(t){const e=[\"a\",\"button\",\"input\",\"textarea\",\"select\",\"details\",\"[tabindex]\",'[contenteditable=\"true\"]'].map((t=\u003e`${t}:not([tabindex^=\"-\"])`)).join(\",\");return this.find(e,t).filter((t=\u003e!d(t)\u0026\u0026h(t)))},getSelectorFromElement(t){const e=R(t);return e\u0026\u0026K.findOne(e)?e:null},getElementFromSelector(t){const e=R(t);return e?K.findOne(e):null},getMultipleElementsFromSelector(t){const e=R(t);return e?K.find(e):[]}},V=(t,e=\"hide\")=\u003e{const s=`click.dismiss${t.EVENT_KEY}`,i=t.NAME;F.on(document,s,`[data-bs-dismiss=\"${i}\"]`,(function(s){if([\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026s.preventDefault(),d(this))return;const n=K.getElementFromSelector(this)||this.closest(`.${i}`);t.getOrCreateInstance(n)[e]()}))};class Q extends W{static get NAME(){return\"alert\"}close(){if(F.trigger(this._element,\"close.bs.alert\").defaultPrevented)return;this._element.classList.remove(\"show\");const t=this._element.classList.contains(\"fade\");this._queueCallback((()=\u003ethis._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),F.trigger(this._element,\"closed.bs.alert\"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}V(Q,\"close\"),b(Q);const X='[data-bs-toggle=\"button\"]';class Y extends W{static get NAME(){return\"button\"}toggle(){this._element.setAttribute(\"aria-pressed\",this._element.classList.toggle(\"active\"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);\"toggle\"===t\u0026\u0026e[t]()}))}}F.on(document,\"click.bs.button.data-api\",X,(t=\u003e{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),b(Y);const U={endCallback:null,leftCallback:null,rightCallback:null},G={endCallback:\"(function|null)\",leftCallback:\"(function|null)\",rightCallback:\"(function|null)\"};class J extends q{constructor(t,e){super(),this._element=t,t\u0026\u0026J.isSupported()\u0026\u0026(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return U}static get DefaultType(){return G}static get NAME(){return\"swipe\"}dispose(){F.off(this._element,\".bs.swipe\")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)\u0026\u0026(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)\u0026\u0026(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),v(this._config.endCallback)}_move(t){this._deltaX=t.touches\u0026\u0026t.touches.length\u003e1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t\u003c=40)return;const e=t\/this._deltaX;this._deltaX=0,e\u0026\u0026v(e\u003e0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(F.on(this._element,\"pointerdown.bs.swipe\",(t=\u003ethis._start(t))),F.on(this._element,\"pointerup.bs.swipe\",(t=\u003ethis._end(t))),this._element.classList.add(\"pointer-event\")):(F.on(this._element,\"touchstart.bs.swipe\",(t=\u003ethis._start(t))),F.on(this._element,\"touchmove.bs.swipe\",(t=\u003ethis._move(t))),F.on(this._element,\"touchend.bs.swipe\",(t=\u003ethis._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents\u0026\u0026(\"pen\"===t.pointerType||\"touch\"===t.pointerType)}static isSupported(){return\"ontouchstart\"in document.documentElement||navigator.maxTouchPoints\u003e0}}const Z=\"next\",tt=\"prev\",et=\"left\",st=\"right\",it=\"slid.bs.carousel\",nt=\"carousel\",ot=\"active\",rt={ArrowLeft:st,ArrowRight:et},at={interval:5e3,keyboard:!0,pause:\"hover\",ride:!1,touch:!0,wrap:!0},lt={interval:\"(number|boolean)\",keyboard:\"boolean\",pause:\"(string|boolean)\",ride:\"(boolean|string)\",touch:\"boolean\",wrap:\"boolean\"};class ct extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=K.findOne(\".carousel-indicators\",this._element),this._addEventListeners(),this._config.ride===nt\u0026\u0026this.cycle()}static get Default(){return at}static get DefaultType(){return lt}static get NAME(){return\"carousel\"}next(){this._slide(Z)}nextWhenVisible(){!document.hidden\u0026\u0026h(this._element)\u0026\u0026this.next()}prev(){this._slide(tt)}pause(){this._isSliding\u0026\u0026a(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=\u003ethis.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride\u0026\u0026(this._isSliding?F.one(this._element,it,(()=\u003ethis.cycle())):this.cycle())}to(t){const e=this._getItems();if(t\u003ee.length-1||t\u003c0)return;if(this._isSliding)return void F.one(this._element,it,(()=\u003ethis.to(t)));const s=this._getItemIndex(this._getActive());if(s===t)return;const i=t\u003es?Z:tt;this._slide(i,e[t])}dispose(){this._swipeHelper\u0026\u0026this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard\u0026\u0026F.on(this._element,\"keydown.bs.carousel\",(t=\u003ethis._keydown(t))),\"hover\"===this._config.pause\u0026\u0026(F.on(this._element,\"mouseenter.bs.carousel\",(()=\u003ethis.pause())),F.on(this._element,\"mouseleave.bs.carousel\",(()=\u003ethis._maybeEnableCycle()))),this._config.touch\u0026\u0026J.isSupported()\u0026\u0026this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of K.find(\".carousel-item img\",this._element))F.on(t,\"dragstart.bs.carousel\",(t=\u003et.preventDefault()));const t={leftCallback:()=\u003ethis._slide(this._directionToOrder(et)),rightCallback:()=\u003ethis._slide(this._directionToOrder(st)),endCallback:()=\u003e{\"hover\"===this._config.pause\u0026\u0026(this.pause(),this.touchTimeout\u0026\u0026clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=\u003ethis._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new J(this._element,t)}_keydown(t){if(\/input|textarea\/i.test(t.target.tagName))return;const e=rt[t.key];e\u0026\u0026(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=K.findOne(\".active\",this._indicatorsElement);e.classList.remove(ot),e.removeAttribute(\"aria-current\");const s=K.findOne(`[data-bs-slide-to=\"${t}\"]`,this._indicatorsElement);s\u0026\u0026(s.classList.add(ot),s.setAttribute(\"aria-current\",\"true\"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute(\"data-bs-interval\"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const s=this._getActive(),i=t===Z,n=e||w(this._getItems(),s,i,this._config.wrap);if(n===s)return;const o=this._getItemIndex(n),r=e=\u003eF.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(s),to:o});if(r(\"slide.bs.carousel\").defaultPrevented)return;if(!s||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=n;const l=i?\"carousel-item-start\":\"carousel-item-end\",c=i?\"carousel-item-next\":\"carousel-item-prev\";n.classList.add(c),g(n),s.classList.add(l),n.classList.add(l),this._queueCallback((()=\u003e{n.classList.remove(l,c),n.classList.add(ot),s.classList.remove(ot,c,l),this._isSliding=!1,r(it)}),s,this._isAnimated()),a\u0026\u0026this.cycle()}_isAnimated(){return this._element.classList.contains(\"slide\")}_getActive(){return K.findOne(\".active.carousel-item\",this._element)}_getItems(){return K.find(\".carousel-item\",this._element)}_clearInterval(){this._interval\u0026\u0026(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===et?tt:Z:t===et?Z:tt}_orderToDirection(t){return p()?t===tt?et:st:t===tt?st:et}static jQueryInterface(t){return this.each((function(){const e=ct.getOrCreateInstance(this,t);if(\"number\"!=typeof t){if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}else e.to(t)}))}}F.on(document,\"click.bs.carousel.data-api\",\"[data-bs-slide], [data-bs-slide-to]\",(function(t){const e=K.getElementFromSelector(this);if(!e||!e.classList.contains(nt))return;t.preventDefault();const s=ct.getOrCreateInstance(e),i=this.getAttribute(\"data-bs-slide-to\");return i?(s.to(i),void s._maybeEnableCycle()):\"next\"===B.getDataAttribute(this,\"slide\")?(s.next(),void s._maybeEnableCycle()):(s.prev(),void s._maybeEnableCycle())})),F.on(window,\"load.bs.carousel.data-api\",(()=\u003e{const t=K.find('[data-bs-ride=\"carousel\"]');for(const e of t)ct.getOrCreateInstance(e)})),b(ct);const ht=\"show\",dt=\"collapse\",ut=\"collapsing\",_t='[data-bs-toggle=\"collapse\"]',gt={parent:null,toggle:!0},ft={parent:\"(null|element)\",toggle:\"boolean\"};class mt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const s=K.find(_t);for(const t of s){const e=K.getSelectorFromElement(t),s=K.find(e).filter((t=\u003et===this._element));null!==e\u0026\u0026s.length\u0026\u0026this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle\u0026\u0026this.toggle()}static get Default(){return gt}static get DefaultType(){return ft}static get NAME(){return\"collapse\"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent\u0026\u0026(t=this._getFirstLevelChildren(\".collapse.show, .collapse.collapsing\").filter((t=\u003et!==this._element)).map((t=\u003emt.getOrCreateInstance(t,{toggle:!1})))),t.length\u0026\u0026t[0]._isTransitioning)return;if(F.trigger(this._element,\"show.bs.collapse\").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(dt),this._element.classList.add(ut),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=\u003e{this._isTransitioning=!1,this._element.classList.remove(ut),this._element.classList.add(dt,ht),this._element.style[e]=\"\",F.trigger(this._element,\"shown.bs.collapse\")}),this._element,!0),this._element.style[e]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(F.trigger(this._element,\"hide.bs.collapse\").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,g(this._element),this._element.classList.add(ut),this._element.classList.remove(dt,ht);for(const t of this._triggerArray){const e=K.getElementFromSelector(t);e\u0026\u0026!this._isShown(e)\u0026\u0026this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]=\"\",this._queueCallback((()=\u003e{this._isTransitioning=!1,this._element.classList.remove(ut),this._element.classList.add(dt),F.trigger(this._element,\"hidden.bs.collapse\")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ht)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=c(t.parent),t}_getDimension(){return this._element.classList.contains(\"collapse-horizontal\")?\"width\":\"height\"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(_t);for(const e of t){const t=K.getElementFromSelector(e);t\u0026\u0026this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=K.find(\":scope .collapse .collapse\",this._config.parent);return K.find(t,this._config.parent).filter((t=\u003e!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const s of t)s.classList.toggle(\"collapsed\",!e),s.setAttribute(\"aria-expanded\",e)}static jQueryInterface(t){const e={};return\"string\"==typeof t\u0026\u0026\/show|hide\/.test(t)\u0026\u0026(e.toggle=!1),this.each((function(){const s=mt.getOrCreateInstance(this,e);if(\"string\"==typeof t){if(void 0===s[t])throw new TypeError(`No method named \"${t}\"`);s[t]()}}))}}F.on(document,\"click.bs.collapse.data-api\",_t,(function(t){(\"A\"===t.target.tagName||t.delegateTarget\u0026\u0026\"A\"===t.delegateTarget.tagName)\u0026\u0026t.preventDefault();for(const t of K.getMultipleElementsFromSelector(this))mt.getOrCreateInstance(t,{toggle:!1}).toggle()})),b(mt);const pt=\"dropdown\",bt=\"ArrowUp\",vt=\"ArrowDown\",yt=\"click.bs.dropdown.data-api\",wt=\"keydown.bs.dropdown.data-api\",At=\"show\",Et='[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)',Ct=`${Et}.show`,Tt=\".dropdown-menu\",kt=p()?\"top-end\":\"top-start\",St=p()?\"top-start\":\"top-end\",Lt=p()?\"bottom-end\":\"bottom-start\",Ot=p()?\"bottom-start\":\"bottom-end\",It=p()?\"left-start\":\"right-start\",Dt=p()?\"right-start\":\"left-start\",Nt={autoClose:!0,boundary:\"clippingParents\",display:\"dynamic\",offset:[0,2],popperConfig:null,reference:\"toggle\"},Pt={autoClose:\"(boolean|string)\",boundary:\"(string|element)\",display:\"string\",offset:\"(array|string|function)\",popperConfig:\"(null|object|function)\",reference:\"(string|element|object)\"};class xt extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=K.next(this._element,Tt)[0]||K.prev(this._element,Tt)[0]||K.findOne(Tt,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Nt}static get DefaultType(){return Pt}static get NAME(){return pt}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!F.trigger(this._element,\"show.bs.dropdown\",t).defaultPrevented){if(this._createPopper(),\"ontouchstart\"in document.documentElement\u0026\u0026!this._parent.closest(\".navbar-nav\"))for(const t of[].concat(...document.body.children))F.on(t,\"mouseover\",_);this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),this._menu.classList.add(At),this._element.classList.add(At),F.trigger(this._element,\"shown.bs.dropdown\",t)}}hide(){if(d(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper\u0026\u0026this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper\u0026\u0026this._popper.update()}_completeHide(t){if(!F.trigger(this._element,\"hide.bs.dropdown\",t).defaultPrevented){if(\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))F.off(t,\"mouseover\",_);this._popper\u0026\u0026this._popper.destroy(),this._menu.classList.remove(At),this._element.classList.remove(At),this._element.setAttribute(\"aria-expanded\",\"false\"),B.removeDataAttribute(this._menu,\"popper\"),F.trigger(this._element,\"hidden.bs.dropdown\",t)}}_getConfig(t){if(\"object\"==typeof(t=super._getConfig(t)).reference\u0026\u0026!l(t.reference)\u0026\u0026\"function\"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${pt.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);return t}_createPopper(){if(void 0===s)throw new TypeError(\"Bootstrap's dropdowns require Popper (https:\/\/popper.js.org)\");let t=this._element;\"parent\"===this._config.reference?t=this._parent:l(this._config.reference)?t=c(this._config.reference):\"object\"==typeof this._config.reference\u0026\u0026(t=this._config.reference);const e=this._getPopperConfig();this._popper=s.createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(At)}_getPlacement(){const t=this._parent;if(t.classList.contains(\"dropend\"))return It;if(t.classList.contains(\"dropstart\"))return Dt;if(t.classList.contains(\"dropup-center\"))return\"top\";if(t.classList.contains(\"dropdown-center\"))return\"bottom\";const e=\"end\"===getComputedStyle(this._menu).getPropertyValue(\"--bs-position\").trim();return t.classList.contains(\"dropup\")?e?St:kt:e?Ot:Lt}_detectNavbar(){return null!==this._element.closest(\".navbar\")}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map((t=\u003eNumber.parseInt(t,10))):\"function\"==typeof t?e=\u003et(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"offset\",options:{offset:this._getOffset()}}]};return(this._inNavbar||\"static\"===this._config.display)\u0026\u0026(B.setDataAttribute(this._menu,\"popper\",\"static\"),t.modifiers=[{name:\"applyStyles\",enabled:!1}]),{...t,...v(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const s=K.find(\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",this._menu).filter((t=\u003eh(t)));s.length\u0026\u0026w(s,e,t===vt,!s.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}static clearMenus(t){if(2===t.button||\"keyup\"===t.type\u0026\u0026\"Tab\"!==t.key)return;const e=K.find(Ct);for(const s of e){const e=xt.getInstance(s);if(!e||!1===e._config.autoClose)continue;const i=t.composedPath(),n=i.includes(e._menu);if(i.includes(e._element)||\"inside\"===e._config.autoClose\u0026\u0026!n||\"outside\"===e._config.autoClose\u0026\u0026n)continue;if(e._menu.contains(t.target)\u0026\u0026(\"keyup\"===t.type\u0026\u0026\"Tab\"===t.key||\/input|select|option|textarea|form\/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};\"click\"===t.type\u0026\u0026(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=\/input|textarea\/i.test(t.target.tagName),s=\"Escape\"===t.key,i=[bt,vt].includes(t.key);if(!i\u0026\u0026!s)return;if(e\u0026\u0026!s)return;t.preventDefault();const n=this.matches(Et)?this:K.prev(this,Et)[0]||K.next(this,Et)[0]||K.findOne(Et,t.delegateTarget.parentNode),o=xt.getOrCreateInstance(n);if(i)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()\u0026\u0026(t.stopPropagation(),o.hide(),n.focus())}}F.on(document,wt,Et,xt.dataApiKeydownHandler),F.on(document,wt,Tt,xt.dataApiKeydownHandler),F.on(document,yt,xt.clearMenus),F.on(document,\"keyup.bs.dropdown.data-api\",xt.clearMenus),F.on(document,yt,Et,(function(t){t.preventDefault(),xt.getOrCreateInstance(this).toggle()})),b(xt);const Mt=\"show\",jt=\"mousedown.bs.backdrop\",Ft={className:\"modal-backdrop\",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:\"body\"},$t={className:\"string\",clickCallback:\"(function|null)\",isAnimated:\"boolean\",isVisible:\"boolean\",rootElement:\"(element|string)\"};class zt extends q{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Ft}static get DefaultType(){return $t}static get NAME(){return\"backdrop\"}show(t){if(!this._config.isVisible)return void v(t);this._append();const e=this._getElement();this._config.isAnimated\u0026\u0026g(e),e.classList.add(Mt),this._emulateAnimation((()=\u003e{v(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Mt),this._emulateAnimation((()=\u003e{this.dispose(),v(t)}))):v(t)}dispose(){this._isAppended\u0026\u0026(F.off(this._element,jt),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement(\"div\");t.className=this._config.className,this._config.isAnimated\u0026\u0026t.classList.add(\"fade\"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=c(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),F.on(t,jt,(()=\u003e{v(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const Ht=\".bs.focustrap\",Bt=\"backward\",qt={autofocus:!0,trapElement:null},Wt={autofocus:\"boolean\",trapElement:\"element\"};class Rt extends q{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return qt}static get DefaultType(){return Wt}static get NAME(){return\"focustrap\"}activate(){this._isActive||(this._config.autofocus\u0026\u0026this._config.trapElement.focus(),F.off(document,Ht),F.on(document,\"focusin.bs.focustrap\",(t=\u003ethis._handleFocusin(t))),F.on(document,\"keydown.tab.bs.focustrap\",(t=\u003ethis._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive\u0026\u0026(this._isActive=!1,F.off(document,Ht))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const s=K.focusableChildren(e);0===s.length?e.focus():this._lastTabNavDirection===Bt?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){\"Tab\"===t.key\u0026\u0026(this._lastTabNavDirection=t.shiftKey?Bt:\"forward\")}}const Kt=\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",Vt=\".sticky-top\",Qt=\"padding-right\",Xt=\"margin-right\";class Yt{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Qt,(e=\u003ee+t)),this._setElementAttributes(Kt,Qt,(e=\u003ee+t)),this._setElementAttributes(Vt,Xt,(e=\u003ee-t))}reset(){this._resetElementAttributes(this._element,\"overflow\"),this._resetElementAttributes(this._element,Qt),this._resetElementAttributes(Kt,Qt),this._resetElementAttributes(Vt,Xt)}isOverflowing(){return this.getWidth()\u003e0}_disableOverFlow(){this._saveInitialAttribute(this._element,\"overflow\"),this._element.style.overflow=\"hidden\"}_setElementAttributes(t,e,s){const i=this.getWidth();this._applyManipulationCallback(t,(t=\u003e{if(t!==this._element\u0026\u0026window.innerWidth\u003et.clientWidth+i)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${s(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const s=t.style.getPropertyValue(e);s\u0026\u0026B.setDataAttribute(t,e,s)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=\u003e{const s=B.getDataAttribute(t,e);null!==s?(B.removeDataAttribute(t,e),t.style.setProperty(e,s)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(l(t))e(t);else for(const s of K.find(t,this._element))e(s)}}const Ut=\".bs.modal\",Gt=\"hidden.bs.modal\",Jt=\"show.bs.modal\",Zt=\"modal-open\",te=\"show\",ee=\"modal-static\",se={backdrop:!0,focus:!0,keyboard:!0},ie={backdrop:\"(boolean|string)\",focus:\"boolean\",keyboard:\"boolean\"};class ne extends W{constructor(t,e){super(t,e),this._dialog=K.findOne(\".modal-dialog\",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Yt,this._addEventListeners()}static get Default(){return se}static get DefaultType(){return ie}static get NAME(){return\"modal\"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||F.trigger(this._element,Jt,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Zt),this._adjustDialog(),this._backdrop.show((()=\u003ethis._showElement(t))))}hide(){this._isShown\u0026\u0026!this._isTransitioning\u0026\u0026(F.trigger(this._element,\"hide.bs.modal\").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(te),this._queueCallback((()=\u003ethis._hideModal()),this._element,this._isAnimated())))}dispose(){F.off(window,Ut),F.off(this._dialog,Ut),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new zt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Rt({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.scrollTop=0;const e=K.findOne(\".modal-body\",this._dialog);e\u0026\u0026(e.scrollTop=0),g(this._element),this._element.classList.add(te),this._queueCallback((()=\u003e{this._config.focus\u0026\u0026this._focustrap.activate(),this._isTransitioning=!1,F.trigger(this._element,\"shown.bs.modal\",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){F.on(this._element,\"keydown.dismiss.bs.modal\",(t=\u003e{\"Escape\"===t.key\u0026\u0026(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),F.on(window,\"resize.bs.modal\",(()=\u003e{this._isShown\u0026\u0026!this._isTransitioning\u0026\u0026this._adjustDialog()})),F.on(this._element,\"mousedown.dismiss.bs.modal\",(t=\u003e{F.one(this._element,\"click.dismiss.bs.modal\",(e=\u003e{this._element===t.target\u0026\u0026this._element===e.target\u0026\u0026(\"static\"!==this._config.backdrop?this._config.backdrop\u0026\u0026this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._isTransitioning=!1,this._backdrop.hide((()=\u003e{document.body.classList.remove(Zt),this._resetAdjustments(),this._scrollBar.reset(),F.trigger(this._element,Gt)}))}_isAnimated(){return this._element.classList.contains(\"fade\")}_triggerBackdropTransition(){if(F.trigger(this._element,\"hidePrevented.bs.modal\").defaultPrevented)return;const t=this._element.scrollHeight\u003edocument.documentElement.clientHeight,e=this._element.style.overflowY;\"hidden\"===e||this._element.classList.contains(ee)||(t||(this._element.style.overflowY=\"hidden\"),this._element.classList.add(ee),this._queueCallback((()=\u003e{this._element.classList.remove(ee),this._queueCallback((()=\u003e{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight\u003edocument.documentElement.clientHeight,e=this._scrollBar.getWidth(),s=e\u003e0;if(s\u0026\u0026!t){const t=p()?\"paddingLeft\":\"paddingRight\";this._element.style[t]=`${e}px`}if(!s\u0026\u0026t){const t=p()?\"paddingRight\":\"paddingLeft\";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"}static jQueryInterface(t,e){return this.each((function(){const s=ne.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===s[t])throw new TypeError(`No method named \"${t}\"`);s[t](e)}}))}}F.on(document,\"click.bs.modal.data-api\",'[data-bs-toggle=\"modal\"]',(function(t){const e=K.getElementFromSelector(this);[\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026t.preventDefault(),F.one(e,Jt,(t=\u003e{t.defaultPrevented||F.one(e,Gt,(()=\u003e{h(this)\u0026\u0026this.focus()}))}));const s=K.findOne(\".modal.show\");s\u0026\u0026ne.getInstance(s).hide(),ne.getOrCreateInstance(e).toggle(this)})),V(ne),b(ne);const oe=\"show\",re=\"showing\",ae=\"hiding\",le=\".offcanvas.show\",ce=\"hidePrevented.bs.offcanvas\",he=\"hidden.bs.offcanvas\",de={backdrop:!0,keyboard:!0,scroll:!1},ue={backdrop:\"(boolean|string)\",keyboard:\"boolean\",scroll:\"boolean\"};class _e extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return de}static get DefaultType(){return ue}static get NAME(){return\"offcanvas\"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||F.trigger(this._element,\"show.bs.offcanvas\",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Yt).hide(),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.classList.add(re),this._queueCallback((()=\u003e{this._config.scroll\u0026\u0026!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(oe),this._element.classList.remove(re),F.trigger(this._element,\"shown.bs.offcanvas\",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown\u0026\u0026(F.trigger(this._element,\"hide.bs.offcanvas\").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(ae),this._backdrop.hide(),this._queueCallback((()=\u003e{this._element.classList.remove(oe,ae),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._config.scroll||(new Yt).reset(),F.trigger(this._element,he)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new zt({className:\"offcanvas-backdrop\",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=\u003e{\"static\"!==this._config.backdrop?this.hide():F.trigger(this._element,ce)}:null})}_initializeFocusTrap(){return new Rt({trapElement:this._element})}_addEventListeners(){F.on(this._element,\"keydown.dismiss.bs.offcanvas\",(t=\u003e{\"Escape\"===t.key\u0026\u0026(this._config.keyboard?this.hide():F.trigger(this._element,ce))}))}static jQueryInterface(t){return this.each((function(){const e=_e.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}F.on(document,\"click.bs.offcanvas.data-api\",'[data-bs-toggle=\"offcanvas\"]',(function(t){const e=K.getElementFromSelector(this);if([\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026t.preventDefault(),d(this))return;F.one(e,he,(()=\u003e{h(this)\u0026\u0026this.focus()}));const s=K.findOne(le);s\u0026\u0026s!==e\u0026\u0026_e.getInstance(s).hide(),_e.getOrCreateInstance(e).toggle(this)})),F.on(window,\"load.bs.offcanvas.data-api\",(()=\u003e{for(const t of K.find(le))_e.getOrCreateInstance(t).show()})),F.on(window,\"resize.bs.offcanvas\",(()=\u003e{for(const t of K.find(\"[aria-modal][class*=show][class*=offcanvas-]\"))\"fixed\"!==getComputedStyle(t).position\u0026\u0026_e.getOrCreateInstance(t).hide()})),V(_e),b(_e);const ge={\"*\":[\"class\",\"dir\",\"id\",\"lang\",\"role\",\/^aria-[\\w-]*$\/i],a:[\"target\",\"href\",\"title\",\"rel\"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:[\"src\",\"srcset\",\"alt\",\"title\",\"width\",\"height\"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},fe=new Set([\"background\",\"cite\",\"href\",\"itemtype\",\"longdesc\",\"poster\",\"src\",\"xlink:href\"]),me=\/^(?!javascript:)(?:[a-z0-9+.-]+:|[^\u0026:\/?#]*(?:[\/?#]|$))\/i,pe=(t,e)=\u003e{const s=t.nodeName.toLowerCase();return e.includes(s)?!fe.has(s)||Boolean(me.test(t.nodeValue)):e.filter((t=\u003et instanceof RegExp)).some((t=\u003et.test(s)))},be={allowList:ge,content:{},extraClass:\"\",html:!1,sanitize:!0,sanitizeFn:null,template:\"\u003cdiv\u003e\u003c\/div\u003e\"},ve={allowList:\"object\",content:\"object\",extraClass:\"(string|function)\",html:\"boolean\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",template:\"string\"},ye={entry:\"(string|element|function|null)\",selector:\"(string|element)\"};class we extends q{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return be}static get DefaultType(){return ve}static get NAME(){return\"TemplateFactory\"}getContent(){return Object.values(this._config.content).map((t=\u003ethis._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length\u003e0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement(\"div\");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,s]of Object.entries(this._config.content))this._setContent(t,s,e);const e=t.children[0],s=this._resolvePossibleFunction(this._config.extraClass);return s\u0026\u0026e.classList.add(...s.split(\" \")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,s]of Object.entries(t))super._typeCheckConfig({selector:e,entry:s},ye)}_setContent(t,e,s){const i=K.findOne(s,t);i\u0026\u0026((e=this._resolvePossibleFunction(e))?l(e)?this._putElementInTemplate(c(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,s){if(!t.length)return t;if(s\u0026\u0026\"function\"==typeof s)return s(t);const i=(new window.DOMParser).parseFromString(t,\"text\/html\"),n=[].concat(...i.body.querySelectorAll(\"*\"));for(const t of n){const s=t.nodeName.toLowerCase();if(!Object.keys(e).includes(s)){t.remove();continue}const i=[].concat(...t.attributes),n=[].concat(e[\"*\"]||[],e[s]||[]);for(const e of i)pe(e,n)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return v(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML=\"\",void e.append(t);e.textContent=t.textContent}}const Ae=new Set([\"sanitize\",\"allowList\",\"sanitizeFn\"]),Ee=\"fade\",Ce=\"show\",Te=\".modal\",ke=\"hide.bs.modal\",Se=\"hover\",Le=\"focus\",Oe={AUTO:\"auto\",TOP:\"top\",RIGHT:p()?\"left\":\"right\",BOTTOM:\"bottom\",LEFT:p()?\"right\":\"left\"},Ie={allowList:ge,animation:!0,boundary:\"clippingParents\",container:!1,customClass:\"\",delay:0,fallbackPlacements:[\"top\",\"right\",\"bottom\",\"left\"],html:!1,offset:[0,6],placement:\"top\",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'\u003cdiv class=\"tooltip\" role=\"tooltip\"\u003e\u003cdiv class=\"tooltip-arrow\"\u003e\u003c\/div\u003e\u003cdiv class=\"tooltip-inner\"\u003e\u003c\/div\u003e\u003c\/div\u003e',title:\"\",trigger:\"hover focus\"},De={allowList:\"object\",animation:\"boolean\",boundary:\"(string|element)\",container:\"(string|element|boolean)\",customClass:\"(string|function)\",delay:\"(number|object)\",fallbackPlacements:\"array\",html:\"boolean\",offset:\"(array|string|function)\",placement:\"(string|function)\",popperConfig:\"(null|object|function)\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",selector:\"(string|boolean)\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\"};class Ne extends W{constructor(t,e){if(void 0===s)throw new TypeError(\"Bootstrap's tooltips require Popper (https:\/\/popper.js.org)\");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ie}static get DefaultType(){return De}static get NAME(){return\"tooltip\"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled\u0026\u0026(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),F.off(this._element.closest(Te),ke,this._hideModalHandler),this._element.getAttribute(\"data-bs-original-title\")\u0026\u0026this._element.setAttribute(\"title\",this._element.getAttribute(\"data-bs-original-title\")),this._disposePopper(),super.dispose()}show(){if(\"none\"===this._element.style.display)throw new Error(\"Please use show on visible elements\");if(!this._isWithContent()||!this._isEnabled)return;const t=F.trigger(this._element,this.constructor.eventName(\"show\")),e=(u(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const s=this._getTipElement();this._element.setAttribute(\"aria-describedby\",s.getAttribute(\"id\"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),F.trigger(this._element,this.constructor.eventName(\"inserted\"))),this._popper=this._createPopper(s),s.classList.add(Ce),\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))F.on(t,\"mouseover\",_);this._queueCallback((()=\u003e{F.trigger(this._element,this.constructor.eventName(\"shown\")),!1===this._isHovered\u0026\u0026this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()\u0026\u0026!F.trigger(this._element,this.constructor.eventName(\"hide\")).defaultPrevented){if(this._getTipElement().classList.remove(Ce),\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))F.off(t,\"mouseover\",_);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=\u003e{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute(\"aria-describedby\"),F.trigger(this._element,this.constructor.eventName(\"hidden\")))}),this.tip,this._isAnimated())}}update(){this._popper\u0026\u0026this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ee,Ce),e.classList.add(`bs-${this.constructor.NAME}-auto`);const s=(t=\u003e{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute(\"id\",s),this._isAnimated()\u0026\u0026e.classList.add(Ee),e}setContent(t){this._newContent=t,this._isShown()\u0026\u0026(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new we({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{\".tooltip-inner\":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute(\"data-bs-original-title\")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip\u0026\u0026this.tip.classList.contains(Ee)}_isShown(){return this.tip\u0026\u0026this.tip.classList.contains(Ce)}_createPopper(t){const e=v(this._config.placement,[this,t,this._element]),i=Oe[e.toUpperCase()];return s.createPopper(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map((t=\u003eNumber.parseInt(t,10))):\"function\"==typeof t?e=\u003et(e,this._element):t}_resolvePossibleFunction(t){return v(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:\"flip\",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:\"offset\",options:{offset:this._getOffset()}},{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"arrow\",options:{element:`.${this.constructor.NAME}-arrow`}},{name:\"preSetPlacement\",enabled:!0,phase:\"beforeMain\",fn:t=\u003e{this._getTipElement().setAttribute(\"data-popper-placement\",t.state.placement)}}]};return{...e,...v(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(\" \");for(const e of t)if(\"click\"===e)F.on(this._element,this.constructor.eventName(\"click\"),this._config.selector,(t=\u003e{this._initializeOnDelegatedTarget(t).toggle()}));else if(\"manual\"!==e){const t=e===Se?this.constructor.eventName(\"mouseenter\"):this.constructor.eventName(\"focusin\"),s=e===Se?this.constructor.eventName(\"mouseleave\"):this.constructor.eventName(\"focusout\");F.on(this._element,t,this._config.selector,(t=\u003e{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[\"focusin\"===t.type?Le:Se]=!0,e._enter()})),F.on(this._element,s,this._config.selector,(t=\u003e{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[\"focusout\"===t.type?Le:Se]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=\u003e{this._element\u0026\u0026this.hide()},F.on(this._element.closest(Te),ke,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute(\"title\");t\u0026\u0026(this._element.getAttribute(\"aria-label\")||this._element.textContent.trim()||this._element.setAttribute(\"aria-label\",t),this._element.setAttribute(\"data-bs-original-title\",t),this._element.removeAttribute(\"title\"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=\u003e{this._isHovered\u0026\u0026this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=\u003e{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ae.has(t)\u0026\u0026delete e[t];return t={...e,...\"object\"==typeof t\u0026\u0026t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:c(t.container),\"number\"==typeof t.delay\u0026\u0026(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title\u0026\u0026(t.title=t.title.toString()),\"number\"==typeof t.content\u0026\u0026(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,s]of Object.entries(this._config))this.constructor.Default[e]!==s\u0026\u0026(t[e]=s);return t.selector=!1,t.trigger=\"manual\",t}_disposePopper(){this._popper\u0026\u0026(this._popper.destroy(),this._popper=null),this.tip\u0026\u0026(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Ne.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}b(Ne);const Pe={...Ne.Default,content:\"\",offset:[0,8],placement:\"right\",template:'\u003cdiv class=\"popover\" role=\"tooltip\"\u003e\u003cdiv class=\"popover-arrow\"\u003e\u003c\/div\u003e\u003ch3 class=\"popover-header\"\u003e\u003c\/h3\u003e\u003cdiv class=\"popover-body\"\u003e\u003c\/div\u003e\u003c\/div\u003e',trigger:\"click\"},xe={...Ne.DefaultType,content:\"(null|string|element|function)\"};class Me extends Ne{static get Default(){return Pe}static get DefaultType(){return xe}static get NAME(){return\"popover\"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{\".popover-header\":this._getTitle(),\".popover-body\":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=Me.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}b(Me);const je=\"click.bs.scrollspy\",Fe=\"active\",$e=\"[href]\",ze={offset:null,rootMargin:\"0px 0px -25%\",smoothScroll:!1,target:null,threshold:[.1,.5,1]},He={offset:\"(number|null)\",rootMargin:\"string\",smoothScroll:\"boolean\",target:\"element\",threshold:\"array\"};class Be extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=\"visible\"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ze}static get DefaultType(){return He}static get NAME(){return\"scrollspy\"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=c(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,\"string\"==typeof t.threshold\u0026\u0026(t.threshold=t.threshold.split(\",\").map((t=\u003eNumber.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll\u0026\u0026(F.off(this._config.target,je),F.on(this._config.target,je,$e,(t=\u003e{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const s=this._rootElement||window,i=e.offsetTop-this._element.offsetTop;if(s.scrollTo)return void s.scrollTo({top:i,behavior:\"smooth\"});s.scrollTop=i}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=\u003ethis._observerCallback(t)),t)}_observerCallback(t){const e=t=\u003ethis._targetLinks.get(`#${t.target.id}`),s=t=\u003e{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},i=(this._rootElement||document.documentElement).scrollTop,n=i\u003e=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop\u003e=this._previousScrollData.visibleEntryTop;if(n\u0026\u0026t){if(s(o),!i)return}else n||t||s(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=K.find($e,this._config.target);for(const e of t){if(!e.hash||d(e))continue;const t=K.findOne(decodeURI(e.hash),this._element);h(t)\u0026\u0026(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t\u0026\u0026(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Fe),this._activateParents(t),F.trigger(this._element,\"activate.bs.scrollspy\",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(\"dropdown-item\"))K.findOne(\".dropdown-toggle\",t.closest(\".dropdown\")).classList.add(Fe);else for(const e of K.parents(t,\".nav, .list-group\"))for(const t of K.prev(e,\".nav-link, .nav-item \u003e .nav-link, .list-group-item\"))t.classList.add(Fe)}_clearActiveClass(t){t.classList.remove(Fe);const e=K.find(\"[href].active\",t);for(const t of e)t.classList.remove(Fe)}static jQueryInterface(t){return this.each((function(){const e=Be.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}F.on(window,\"load.bs.scrollspy.data-api\",(()=\u003e{for(const t of K.find('[data-bs-spy=\"scroll\"]'))Be.getOrCreateInstance(t)})),b(Be);const qe=\"ArrowLeft\",We=\"ArrowRight\",Re=\"ArrowUp\",Ke=\"ArrowDown\",Ve=\"active\",Qe=\"fade\",Xe=\"show\",Ye='[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]',Ue=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role=\"tab\"]:not(.dropdown-toggle), ${Ye}`;class Ge extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role=\"tablist\"]'),this._parent\u0026\u0026(this._setInitialAttributes(this._parent,this._getChildren()),F.on(this._element,\"keydown.bs.tab\",(t=\u003ethis._keydown(t))))}static get NAME(){return\"tab\"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),s=e?F.trigger(e,\"hide.bs.tab\",{relatedTarget:t}):null;F.trigger(t,\"show.bs.tab\",{relatedTarget:e}).defaultPrevented||s\u0026\u0026s.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t\u0026\u0026(t.classList.add(Ve),this._activate(K.getElementFromSelector(t)),this._queueCallback((()=\u003e{\"tab\"===t.getAttribute(\"role\")?(t.removeAttribute(\"tabindex\"),t.setAttribute(\"aria-selected\",!0),this._toggleDropDown(t,!0),F.trigger(t,\"shown.bs.tab\",{relatedTarget:e})):t.classList.add(Xe)}),t,t.classList.contains(Qe)))}_deactivate(t,e){t\u0026\u0026(t.classList.remove(Ve),t.blur(),this._deactivate(K.getElementFromSelector(t)),this._queueCallback((()=\u003e{\"tab\"===t.getAttribute(\"role\")?(t.setAttribute(\"aria-selected\",!1),t.setAttribute(\"tabindex\",\"-1\"),this._toggleDropDown(t,!1),F.trigger(t,\"hidden.bs.tab\",{relatedTarget:e})):t.classList.remove(Xe)}),t,t.classList.contains(Qe)))}_keydown(t){if(![qe,We,Re,Ke].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[We,Ke].includes(t.key),s=w(this._getChildren().filter((t=\u003e!d(t))),t.target,e,!0);s\u0026\u0026(s.focus({preventScroll:!0}),Ge.getOrCreateInstance(s).show())}_getChildren(){return K.find(Ue,this._parent)}_getActiveElem(){return this._getChildren().find((t=\u003ethis._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,\"role\",\"tablist\");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),s=this._getOuterElement(t);t.setAttribute(\"aria-selected\",e),s!==t\u0026\u0026this._setAttributeIfNotExists(s,\"role\",\"presentation\"),e||t.setAttribute(\"tabindex\",\"-1\"),this._setAttributeIfNotExists(t,\"role\",\"tab\"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=K.getElementFromSelector(t);e\u0026\u0026(this._setAttributeIfNotExists(e,\"role\",\"tabpanel\"),t.id\u0026\u0026this._setAttributeIfNotExists(e,\"aria-labelledby\",`${t.id}`))}_toggleDropDown(t,e){const s=this._getOuterElement(t);if(!s.classList.contains(\"dropdown\"))return;const i=(t,i)=\u003e{const n=K.findOne(t,s);n\u0026\u0026n.classList.toggle(i,e)};i(\".dropdown-toggle\",Ve),i(\".dropdown-menu\",Xe),s.setAttribute(\"aria-expanded\",e)}_setAttributeIfNotExists(t,e,s){t.hasAttribute(e)||t.setAttribute(e,s)}_elemIsActive(t){return t.classList.contains(Ve)}_getInnerElement(t){return t.matches(Ue)?t:K.findOne(Ue,t)}_getOuterElement(t){return t.closest(\".nav-item, .list-group-item\")||t}static jQueryInterface(t){return this.each((function(){const e=Ge.getOrCreateInstance(this);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}F.on(document,\"click.bs.tab\",Ye,(function(t){[\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026t.preventDefault(),d(this)||Ge.getOrCreateInstance(this).show()})),F.on(window,\"load.bs.tab\",(()=\u003e{for(const t of K.find('.active[data-bs-toggle=\"tab\"], .active[data-bs-toggle=\"pill\"], .active[data-bs-toggle=\"list\"]'))Ge.getOrCreateInstance(t)})),b(Ge);const Je=\"hide\",Ze=\"show\",ts=\"showing\",es={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},ss={animation:!0,autohide:!0,delay:5e3};class is extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ss}static get DefaultType(){return es}static get NAME(){return\"toast\"}show(){F.trigger(this._element,\"show.bs.toast\").defaultPrevented||(this._clearTimeout(),this._config.animation\u0026\u0026this._element.classList.add(\"fade\"),this._element.classList.remove(Je),g(this._element),this._element.classList.add(Ze,ts),this._queueCallback((()=\u003e{this._element.classList.remove(ts),F.trigger(this._element,\"shown.bs.toast\"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()\u0026\u0026(F.trigger(this._element,\"hide.bs.toast\").defaultPrevented||(this._element.classList.add(ts),this._queueCallback((()=\u003e{this._element.classList.add(Je),this._element.classList.remove(ts,Ze),F.trigger(this._element,\"hidden.bs.toast\")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()\u0026\u0026this._element.classList.remove(Ze),super.dispose()}isShown(){return this._element.classList.contains(Ze)}_maybeScheduleHide(){this._config.autohide\u0026\u0026(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=\u003e{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case\"mouseover\":case\"mouseout\":this._hasMouseInteraction=e;break;case\"focusin\":case\"focusout\":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){F.on(this._element,\"mouseover.bs.toast\",(t=\u003ethis._onInteraction(t,!0))),F.on(this._element,\"mouseout.bs.toast\",(t=\u003ethis._onInteraction(t,!1))),F.on(this._element,\"focusin.bs.toast\",(t=\u003ethis._onInteraction(t,!0))),F.on(this._element,\"focusout.bs.toast\",(t=\u003ethis._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=is.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}return V(is),b(is),{Alert:Q,Button:Y,Carousel:ct,Collapse:mt,Dropdown:xt,Modal:ne,Offcanvas:_e,Popover:Me,ScrollSpy:Be,Tab:Ge,Toast:is,Tooltip:Ne}}));\n\/\/# sourceMappingURL=bootstrap.min.js.map\/*\n *\tjQuery elevateZoom 3.0.8\n *\tDemo's and documentation:\n *\twww.elevateweb.co.uk\/image-zoom\n *\n *\tCopyright (c) 2012 Andrew Eades\n *\twww.elevateweb.co.uk\n *\n *\tDual licensed under the GPL and MIT licenses.\n *\thttp:\/\/en.wikipedia.org\/wiki\/MIT_License\n *\thttp:\/\/en.wikipedia.org\/wiki\/GNU_General_Public_License\n *\n\n\/*\n *\tjQuery elevateZoom 3.0.3\n *\tDemo's and documentation:\n *\twww.elevateweb.co.uk\/image-zoom\n *\n *\tCopyright (c) 2012 Andrew Eades\n *\twww.elevateweb.co.uk\n *\n *\tDual licensed under the GPL and MIT licenses.\n *\thttp:\/\/en.wikipedia.org\/wiki\/MIT_License\n *\thttp:\/\/en.wikipedia.org\/wiki\/GNU_General_Public_License\n *\/\n\n\nif ( typeof Object.create !== 'function' ) {\n\tObject.create = function( obj ) {\n\t\tfunction F() {};\n\t\tF.prototype = obj;\n\t\treturn new F();\n\t};\n}\n\n(function( $, window, document, undefined ) {\n\tvar ElevateZoom = {\n\t\t\tinit: function( options, elem ) {\n\t\t\t\tvar self = this;\n\n\t\t\t\tself.elem = elem;\n\t\t\t\tself.$elem = $( elem );\n\n\t\t\t\tself.imageSrc = self.$elem.data(\"zoom-image\") ? self.$elem.data(\"zoom-image\") : self.$elem.attr(\"src\");\n\n\t\t\t\tself.options = $.extend( {}, $.fn.elevateZoom.options, options );\n\n\t\t\t\t\/\/TINT OVERRIDE SETTINGS\n\t\t\t\tif(self.options.tint) {\n\t\t\t\t\tself.options.lensColour = \"none\", \/\/colour of the lens background\n\t\t\t\t\tself.options.lensOpacity =  \"1\" \/\/opacity of the lens\n\t\t\t\t}\n\t\t\t\t\/\/INNER OVERRIDE SETTINGS\n\t\t\t\tif(self.options.zoomType == \"inner\") {self.options.showLens = false;}\n\n\n\t\t\t\t\/\/Remove alt on hover\n\n\t\t\t\tself.$elem.parent().removeAttr('title').removeAttr('alt');\n\n\t\t\t\tself.zoomImage = self.imageSrc;\n\n\t\t\t\tself.refresh( 1 );\n\n\n\n\t\t\t\t\/\/Create the image swap from the gallery \n\t\t\t\t$('#'+self.options.gallery + ' a').click( function(e) { \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\/\/Set a class on the currently active gallery image\n\t\t\t\t\tif(self.options.galleryActiveClass){\n\t\t\t\t\t\t$('#'+self.options.gallery + ' a').removeClass(self.options.galleryActiveClass);\n\t\t\t\t\t\t$(this).addClass(self.options.galleryActiveClass);\n\t\t\t\t\t}\n\t\t\t\t\t\/\/stop any link on the a tag from working\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\/\/call the swap image function            \n\t\t\t\t\tif($(this).data(\"zoom-image\")){self.zoomImagePre = $(this).data(\"zoom-image\")}\n\t\t\t\t\telse{self.zoomImagePre = $(this).data(\"image\");}\n\t\t\t\t\tif(self.zoomImagePre !='video'){\n\t\t\t\t\tself.swaptheimage($(this).data(\"image\"), self.zoomImagePre);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t},\n\n\t\t\trefresh: function( length ) {\n\t\t\t\tvar self = this;\n\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tself.fetch(self.imageSrc);\n\n\t\t\t\t}, length || self.options.refresh );\n\t\t\t},\n\n\t\t\tfetch: function(imgsrc) {\n\t\t\t\t\/\/get the image\n\t\t\t\tvar self = this;\n\t\t\t\tvar newImg = new Image();\n\t\t\t\tnewImg.onload = function() {\n\t\t\t\t\t\/\/set the large image dimensions - used to calculte ratio's\n\t\t\t\t\tself.largeWidth = newImg.width;\n\t\t\t\t\tself.largeHeight = newImg.height;\n\t\t\t\t\t\/\/once image is loaded start the calls\n\t\t\t\t\tself.startZoom();\n\t\t\t\t\tself.currentImage = self.imageSrc;\n\t\t\t\t\t\/\/let caller know image has been loaded\n\t\t\t\t\tself.options.onZoomedImageLoaded(self.$elem);\n\t\t\t\t}\n\t\t\t\tnewImg.src = imgsrc; \/\/ this must be done AFTER setting onload\n\n\t\t\t\treturn;\n\n\t\t\t},\n\n\t\t\tstartZoom: function( ) {\n\t\t\t\tvar self = this;\n\t\t\t\t\/\/get dimensions of the non zoomed image\n\t\t\t\tself.nzWidth = self.$elem.width();\n\t\t\t\tself.nzHeight = self.$elem.height();\n\n\t\t\t\t\/\/activated elements\n\t\t\t\tself.isWindowActive = false;\n\t\t\t\tself.isLensActive = false;\n\t\t\t\tself.isTintActive = false;\n\t\t\t\tself.overWindow = false;    \n\n\t\t\t\t\/\/CrossFade Wrappe\n\t\t\t\tif(self.options.imageCrossfade){\n\t\t\t\t\tself.zoomWrap = self.$elem.wrap('\u003cdiv style=\"height:'+self.nzHeight+'px;width:'+self.nzWidth+'px;\" class=\"zoomWrapper\" \/\u003e');        \n\t\t\t\t\tself.$elem.css('position', 'absolute'); \n\t\t\t\t}\n\n\t\t\t\tself.zoomLock = 1;\n\t\t\t\tself.scrollingLock = false;\n\t\t\t\tself.changeBgSize = false;\n\t\t\t\tself.currentZoomLevel = self.options.zoomLevel;\n\n\n\t\t\t\t\/\/get offset of the non zoomed image\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\t\t\t\t\/\/calculate the width ratio of the large\/small image\n\t\t\t\tself.widthRatio = (self.largeWidth\/self.currentZoomLevel) \/ self.nzWidth;\n\t\t\t\tself.heightRatio = (self.largeHeight\/self.currentZoomLevel) \/ self.nzHeight; \n\n\n\t\t\t\t\/\/if window zoom        \n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.zoomWindowStyle = \"overflow: hidden;\"\n\t\t\t\t\t\t+ \"background-position: 0px 0px;text-align:center;\"  \n\t\t\t\t\t\t+ \"background-color: \" + String(self.options.zoomWindowBgColour)            \n\t\t\t\t\t\t+ \";width: \" + String(self.options.zoomWindowWidth) + \"px;\"\n\t\t\t\t\t\t+ \"height: \" + String(self.options.zoomWindowHeight)\n\t\t\t\t\t\t+ \"px;float: left;\"\n\t\t\t\t\t\t+ \"background-size: \"+ self.largeWidth\/self.currentZoomLevel+ \"px \" +self.largeHeight\/self.currentZoomLevel + \"px;\"\n\t\t\t\t\t\t+ \"display: none;z-index:100;\"\n\t\t\t\t\t\t+ \"border: \" + String(self.options.borderSize) \n\t\t\t\t\t\t+ \"px solid \" + self.options.borderColour \n\t\t\t\t\t\t+ \";background-repeat: no-repeat;\"\n\t\t\t\t\t\t+ \"position: absolute;\";\n\t\t\t\t}    \n\n\n\t\t\t\t\/\/if inner  zoom    \n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\/\/has a border been put on the image? Lets cater for this\n\n\t\t\t\t\tvar borderWidth = self.$elem.css(\"border-left-width\");\n\n\t\t\t\t\tself.zoomWindowStyle = \"overflow: hidden;\"\n\t\t\t\t\t\t+ \"margin-left: \" + String(borderWidth) + \";\" \n\t\t\t\t\t\t+ \"margin-top: \" + String(borderWidth) + \";\"         \n\t\t\t\t\t\t+ \"background-position: 0px 0px;\"\n\t\t\t\t\t\t+ \"width: \" + String(self.nzWidth) + \"px;\"\n\t\t\t\t\t\t+ \"height: \" + String(self.nzHeight)\n\t\t\t\t\t\t+ \"px;float: left;\"\n\t\t\t\t\t\t+ \"display: none;\"\n\t\t\t\t\t\t+ \"cursor:\"+(self.options.cursor)+\";\"\n\t\t\t\t\t\t+ \"px solid \" + self.options.borderColour \n\t\t\t\t\t\t+ \";background-repeat: no-repeat;\"\n\t\t\t\t\t\t+ \"position: absolute;\";\n\t\t\t\t}    \n\n\n\n\t\t\t\t\/\/lens style for window zoom\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\n\n\t\t\t\t\t\/\/ adjust images less than the window height\n\n\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\tlensHeight = self.nzHeight;              \n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t}\n\t\t\t\t\tif(self.largeWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t}       \n\t\t\t\t\telse{\n\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tself.lensStyle = \"background-position: 0px 0px;width: \" + String((self.options.zoomWindowWidth)\/self.widthRatio) + \"px;height: \" + String((self.options.zoomWindowHeight)\/self.heightRatio)\n\t\t\t\t\t+ \"px;float: right;display: none;\"\n\t\t\t\t\t+ \"overflow: hidden;\"\n\t\t\t\t\t+ \"z-index: 999;\"   \n\t\t\t\t\t+ \"-webkit-transform: translateZ(0);\"               \n\t\t\t\t\t+ \"opacity:\"+(self.options.lensOpacity)+\";filter: alpha(opacity = \"+(self.options.lensOpacity*100)+\"); zoom:1;\"\n\t\t\t\t\t+ \"width:\"+lensWidth+\"px;\"\n\t\t\t\t\t+ \"height:\"+lensHeight+\"px;\"\n\t\t\t\t\t+ \"background-color:\"+(self.options.lensColour)+\";\"\t\t\t\t\t\n\t\t\t\t\t+ \"cursor:\"+(self.options.cursor)+\";\"\n\t\t\t\t\t+ \"border: \"+(self.options.lensBorderSize)+\"px\" +\n\t\t\t\t\t\" solid \"+(self.options.lensBorderColour)+\";background-repeat: no-repeat;position: absolute;\";\n\t\t\t\t} \n\n\n\t\t\t\t\/\/tint style\n\t\t\t\tself.tintStyle = \"display: block;\"\n\t\t\t\t\t+ \"position: absolute;\"\n\t\t\t\t\t+ \"background-color: \"+self.options.tintColour+\";\"\t\n\t\t\t\t\t+ \"filter:alpha(opacity=0);\"\t\t\n\t\t\t\t\t+ \"opacity: 0;\"\t\n\t\t\t\t\t+ \"width: \" + self.nzWidth + \"px;\"\n\t\t\t\t\t+ \"height: \" + self.nzHeight + \"px;\"\n\n\t\t\t\t\t;\n\n\t\t\t\t\/\/lens style for lens zoom with optional round for modern browsers\n\t\t\t\tself.lensRound = '';\n\n\t\t\t\tif(self.options.zoomType == \"lens\") {\n\n\t\t\t\t\tself.lensStyle = \"background-position: 0px 0px;\"\n\t\t\t\t\t\t+ \"float: left;display: none;\"\n\t\t\t\t\t\t+ \"border: \" + String(self.options.borderSize) + \"px solid \" + self.options.borderColour+\";\"\n\t\t\t\t\t\t+ \"width:\"+ String(self.options.lensSize) +\"px;\"\n\t\t\t\t\t\t+ \"height:\"+ String(self.options.lensSize)+\"px;\"\n\t\t\t\t\t\t+ \"background-repeat: no-repeat;position: absolute;\";\n\n\n\t\t\t\t}\n\n\n\t\t\t\t\/\/does not round in all browsers\n\t\t\t\tif(self.options.lensShape == \"round\") {\n\t\t\t\t\tself.lensRound = \"border-top-left-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\"\n\t\t\t\t\t+ \"border-top-right-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\"\n\t\t\t\t\t+ \"border-bottom-left-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\"\n\t\t\t\t\t+ \"border-bottom-right-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\";\n\n\t\t\t\t}\n\n\t\t\t\t\/\/create the div's                                                + \"\"\n\t\t\t\t\/\/self.zoomContainer = $('\u003cdiv\/\u003e').addClass('zoomContainer').css({\"position\":\"relative\", \"height\":self.nzHeight, \"width\":self.nzWidth});\n\n\t\t\t\tself.zoomContainer = $('\u003cdiv class=\"zoomContainer\" style=\"-webkit-transform: translateZ(0);position:absolute;left:'+self.nzOffset.left+'px;top:'+self.nzOffset.top+'px;height:'+self.nzHeight+'px;width:'+self.nzWidth+'px;\"\u003e\u003c\/div\u003e');\n\t\t\t\t$('body').append(self.zoomContainer);\t\n\n\n\t\t\t\t\/\/this will add overflow hidden and contrain the lens on lens mode       \n\t\t\t\tif(self.options.containLensZoom \u0026\u0026 self.options.zoomType == \"lens\"){\n\t\t\t\t\tself.zoomContainer.css(\"overflow\", \"hidden\");\n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomLens = $(\"\u003cdiv class='zoomLens' style='\" + self.lensStyle + self.lensRound +\"'\u003e\u0026nbsp;\u003c\/div\u003e\")\n\t\t\t\t\t.appendTo(self.zoomContainer)\n\t\t\t\t\t.click(function () {\n\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t});\n\n\n\t\t\t\t\tif(self.options.tint) {\n\t\t\t\t\t\tself.tintContainer = $('\u003cdiv\/\u003e').addClass('tintContainer');\t\n\t\t\t\t\t\tself.zoomTint = $(\"\u003cdiv class='zoomTint' style='\"+self.tintStyle+\"'\u003e\u003c\/div\u003e\");\n\n\n\t\t\t\t\t\tself.zoomLens.wrap(self.tintContainer);\n\n\n\t\t\t\t\t\tself.zoomTintcss = self.zoomLens.after(self.zoomTint);\t\n\n\t\t\t\t\t\t\/\/if tint enabled - set an image to show over the tint\n\n\t\t\t\t\t\tself.zoomTintImage = $('\u003cimg style=\"position: absolute; left: 0px; top: 0px; max-width: none; width: '+self.nzWidth+'px; height: '+self.nzHeight+'px;\" src=\"'+self.imageSrc+'\"\u003e')\n\t\t\t\t\t\t.appendTo(self.zoomLens)\n\t\t\t\t\t\t.click(function () {\n\n\t\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t\t});\n\n\t\t\t\t\t}          \n\n\t\t\t\t}\n\n\n\n\n\n\n\n\t\t\t\t\/\/create zoom window \n\t\t\t\tif(isNaN(self.options.zoomWindowPosition)){\n\t\t\t\t\tself.zoomWindow = $(\"\u003cdiv style='z-index:999;left:\"+(self.windowOffsetLeft)+\"px;top:\"+(self.windowOffsetTop)+\"px;\" + self.zoomWindowStyle + \"' class='zoomWindow'\u003e\u0026nbsp;\u003c\/div\u003e\")\n\t\t\t\t\t.appendTo('body')\n\t\t\t\t\t.click(function () {\n\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tself.zoomWindow = $(\"\u003cdiv style='z-index:999;left:\"+(self.windowOffsetLeft)+\"px;top:\"+(self.windowOffsetTop)+\"px;\" + self.zoomWindowStyle + \"' class='zoomWindow'\u003e\u0026nbsp;\u003c\/div\u003e\")\n\t\t\t\t\t.appendTo(self.zoomContainer)\n\t\t\t\t\t.click(function () {\n\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t});\n\t\t\t\t}              \n\t\t\t\tself.zoomWindowContainer = $('\u003cdiv\/\u003e').addClass('zoomWindowContainer').css(\"width\",self.options.zoomWindowWidth);\n\t\t\t\tself.zoomWindow.wrap(self.zoomWindowContainer);\n\n\n\t\t\t\t\/\/  self.captionStyle = \"text-align: left;background-color: black;color: white;font-weight: bold;padding: 10px;font-family: sans-serif;font-size: 11px\";                                                                                                                                                                                                                                          \n\t\t\t\t\/\/ self.zoomCaption = $('\u003cdiv class=\"elevatezoom-caption\" style=\"'+self.captionStyle+'display: block; width: 280px;\"\u003eINSERT ALT TAG\u003c\/div\u003e').appendTo(self.zoomWindow.parent());\n\n\t\t\t\tif(self.options.zoomType == \"lens\") {\n\t\t\t\t\tself.zoomLens.css({ backgroundImage: \"url('\" + self.imageSrc + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + self.imageSrc + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + self.imageSrc + \"')\" }); \n\t\t\t\t}\n\t\t\t\t\/*-------------------END THE ZOOM WINDOW AND LENS----------------------------------*\/\n\t\t\t\t\/\/touch events\n\t\t\t\tself.$elem.bind('touchmove', function(e){    \n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];  \n\t\t\t\t\tself.setPosition(touch);\n\n\t\t\t\t});  \n\t\t\t\tself.zoomContainer.bind('touchmove', function(e){ \n\t\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\tself.showHideWindow(\"show\");\n\n\t\t\t\t\t}\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];  \n\t\t\t\t\tself.setPosition(touch); \n\n\t\t\t\t});  \t\n\t\t\t\tself.zoomContainer.bind('touchend', function(e){ \n\t\t\t\t\tself.showHideWindow(\"hide\");\n\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"hide\");}\n\t\t\t\t});  \t\n\n\t\t\t\tself.$elem.bind('touchend', function(e){ \n\t\t\t\t\tself.showHideWindow(\"hide\");\n\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"hide\");}\n\t\t\t\t});  \t\n\t\t\t\tif(self.options.showLens) {\n\t\t\t\t\tself.zoomLens.bind('touchmove', function(e){ \n\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tvar touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];  \n\t\t\t\t\t\tself.setPosition(touch); \n\t\t\t\t\t});    \n\n\n\t\t\t\t\tself.zoomLens.bind('touchend', function(e){ \n\t\t\t\t\t\tself.showHideWindow(\"hide\");\n\t\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"hide\");}\n\t\t\t\t\t});  \n\t\t\t\t}\n\t\t\t\t\/\/Needed to work in IE\n\t\t\t\tself.$elem.bind('mousemove', function(e){   \n\t\t\t\t\tif(self.overWindow == false){self.setElements(\"show\");}\n\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t}   \n\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\tself.lastY = e.clientY;    \n\n\t\t\t\t});  \t\n\n\t\t\t\tself.zoomContainer.bind('mousemove', function(e){ \n\n\t\t\t\t\tif(self.overWindow == false){self.setElements(\"show\");} \n\n\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired \n\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t}   \n\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t});  \t\n\t\t\t\tif(self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomLens.bind('mousemove', function(e){      \n\t\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t\t}   \n\t\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomTint.bind('mousemove', function(e){ \n\t\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t\t}   \n\t\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.bind('mousemove', function(e) {\n\t\t\t\t\t\t\/\/self.overWindow = true;\n\t\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t\t}   \n\t\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t\t});\n\n\t\t\t\t}\n\n\n\t\t\t\t\/\/  lensFadeOut: 500,  zoomTintFadeIn\n\t\t\t\tself.zoomContainer.add(self.$elem).mouseenter(function(){\n\n\t\t\t\t\tif(self.overWindow == false){self.setElements(\"show\");} \n\n\n\t\t\t\t}).mouseleave(function(){\n\t\t\t\t\tif(!self.scrollLock){\n\t\t\t\t\t\tself.setElements(\"hide\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\/\/end ove image\n\n\n\n\n\n\t\t\t\tif(self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomWindow.mouseenter(function(){\n\t\t\t\t\t\tself.overWindow = true;   \n\t\t\t\t\t\tself.setElements(\"hide\");                  \n\t\t\t\t\t}).mouseleave(function(){\n\n\t\t\t\t\t\tself.overWindow = false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\/\/end ove image\n\n\n\n\/\/\t\t\t\tvar delta = parseInt(e.originalEvent.wheelDelta || -e.originalEvent.detail);\n\n\t\t\t\t\/\/      $(this).empty();    \n\t\t\t\t\/\/    return false;\n\n\t\t\t\t\/\/fix for initial zoom setting\n\t\t\t\tif (self.options.zoomLevel != 1){\n\t\t\t\t\t\/\/\tself.changeZoomLevel(self.currentZoomLevel);\n\t\t\t\t}\n\t\t\t\t\/\/set the min zoomlevel\n\t\t\t\tif(self.options.minZoomLevel){\n\t\t\t\t\tself.minZoomLevel = self.options.minZoomLevel;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tself.minZoomLevel = self.options.scrollZoomIncrement * 2;\n\t\t\t\t}\n\n\n\t\t\t\tif(self.options.scrollZoom){\n\n\n\t\t\t\t\tself.zoomContainer.add(self.$elem).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function(e){\n\n\n\/\/\t\t\t\t\t\tin IE there is issue with firing of mouseleave - So check whether still scrolling\n\/\/\t\t\t\t\t\tand on mouseleave check if scrolllock          \n\t\t\t\t\t\tself.scrollLock = true;\n\t\t\t\t\t\tclearTimeout($.data(this, 'timer'));\n\t\t\t\t\t\t$.data(this, 'timer', setTimeout(function() {\n\t\t\t\t\t\t\tself.scrollLock = false;\n\t\t\t\t\t\t\t\/\/do something\n\t\t\t\t\t\t}, 250));\n\n\t\t\t\t\t\tvar theEvent = e.originalEvent.wheelDelta || e.originalEvent.detail*-1\n\n\n\t\t\t\t\t\t\/\/this.scrollTop += ( delta \u003c 0 ? 1 : -1 ) * 30;\n\t\t\t\t\t\t\/\/   e.preventDefault();\n\n\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\n\t\t\t\t\t\tif(theEvent \/120 \u003e 0) {\n\t\t\t\t\t\t\t\/\/scrolling up\n\t\t\t\t\t\t\tif(self.currentZoomLevel \u003e= self.minZoomLevel){ \n\t\t\t\t\t\t\t\tself.changeZoomLevel(self.currentZoomLevel-self.options.scrollZoomIncrement);        \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\/\/scrolling down\n\n\n\t\t\t\t\t\t\tif(self.options.maxZoomLevel){\n\t\t\t\t\t\t\t\tif(self.currentZoomLevel \u003c= self.options.maxZoomLevel){           \n\t\t\t\t\t\t\t\t\tself.changeZoomLevel(parseFloat(self.currentZoomLevel)+self.options.scrollZoomIncrement);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t\/\/andy \n\n\t\t\t\t\t\t\t\tself.changeZoomLevel(parseFloat(self.currentZoomLevel)+self.options.scrollZoomIncrement);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\n\t\t\t},\n\t\t\tsetElements: function(type) {\n\t\t\t\tvar self = this;\n        if(!self.options.zoomEnabled){return false;}\n\t\t\t\tif(type==\"show\"){\n\t\t\t\t\tif(self.isWindowSet){\n\t\t\t\t\t\tif(self.options.zoomType == \"inner\") {self.showHideWindow(\"show\");}\n\t\t\t\t\t\tif(self.options.zoomType == \"window\") {self.showHideWindow(\"show\");}\n\t\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"show\");}\n\t\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"show\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(type==\"hide\"){\n\t\t\t\t\tif(self.options.zoomType == \"window\") {self.showHideWindow(\"hide\");}\n\t\t\t\t\tif(!self.options.tint) {self.showHideWindow(\"hide\");}\n\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\tif(self.options.tint) {\tself.showHideTint(\"hide\");}\n\t\t\t\t}   \n\t\t\t},\n\t\t\tsetPosition: function(e) {\n      \n\t\t\t\tvar self = this;\n        \n        if(!self.options.zoomEnabled){return false;}\n\n\t\t\t\t\/\/recaclc offset each time in case the image moves\n\t\t\t\t\/\/this can be caused by other on page elements\n\t\t\t\tself.nzHeight = self.$elem.height();\n\t\t\t\tself.nzWidth = self.$elem.width();\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\n\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomTint.css({ top: 0});\n\t\t\t\t\tself.zoomTint.css({ left: 0});\n\t\t\t\t}\n\t\t\t\t\/\/set responsive       \n\t\t\t\t\/\/will checking if the image needs changing before running this code work faster?\n\t\t\t\tif(self.options.responsive \u0026\u0026 !self.options.scrollZoom){\n\t\t\t\t\tif(self.options.showLens){ \n\t\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\t\tlensHeight = self.nzHeight;              \n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.largeWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t\t}       \n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.widthRatio = self.largeWidth \/ self.nzWidth;\n\t\t\t\t\t\tself.heightRatio = self.largeHeight \/ self.nzHeight;        \n\t\t\t\t\t\tif(self.options.zoomType != \"lens\") {\n\n\n\t\t\t\t\t\t\t\/\/possibly dont need to keep recalcalculating\n\t\t\t\t\t\t\t\/\/if the lens is heigher than the image, then set lens size to image size\n\t\t\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\t\t\tlensHeight = self.nzHeight;  \n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(self.options.zoomWindowWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t\t\t}       \n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t\t\t}            \n\n\t\t\t\t\t\t\tself.zoomLens.css('width', lensWidth);    \n\t\t\t\t\t\t\tself.zoomLens.css('height', lensHeight); \n\n\t\t\t\t\t\t\tif(self.options.tint){    \n\t\t\t\t\t\t\t\tself.zoomTintImage.css('width', self.nzWidth);    \n\t\t\t\t\t\t\t\tself.zoomTintImage.css('height', self.nzHeight); \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}                     \n\t\t\t\t\t\tif(self.options.zoomType == \"lens\") {  \n\n\t\t\t\t\t\t\tself.zoomLens.css({ width: String(self.options.lensSize) + 'px', height: String(self.options.lensSize) + 'px' })      \n\n\n\t\t\t\t\t\t}        \n\t\t\t\t\t\t\/\/end responsive image change\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t\/\/container fix\n\t\t\t\tself.zoomContainer.css({ top: self.nzOffset.top});\n\t\t\t\tself.zoomContainer.css({ left: self.nzOffset.left});\n\t\t\t\tself.mouseLeft = parseInt(e.pageX - self.nzOffset.left);\n\t\t\t\tself.mouseTop = parseInt(e.pageY - self.nzOffset.top);\n\t\t\t\t\/\/calculate the Location of the Lens\n\n\t\t\t\t\/\/calculate the bound regions - but only if zoom window\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.Etoppos = (self.mouseTop \u003c (self.zoomLens.height()\/2));\n\t\t\t\t\tself.Eboppos = (self.mouseTop \u003e self.nzHeight - (self.zoomLens.height()\/2)-(self.options.lensBorderSize*2));\n\t\t\t\t\tself.Eloppos = (self.mouseLeft \u003c 0+((self.zoomLens.width()\/2))); \n\t\t\t\t\tself.Eroppos = (self.mouseLeft \u003e (self.nzWidth - (self.zoomLens.width()\/2)-(self.options.lensBorderSize*2)));  \n\t\t\t\t}\n\t\t\t\t\/\/calculate the bound regions - but only for inner zoom\n\t\t\t\tif(self.options.zoomType == \"inner\"){ \n\t\t\t\t\tself.Etoppos = (self.mouseTop \u003c ((self.nzHeight\/2)\/self.heightRatio) );\n\t\t\t\t\tself.Eboppos = (self.mouseTop \u003e (self.nzHeight - ((self.nzHeight\/2)\/self.heightRatio)));\n\t\t\t\t\tself.Eloppos = (self.mouseLeft \u003c 0+(((self.nzWidth\/2)\/self.widthRatio)));\n\t\t\t\t\tself.Eroppos = (self.mouseLeft \u003e (self.nzWidth - (self.nzWidth\/2)\/self.widthRatio-(self.options.lensBorderSize*2)));  \n\t\t\t\t}\n\n\t\t\t\t\/\/ if the mouse position of the slider is one of the outerbounds, then hide  window and lens\n\t\t\t\tif (self.mouseLeft \u003c= 0 || self.mouseTop \u003c 0 || self.mouseLeft \u003e self.nzWidth || self.mouseTop \u003e self.nzHeight ) {\t\t\t\t          \n\t\t\t\t\tself.setElements(\"hide\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\/\/else continue with operations\n\t\t\t\telse {\n\n\n\t\t\t\t\t\/\/lens options\n\t\t\t\t\tif(self.options.showLens) {\n\t\t\t\t\t\t\/\/\t\tself.showHideLens(\"show\");\n\t\t\t\t\t\t\/\/set background position of lens\n\t\t\t\t\t\tself.lensLeftPos = String(self.mouseLeft - self.zoomLens.width() \/ 2);\n\t\t\t\t\t\tself.lensTopPos = String(self.mouseTop - self.zoomLens.height() \/ 2);\n\n\n\t\t\t\t\t}\n\t\t\t\t\t\/\/adjust the background position if the mouse is in one of the outer regions \n\n\t\t\t\t\t\/\/Top region\n\t\t\t\t\tif(self.Etoppos){\n\t\t\t\t\t\tself.lensTopPos = 0;\n\t\t\t\t\t}\n\t\t\t\t\t\/\/Left Region\n\t\t\t\t\tif(self.Eloppos){\n\t\t\t\t\t\tself.windowLeftPos = 0;\n\t\t\t\t\t\tself.lensLeftPos = 0;\n\t\t\t\t\t\tself.tintpos=0;\n\t\t\t\t\t}     \n\t\t\t\t\t\/\/Set bottom and right region for window mode\n\t\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\t\tif(self.Eboppos){\n\t\t\t\t\t\t\tself.lensTopPos = Math.max( (self.nzHeight)-self.zoomLens.height()-(self.options.lensBorderSize*2), 0 );\n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.Eroppos){\n\t\t\t\t\t\t\tself.lensLeftPos = (self.nzWidth-(self.zoomLens.width())-(self.options.lensBorderSize*2));\n\t\t\t\t\t\t}  \n\t\t\t\t\t}  \n\t\t\t\t\t\/\/Set bottom and right region for inner mode\n\t\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\tif(self.Eboppos){\n\t\t\t\t\t\t\tself.lensTopPos = Math.max( ((self.nzHeight)-(self.options.lensBorderSize*2)), 0 );\n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.Eroppos){\n\t\t\t\t\t\t\tself.lensLeftPos = (self.nzWidth-(self.nzWidth)-(self.options.lensBorderSize*2));\n\t\t\t\t\t\t}  \n\n\t\t\t\t\t}\n\t\t\t\t\t\/\/if lens zoom\n\t\t\t\t\tif(self.options.zoomType == \"lens\") {  \n\t\t\t\t\t\tself.windowLeftPos = String(((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomLens.width() \/ 2) * (-1));   \n\t\t\t\t\t\tself.windowTopPos = String(((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomLens.height() \/ 2) * (-1));\n\n\t\t\t\t\t\tself.zoomLens.css({ backgroundPosition: self.windowLeftPos + 'px ' + self.windowTopPos + 'px' });\n\n\t\t\t\t\t\tif(self.changeBgSize){  \n\n\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){  \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){       \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t}   \n\n\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{     \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){       \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });\n\t\t\t\t\t\t\t\t}   \n\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t}    \n\n\t\t\t\t\t\tself.setWindowPostition(e);  \n\t\t\t\t\t}\n\t\t\t\t\t\/\/if tint zoom   \n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\t\tself.setTintPosition(e);\n\n\t\t\t\t\t}\n\t\t\t\t\t\/\/set the css background position \n\t\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\t\tself.setWindowPostition(e);   \n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\tself.setWindowPostition(e);   \n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.showLens) {\n\n\t\t\t\t\t\tif(self.fullwidth \u0026\u0026 self.options.zoomType != \"lens\"){\n\t\t\t\t\t\t\tself.lensLeftPos = 0;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.zoomLens.css({ left: self.lensLeftPos + 'px', top: self.lensTopPos + 'px' })  \n\t\t\t\t\t}\n\n\t\t\t\t} \/\/end else\n\n\n\n\t\t\t},\n\t\t\tshowHideWindow: function(change) {\n\t\t\t\tvar self = this;              \n\t\t\t\tif(change == \"show\"){      \n\t\t\t\t\tif(!self.isWindowActive){\n\t\t\t\t\t\tif(self.options.zoomWindowFadeIn){\n\t\t\t\t\t\t\tself.zoomWindow.stop(true, true, false).fadeIn(self.options.zoomWindowFadeIn);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomWindow.show();}\n\t\t\t\t\t\tself.isWindowActive = true;\n\t\t\t\t\t}            \n\t\t\t\t}\n\t\t\t\tif(change == \"hide\"){\n\t\t\t\t\tif(self.isWindowActive){\n\t\t\t\t\t\tif(self.options.zoomWindowFadeOut){\n\t\t\t\t\t\t\tself.zoomWindow.stop(true, true).fadeOut(self.options.zoomWindowFadeOut);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomWindow.hide();}\n\t\t\t\t\t\tself.isWindowActive = false;        \n\t\t\t\t\t}      \n\t\t\t\t}\n\t\t\t},\n\t\t\tshowHideLens: function(change) {\n\t\t\t\tvar self = this;              \n\t\t\t\tif(change == \"show\"){      \n\t\t\t\t\tif(!self.isLensActive){\n\t\t\t\t\t\tif(self.options.lensFadeIn){\n\t\t\t\t\t\t\tself.zoomLens.stop(true, true, false).fadeIn(self.options.lensFadeIn);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomLens.show();}\n\t\t\t\t\t\tself.isLensActive = true;\n\t\t\t\t\t}            \n\t\t\t\t}\n\t\t\t\tif(change == \"hide\"){\n\t\t\t\t\tif(self.isLensActive){\n\t\t\t\t\t\tif(self.options.lensFadeOut){\n\t\t\t\t\t\t\tself.zoomLens.stop(true, true).fadeOut(self.options.lensFadeOut);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomLens.hide();}\n\t\t\t\t\t\tself.isLensActive = false;        \n\t\t\t\t\t}      \n\t\t\t\t}\n\t\t\t},\n\t\t\tshowHideTint: function(change) {\n\t\t\t\tvar self = this;              \n\t\t\t\tif(change == \"show\"){      \n\t\t\t\t\tif(!self.isTintActive){\n\n\t\t\t\t\t\tif(self.options.zoomTintFadeIn){\n\t\t\t\t\t\t\tself.zoomTint.css({opacity:self.options.tintOpacity}).animate().stop(true, true).fadeIn(\"slow\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tself.zoomTint.css({opacity:self.options.tintOpacity}).animate();\n\t\t\t\t\t\t\tself.zoomTint.show();\n\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.isTintActive = true;\n\t\t\t\t\t}            \n\t\t\t\t}\n\t\t\t\tif(change == \"hide\"){      \n\t\t\t\t\tif(self.isTintActive){ \n\n\t\t\t\t\t\tif(self.options.zoomTintFadeOut){\n\t\t\t\t\t\t\tself.zoomTint.stop(true, true).fadeOut(self.options.zoomTintFadeOut);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomTint.hide();}\n\t\t\t\t\t\tself.isTintActive = false;        \n\t\t\t\t\t}      \n\t\t\t\t}\n\t\t\t},\n\t\t\tsetLensPostition: function( e ) {\n\n\n\t\t\t},\n\t\t\tsetWindowPostition: function( e ) {\n\t\t\t\t\/\/return obj.slice( 0, count );\n\t\t\t\tvar self = this;\n\n\t\t\t\tif(!isNaN(self.options.zoomWindowPosition)){\n\n\t\t\t\t\tswitch (self.options.zoomWindowPosition) { \n\t\t\t\t\tcase 1: \/\/done         \n\t\t\t\t\t\tself.windowOffsetTop = (self.options.zoomWindowOffety);\/\/DONE - 1\n\t\t\t\t\t\tself.windowOffsetLeft =(+self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\n\t\t\t\t\t\t\tself.windowOffsetTop = ((self.options.zoomWindowHeight\/2)-(self.nzHeight\/2))*(-1);\n\t\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3: \/\/done        \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight - self.zoomWindow.height() - (self.options.borderSize*2)); \/\/DONE 3,9\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;      \n\t\t\t\t\tcase 4: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight); \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight); \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth-self.zoomWindow.width()-(self.options.borderSize*2)); \/\/DONE - 5,15\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6: \n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\t\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight);  \/\/DONE - 4,5,6,7,8\n\n\t\t\t\t\t\t\tself.windowOffsetLeft =((self.options.zoomWindowWidth\/2)-(self.nzWidth\/2)+(self.options.borderSize*2))*(-1);  \n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight);  \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft = 0; \/\/DONE 7, 13\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight); \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 9:  \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight - self.zoomWindow.height() - (self.options.borderSize*2)); \/\/DONE 3,9\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 10: \n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\n\t\t\t\t\t\t\tself.windowOffsetTop = ((self.options.zoomWindowHeight\/2)-(self.nzHeight\/2))*(-1);\n\t\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 11: \n\t\t\t\t\t\tself.windowOffsetTop = (self.options.zoomWindowOffety);\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 12: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 13: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(0); \/\/DONE 7, 13\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 14: \n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\t\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\n\t\t\t\t\t\t\tself.windowOffsetLeft =((self.options.zoomWindowWidth\/2)-(self.nzWidth\/2)+(self.options.borderSize*2))*(-1);  \n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 15:\/\/done   \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth-self.zoomWindow.width()-(self.options.borderSize*2)); \/\/DONE - 5,15\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 16:  \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;            \n\t\t\t\t\tdefault: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.options.zoomWindowOffety);\/\/DONE - 1\n\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t} \n\t\t\t\t} \/\/end isNAN\n\t\t\t\telse{\n\t\t\t\t\t\/\/WE CAN POSITION IN A CLASS - ASSUME THAT ANY STRING PASSED IS\n\t\t\t\t\tself.externalContainer = $('#'+self.options.zoomWindowPosition);\n\t\t\t\t\tself.externalContainerWidth = self.externalContainer.width();\n\t\t\t\t\tself.externalContainerHeight = self.externalContainer.height();\n\t\t\t\t\tself.externalContainerOffset = self.externalContainer.offset();\n\n\t\t\t\t\tself.windowOffsetTop = self.externalContainerOffset.top;\/\/DONE - 1\n\t\t\t\t\tself.windowOffsetLeft =self.externalContainerOffset.left; \/\/DONE 1, 2, 3, 4, 16\n\n\t\t\t\t}\n\t\t\t\tself.isWindowSet = true;\n\t\t\t\tself.windowOffsetTop = self.windowOffsetTop + self.options.zoomWindowOffety;\n\t\t\t\tself.windowOffsetLeft = self.windowOffsetLeft + self.options.zoomWindowOffetx;\n\n\t\t\t\tself.zoomWindow.css({ top: self.windowOffsetTop});\n\t\t\t\tself.zoomWindow.css({ left: self.windowOffsetLeft});\n\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.css({ top: 0});\n\t\t\t\t\tself.zoomWindow.css({ left: 0});\n\n\t\t\t\t}   \n\n\n\t\t\t\tself.windowLeftPos = String(((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomWindow.width() \/ 2) * (-1));   \n\t\t\t\tself.windowTopPos = String(((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomWindow.height() \/ 2) * (-1));\n\t\t\t\tif(self.Etoppos){self.windowTopPos = 0;}\n\t\t\t\tif(self.Eloppos){self.windowLeftPos = 0;}     \n\t\t\t\tif(self.Eboppos){self.windowTopPos = (self.largeHeight\/self.currentZoomLevel-self.zoomWindow.height())*(-1);  } \n\t\t\t\tif(self.Eroppos){self.windowLeftPos = ((self.largeWidth\/self.currentZoomLevel-self.zoomWindow.width())*(-1));}    \n\n\t\t\t\t\/\/stops micro movements\n\t\t\t\tif(self.fullheight){\n\t\t\t\t\tself.windowTopPos = 0;\n\n\t\t\t\t}\n\t\t\t\tif(self.fullwidth){\n\t\t\t\t\tself.windowLeftPos = 0;\n\n\t\t\t\t}\n\t\t\t\t\/\/set the css background position \n\n\n\t\t\t\tif(self.options.zoomType == \"window\" || self.options.zoomType == \"inner\") {\n\n\t\t\t\t\tif(self.zoomLock == 1){\n\t\t\t\t\t\t\/\/overrides for images not zoomable\n\t\t\t\t\t\tif(self.widthRatio \u003c= 1){\n\n\t\t\t\t\t\t\tself.windowLeftPos = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.heightRatio \u003c= 1){ \n\t\t\t\t\t\t\tself.windowTopPos = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\/\/ adjust images less than the window height\n\n\t\t\t\t\tif(self.largeHeight \u003c self.options.zoomWindowHeight){\n\n\t\t\t\t\t\tself.windowTopPos = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(self.largeWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\tself.windowLeftPos = 0;\n\t\t\t\t\t}       \n\n\t\t\t\t\t\/\/set the zoomwindow background position\n\t\t\t\t\tif (self.options.easing){\n\n\t\t\t\t\t\t\/\/     if(self.changeZoom){\n\t\t\t\t\t\t\/\/           clearInterval(self.loop);\n\t\t\t\t\t\t\/\/           self.changeZoom = false;\n\t\t\t\t\t\t\/\/           self.loop = false;\n\n\t\t\t\t\t\t\/\/            }\n\t\t\t\t\t\t\/\/set the pos to 0 if not set\n\t\t\t\t\t\tif(!self.xp){self.xp = 0;}\n\t\t\t\t\t\tif(!self.yp){self.yp = 0;}  \n\t\t\t\t\t\t\/\/if loop not already started, then run it \n\t\t\t\t\t\tif (!self.loop){           \n\t\t\t\t\t\t\tself.loop = setInterval(function(){                \n\t\t\t\t\t\t\t\t\/\/using zeno's paradox    \n\n\t\t\t\t\t\t\t\tself.xp += (self.windowLeftPos  - self.xp) \/ self.options.easingAmount; \n\t\t\t\t\t\t\t\tself.yp += (self.windowTopPos  - self.yp) \/ self.options.easingAmount;\n\t\t\t\t\t\t\t\tif(self.scrollingLock){\n\n\n\t\t\t\t\t\t\t\t\tclearInterval(self.loop);\n\t\t\t\t\t\t\t\t\tself.xp = self.windowLeftPos;\n\t\t\t\t\t\t\t\t\tself.yp = self.windowTopPos            \n\n\t\t\t\t\t\t\t\t\tself.xp = ((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomWindow.width() \/ 2) * (-1);\n\t\t\t\t\t\t\t\t\tself.yp = (((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomWindow.height() \/ 2) * (-1));                         \n\n\t\t\t\t\t\t\t\t\tif(self.changeBgSize){    \n\t\t\t\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){  \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}   \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse{   \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType != \"lens\"){      \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}            \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\/*\n             if(!self.bgxp){self.bgxp = self.largeWidth\/self.newvalue;}\n\t\t\t\t\t\tif(!self.bgyp){self.bgyp = self.largeHeight\/self.newvalue ;}  \n                 if (!self.bgloop){   \n                 \tself.bgloop = setInterval(function(){   \n\n                 self.bgxp += (self.largeWidth\/self.newvalue  - self.bgxp) \/ self.options.easingAmount; \n\t\t\t\t\t\t\t\tself.bgyp += (self.largeHeight\/self.newvalue  - self.bgyp) \/ self.options.easingAmount;\n\n           self.zoomWindow.css({ \"background-size\": self.bgxp + 'px ' + self.bgyp + 'px' });\n\n\n                  }, 16);\n\n                 }\n\t\t\t\t\t\t\t\t\t\t *\/\n\t\t\t\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ backgroundPosition: self.windowLeftPos + 'px ' + self.windowTopPos + 'px' });\n\t\t\t\t\t\t\t\t\tself.scrollingLock = false;\n\t\t\t\t\t\t\t\t\tself.loop = false;\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t\tif(self.changeBgSize){    \n\t\t\t\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){ \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}         \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse{                 \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType != \"lens\"){     \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}      \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t\t\t\t}                   \n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ backgroundPosition: self.xp + 'px ' + self.yp + 'px' });\n\t\t\t\t\t\t\t\t}       \n\t\t\t\t\t\t\t}, 16);\n\t\t\t\t\t\t}\n\t\t\t\t\t}   \n\t\t\t\t\telse{    \n\t\t\t\t\t\tif(self.changeBgSize){  \n\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){  \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{     \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\tif((self.largeHeight\/self.newvaluewidth) \u003c self.options.zoomWindowHeight){ \n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse{\n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });   \n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t}     \n\n\t\t\t\t\t\tself.zoomWindow.css({ backgroundPosition: self.windowLeftPos + 'px ' + self.windowTopPos + 'px' });       \n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t},\n\t\t\tsetTintPosition: function(e){\n\t\t\t\tvar self = this;\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\t\t\t\tself.tintpos = String(((e.pageX - self.nzOffset.left)-(self.zoomLens.width() \/ 2)) * (-1)); \n\t\t\t\tself.tintposy = String(((e.pageY - self.nzOffset.top) - self.zoomLens.height() \/ 2) * (-1));\t\n\t\t\t\tif(self.Etoppos){\n\t\t\t\t\tself.tintposy = 0;\n\t\t\t\t}\n\t\t\t\tif(self.Eloppos){\n\t\t\t\t\tself.tintpos=0;\n\t\t\t\t}     \n\t\t\t\tif(self.Eboppos){\n\t\t\t\t\tself.tintposy = (self.nzHeight-self.zoomLens.height()-(self.options.lensBorderSize*2))*(-1);\n\t\t\t\t} \n\t\t\t\tif(self.Eroppos){\n\t\t\t\t\tself.tintpos = ((self.nzWidth-self.zoomLens.width()-(self.options.lensBorderSize*2))*(-1));\n\t\t\t\t}    \n\t\t\t\tif(self.options.tint) {\n\t\t\t\t\t\/\/stops micro movements\n\t\t\t\t\tif(self.fullheight){\n\t\t\t\t\t\tself.tintposy = 0;\n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.fullwidth){ \n\t\t\t\t\t\tself.tintpos = 0;\n\n\t\t\t\t\t}   \n\t\t\t\t\tself.zoomTintImage.css({'left': self.tintpos+'px'});\n\t\t\t\t\tself.zoomTintImage.css({'top': self.tintposy+'px'});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tswaptheimage: function(smallimage, largeimage){\n\t\t\t\tvar self = this;\n\t\t\t\tvar newImg = new Image(); \n\n\t\t\t\tif(self.options.loadingIcon){\n\t\t\t\t\tself.spinner = $('\u003cdiv style=\"background: url(\\''+self.options.loadingIcon+'\\') no-repeat center;height:'+self.nzHeight+'px;width:'+self.nzWidth+'px;z-index: 2000;position: absolute; background-position: center center;\"\u003e\u003c\/div\u003e');\n\t\t\t\t\tself.$elem.after(self.spinner);\n\t\t\t\t}\n\n\t\t\t\tself.options.onImageSwap(self.$elem);\n\n\t\t\t\tnewImg.onload = function() {\n\t\t\t\t\tself.largeWidth = newImg.width;\n\t\t\t\t\tself.largeHeight = newImg.height;\n\t\t\t\t\tself.zoomImage = largeimage;\n\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth + 'px ' + self.largeHeight + 'px' });\n\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth + 'px ' + self.largeHeight + 'px' });\n\n\n\t\t\t\t\tself.swapAction(smallimage, largeimage);\n\t\t\t\t\treturn;              \n\t\t\t\t}          \n\t\t\t\tnewImg.src = largeimage; \/\/ this must be done AFTER setting onload\n\n\t\t\t},\n\t\t\tswapAction: function(smallimage, largeimage){\n\n\n\t\t\t\tvar self = this;    \n\n\t\t\t\tvar newImg2 = new Image(); \n\t\t\t\tnewImg2.onload = function() {\n\t\t\t\t\t\/\/re-calculate values\n\t\t\t\t\tself.nzHeight = newImg2.height;\n\t\t\t\t\tself.nzWidth = newImg2.width;\n\t\t\t\t\tself.options.onImageSwapComplete(self.$elem);\n\n\t\t\t\t\tself.doneCallback();  \n\t\t\t\t\treturn;      \n\t\t\t\t}          \n\t\t\t\tnewImg2.src = smallimage; \n\n\t\t\t\t\/\/reset the zoomlevel to that initially set in options\n\t\t\t\tself.currentZoomLevel = self.options.zoomLevel;\n\t\t\t\tself.options.maxZoomLevel = false;\n\n\t\t\t\t\/\/swaps the main image\n\t\t\t\t\/\/self.$elem.attr(\"src\",smallimage);\n\t\t\t\t\/\/swaps the zoom image     \n\t\t\t\tif(self.options.zoomType == \"lens\") {\n\t\t\t\t\tself.zoomLens.css({ backgroundImage: \"url('\" + largeimage + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + largeimage + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + largeimage + \"')\" }); \n\t\t\t\t} \n\n\n\n\t\t\t\tself.currentImage = largeimage;\n\n\t\t\t\tif(self.options.imageCrossfade){\n\t\t\t\t\tvar oldImg = self.$elem;\n\t\t\t\t\tvar newImg = oldImg.clone();         \n\t\t\t\t\tself.$elem.attr(\"src\",smallimage)\n\t\t\t\t\tself.$elem.after(newImg);\n\t\t\t\t\tnewImg.stop(true).fadeOut(self.options.imageCrossfade, function() {\n\t\t\t\t\t\t$(this).remove();         \n\t\t\t\t\t});\n\n\t\t\t\t\t\/\/       \t\t\t\tif(self.options.zoomType == \"inner\"){\n\t\t\t\t\t\/\/remove any attributes on the cloned image so we can resize later\n\t\t\t\t\tself.$elem.width(\"auto\").removeAttr(\"width\");\n\t\t\t\t\tself.$elem.height(\"auto\").removeAttr(\"height\");\n\t\t\t\t\t\/\/   }\n\n\t\t\t\t\toldImg.fadeIn(self.options.imageCrossfade);\n\n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\n\t\t\t\t\t\tvar oldImgTint = self.zoomTintImage;\n\t\t\t\t\t\tvar newImgTint = oldImgTint.clone();         \n\t\t\t\t\t\tself.zoomTintImage.attr(\"src\",largeimage)\n\t\t\t\t\t\tself.zoomTintImage.after(newImgTint);\n\t\t\t\t\t\tnewImgTint.stop(true).fadeOut(self.options.imageCrossfade, function() {\n\t\t\t\t\t\t\t$(this).remove();         \n\t\t\t\t\t\t});\n\n\n\n\t\t\t\t\t\toldImgTint.fadeIn(self.options.imageCrossfade);\n\n\n\t\t\t\t\t\t\/\/self.zoomTintImage.attr(\"width\",elem.data(\"image\"));\n\n\t\t\t\t\t\t\/\/resize the tint window\n\t\t\t\t\t\tself.zoomTint.css({ height: self.$elem.height()});\n\t\t\t\t\t\tself.zoomTint.css({ width: self.$elem.width()});\n\t\t\t\t\t}    \n\n\t\t\t\t\tself.zoomContainer.css(\"height\", self.$elem.height());\n\t\t\t\t\tself.zoomContainer.css(\"width\", self.$elem.width());\n\n\t\t\t\t\tif(self.options.zoomType == \"inner\"){ \n\t\t\t\t\t\tif(!self.options.constrainType){\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"height\", self.$elem.height());\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"width\", self.$elem.width());\n\n\t\t\t\t\t\t\tself.zoomWindow.css(\"height\", self.$elem.height());\n\t\t\t\t\t\t\tself.zoomWindow.css(\"width\", self.$elem.width());\n\t\t\t\t\t\t}\n\t\t\t\t\t} \n\n\t\t\t\t\tif(self.options.imageCrossfade){  \n\t\t\t\t\t\tself.zoomWrap.css(\"height\", self.$elem.height());\n\t\t\t\t\t\tself.zoomWrap.css(\"width\", self.$elem.width());\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tself.$elem.attr(\"src\",smallimage); \n\t\t\t\t\tif(self.options.tint) {\n\t\t\t\t\t\tself.zoomTintImage.attr(\"src\",largeimage);\n\t\t\t\t\t\t\/\/self.zoomTintImage.attr(\"width\",elem.data(\"image\"));\n\t\t\t\t\t\tself.zoomTintImage.attr(\"height\",self.$elem.height());\n\t\t\t\t\t\t\/\/self.zoomTintImage.attr('src') = elem.data(\"image\");\n\t\t\t\t\t\tself.zoomTintImage.css({ height: self.$elem.height()}); \n\t\t\t\t\t\tself.zoomTint.css({ height: self.$elem.height()});\n\n\t\t\t\t\t}\n\t\t\t\t\tself.zoomContainer.css(\"height\", self.$elem.height());\n\t\t\t\t\tself.zoomContainer.css(\"width\", self.$elem.width());\n\n\t\t\t\t\tif(self.options.imageCrossfade){  \n\t\t\t\t\t\tself.zoomWrap.css(\"height\", self.$elem.height());\n\t\t\t\t\t\tself.zoomWrap.css(\"width\", self.$elem.width());\n\t\t\t\t\t} \n\t\t\t\t}              \n\t\t\t\tif(self.options.constrainType){     \n\n\t\t\t\t\t\/\/This will contrain the image proportions\n\t\t\t\t\tif(self.options.constrainType == \"height\"){ \n\n\t\t\t\t\t\tself.zoomContainer.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\tself.zoomContainer.css(\"width\", \"auto\");\n\n\t\t\t\t\t\tif(self.options.imageCrossfade){  \n\t\t\t\t\t\t\tself.zoomWrap.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomWrap.css(\"width\", \"auto\"); \n\t\t\t\t\t\t\tself.constwidth = self.zoomWrap.width();\n\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{                  \n\t\t\t\t\t\t\tself.$elem.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.$elem.css(\"width\", \"auto\");\n\t\t\t\t\t\t\tself.constwidth = self.$elem.width();\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tif(self.options.zoomType == \"inner\"){\n\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"width\", self.constwidth);   \n\t\t\t\t\t\t\tself.zoomWindow.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomWindow.css(\"width\", self.constwidth);    \n\t\t\t\t\t\t}        \n\t\t\t\t\t\tif(self.options.tint){\n\t\t\t\t\t\t\tself.tintContainer.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.tintContainer.css(\"width\", self.constwidth);\n\t\t\t\t\t\t\tself.zoomTint.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTint.css(\"width\", self.constwidth);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"width\", self.constwidth); \n\t\t\t\t\t\t} \n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.constrainType == \"width\"){       \n\t\t\t\t\t\tself.zoomContainer.css(\"height\", \"auto\");\n\t\t\t\t\t\tself.zoomContainer.css(\"width\", self.options.constrainSize);\n\n\t\t\t\t\t\tif(self.options.imageCrossfade){\n\t\t\t\t\t\t\tself.zoomWrap.css(\"height\", \"auto\");\n\t\t\t\t\t\t\tself.zoomWrap.css(\"width\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.constheight = self.zoomWrap.height();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{            \n\t\t\t\t\t\t\tself.$elem.css(\"height\", \"auto\");\n\t\t\t\t\t\t\tself.$elem.css(\"width\", self.options.constrainSize); \n\t\t\t\t\t\t\tself.constheight = self.$elem.height();              \n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.options.zoomType == \"inner\"){\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"width\", self.options.constrainSize);   \n\t\t\t\t\t\t\tself.zoomWindow.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomWindow.css(\"width\", self.options.constrainSize);    \n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.options.tint){\n\t\t\t\t\t\t\tself.tintContainer.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.tintContainer.css(\"width\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTint.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomTint.css(\"width\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"width\", self.options.constrainSize); \n\t\t\t\t\t\t}   \n\n\t\t\t\t\t}        \n\n\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tdoneCallback: function(){\n\n\t\t\t\tvar self = this;\n\t\t\t\tif(self.options.loadingIcon){\n\t\t\t\t\tself.spinner.hide();     \n\t\t\t\t}   \n\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\t\t\t\tself.nzWidth = self.$elem.width();\n\t\t\t\tself.nzHeight = self.$elem.height();\n\n\t\t\t\t\/\/ reset the zoomlevel back to default\n\t\t\t\tself.currentZoomLevel = self.options.zoomLevel;\n\n\t\t\t\t\/\/ratio of the large to small image\n\t\t\t\tself.widthRatio = self.largeWidth \/ self.nzWidth;\n\t\t\t\tself.heightRatio = self.largeHeight \/ self.nzHeight; \n\n\t\t\t\t\/\/NEED TO ADD THE LENS SIZE FOR ROUND\n\t\t\t\t\/\/ adjust images less than the window height\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\n\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\tlensHeight = self.nzHeight;  \n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t}\n\n\t\t\t\t\tif(self.options.zoomWindowWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t}       \n\t\t\t\t\telse{\n\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif(self.zoomLens){\n\n\t\t\t\t\t\tself.zoomLens.css('width', lensWidth);    \n\t\t\t\t\t\tself.zoomLens.css('height', lensHeight); \n\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetCurrentImage: function(){\n\t\t\t\tvar self = this;  \n\t\t\t\treturn self.zoomImage; \n\t\t\t}, \n\t\t\tgetGalleryList: function(){\n\t\t\t\tvar self = this;   \n\t\t\t\t\/\/loop through the gallery options and set them in list for fancybox\n\t\t\t\tself.gallerylist = [];\n\t\t\t\tif (self.options.gallery){ \n\n\n\t\t\t\t\t$('#'+self.options.gallery + ' a').each(function() {\n\n\t\t\t\t\t\tvar img_src = '';\n\t\t\t\t\t\tif($(this).data(\"zoom-image\")){\n\t\t\t\t\t\t\timg_src = $(this).data(\"zoom-image\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if($(this).data(\"image\")){\n\t\t\t\t\t\t\timg_src = $(this).data(\"image\");\n\t\t\t\t\t\t}\t\t\t\n\t\t\t\t\t\t\/\/put the current image at the start\n\t\t\t\t\t\tif(img_src == self.zoomImage){\n\t\t\t\t\t\t\tself.gallerylist.unshift({\n\t\t\t\t\t\t\t\thref: ''+img_src+'',\n\t\t\t\t\t\t\t\ttitle: $(this).find('img').attr(\"title\")\n\t\t\t\t\t\t\t});\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tself.gallerylist.push({\n\t\t\t\t\t\t\t\thref: ''+img_src+'',\n\t\t\t\t\t\t\t\ttitle: $(this).find('img').attr(\"title\")\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t});\n\t\t\t\t}                                                       \n\t\t\t\t\/\/if no gallery - return current image\n\t\t\t\telse{\n\t\t\t\t\tself.gallerylist.push({\n\t\t\t\t\t\thref: ''+self.zoomImage+'',\n\t\t\t\t\t\ttitle: $(this).find('img').attr(\"title\")\n\t\t\t\t\t}); \n\t\t\t\t}\n\t\t\t\treturn self.gallerylist;\n\n\t\t\t},\n\t\t\tchangeZoomLevel: function(value){\n\t\t\t\tvar self = this;   \n\n\t\t\t\t\/\/flag a zoom, so can adjust the easing during setPosition     \n\t\t\t\tself.scrollingLock = true;   \n\n\t\t\t\t\/\/round to two decimal places\n\t\t\t\tself.newvalue = parseFloat(value).toFixed(2);\n\t\t\t\tnewvalue = parseFloat(value).toFixed(2);\n\n\n\n\n\t\t\t\t\/\/maxwidth \u0026 Maxheight of the image\n\t\t\t\tmaxheightnewvalue = self.largeHeight\/((self.options.zoomWindowHeight \/ self.nzHeight) * self.nzHeight);     \n\t\t\t\tmaxwidthtnewvalue = self.largeWidth\/((self.options.zoomWindowWidth \/ self.nzWidth) * self.nzWidth);   \t\n\n\n\n\n\t\t\t\t\/\/calculate new heightratio\n\t\t\t\tif(self.options.zoomType != \"inner\")\n\t\t\t\t{\n\t\t\t\t\tif(maxheightnewvalue \u003c= newvalue){\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/maxheightnewvalue) \/ self.nzHeight;\n\t\t\t\t\t\tself.newvalueheight = maxheightnewvalue;\n\t\t\t\t\t\tself.fullheight = true;\n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/newvalue) \/ self.nzHeight; \n\t\t\t\t\t\tself.newvalueheight = newvalue;\n\t\t\t\t\t\tself.fullheight = false;\n\n\t\t\t\t\t}\n\n\n\/\/\t\t\t\t\tcalculate new width ratio\n\n\t\t\t\t\tif(maxwidthtnewvalue \u003c= newvalue){\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/maxwidthtnewvalue) \/ self.nzWidth;\n\t\t\t\t\t\tself.newvaluewidth = maxwidthtnewvalue;\n\t\t\t\t\t\tself.fullwidth = true;\n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\t\t\t\t\t\tself.fullwidth = false;\n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.zoomType == \"lens\"){\n\t\t\t\t\t\tif(maxheightnewvalue \u003c= newvalue){\n\t\t\t\t\t\t\tself.fullwidth = true;\n\t\t\t\t\t\t\tself.newvaluewidth = maxheightnewvalue;\n\n\t\t\t\t\t\t} else{\n\t\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\n\t\t\t\t\t\t\tself.fullwidth = false;\n\t\t\t\t\t\t}}\n\t\t\t\t}\n\n\n\n\t\t\t\tif(self.options.zoomType == \"inner\")\n\t\t\t\t{\n\t\t\t\t\tmaxheightnewvalue = parseFloat(self.largeHeight\/self.nzHeight).toFixed(2);     \n\t\t\t\t\tmaxwidthtnewvalue = parseFloat(self.largeWidth\/self.nzWidth).toFixed(2);      \n\t\t\t\t\tif(newvalue \u003e maxheightnewvalue){\n\t\t\t\t\t\tnewvalue = maxheightnewvalue;\n\t\t\t\t\t}\n\t\t\t\t\tif(newvalue \u003e maxwidthtnewvalue){\n\t\t\t\t\t\tnewvalue = maxwidthtnewvalue;\n\t\t\t\t\t}      \n\n\n\t\t\t\t\tif(maxheightnewvalue \u003c= newvalue){\n\n\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/newvalue) \/ self.nzHeight; \n\t\t\t\t\t\tif(newvalue \u003e maxheightnewvalue){\n\t\t\t\t\t\t\tself.newvalueheight = maxheightnewvalue;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tself.newvalueheight = newvalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.fullheight = true;\n\n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\n\n\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/newvalue) \/ self.nzHeight; \n\n\t\t\t\t\t\tif(newvalue \u003e maxheightnewvalue){\n\n\t\t\t\t\t\t\tself.newvalueheight = maxheightnewvalue;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tself.newvalueheight = newvalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.fullheight = false;\n\t\t\t\t\t}\n\n\n\n\n\t\t\t\t\tif(maxwidthtnewvalue \u003c= newvalue){   \n\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\tif(newvalue \u003e maxwidthtnewvalue){\n\n\t\t\t\t\t\t\tself.newvaluewidth = maxwidthtnewvalue;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.fullwidth = true;\n\n\n\t\t\t\t\t}\n\t\t\t\t\telse{  \n\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\t\t\t\t\t\tself.fullwidth = false;\n\t\t\t\t\t}        \n\n\n\t\t\t\t} \/\/end inner\n\t\t\t\tscrcontinue = false;\n\n\t\t\t\tif(self.options.zoomType == \"inner\"){\n\n\t\t\t\t\tif(self.nzWidth \u003e= self.nzHeight){\n\t\t\t\t\t\tif( self.newvaluewidth \u003c= maxwidthtnewvalue){\n\t\t\t\t\t\t\tscrcontinue = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\n\t\t\t\t\t\t\tscrcontinue = false;\n\t\t\t\t\t\t\tself.fullheight = true;\n\t\t\t\t\t\t\tself.fullwidth = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(self.nzHeight \u003e self.nzWidth){     \n\t\t\t\t\t\tif( self.newvaluewidth \u003c= maxwidthtnewvalue){\n\t\t\t\t\t\t\tscrcontinue = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tscrcontinue = false;  \n\n\t\t\t\t\t\t\tself.fullheight = true;\n\t\t\t\t\t\t\tself.fullwidth = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(self.options.zoomType != \"inner\"){\n\t\t\t\t\tscrcontinue = true;\n\t\t\t\t}\n\n\t\t\t\tif(scrcontinue){\n\n\n\n\t\t\t\t\tself.zoomLock = 0;\n\t\t\t\t\tself.changeZoom = true;\n\n\t\t\t\t\t\/\/if lens height is less than image height\n\n\n\t\t\t\t\tif(((self.options.zoomWindowHeight)\/self.heightRatio) \u003c= self.nzHeight){\n\n\n\t\t\t\t\t\tself.currentZoomLevel = self.newvalueheight; \n\t\t\t\t\t\tif(self.options.zoomType != \"lens\" \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\t\t\tself.changeBgSize = true;\n\n\t\t\t\t\t\t\tself.zoomLens.css({height: String((self.options.zoomWindowHeight)\/self.heightRatio) + 'px' }) \n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.options.zoomType == \"lens\" || self.options.zoomType == \"inner\") {  \n\t\t\t\t\t\t\tself.changeBgSize = true;  \n\t\t\t\t\t\t}\t\n\n\n\t\t\t\t\t} \n\n\n\n\n\t\t\t\t\tif((self.options.zoomWindowWidth\/self.widthRatio) \u003c= self.nzWidth){\n\n\n\n\t\t\t\t\t\tif(self.options.zoomType != \"inner\"){\n\t\t\t\t\t\t\tif(self.newvaluewidth \u003e self.newvalueheight)   {\n\t\t\t\t\t\t\t\tself.currentZoomLevel = self.newvaluewidth;                 \n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(self.options.zoomType != \"lens\" \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\t\t\tself.changeBgSize = true;\n\n\t\t\t\t\t\t\tself.zoomLens.css({width: String((self.options.zoomWindowWidth)\/self.widthRatio) + 'px' })\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.options.zoomType == \"lens\" || self.options.zoomType == \"inner\") {  \n\t\t\t\t\t\t\tself.changeBgSize = true;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.zoomType == \"inner\"){\n\t\t\t\t\t\tself.changeBgSize = true;  \n\n\t\t\t\t\t\tif(self.nzWidth \u003e self.nzHeight){\n\t\t\t\t\t\t\tself.currentZoomLevel = self.newvaluewidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.nzHeight \u003e self.nzWidth){\n\t\t\t\t\t\t\tself.currentZoomLevel = self.newvaluewidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}      \/\/under\n\n\t\t\t\t\/\/sets the boundry change, called in setWindowPos\n\t\t\t\tself.setPosition(self.currentLoc);\n\t\t\t\t\/\/\n\t\t\t},\n\t\t\tcloseAll: function(){\n\t\t\t\tif(self.zoomWindow){self.zoomWindow.hide();}\n\t\t\t\tif(self.zoomLens){self.zoomLens.hide();}\n\t\t\t\tif(self.zoomTint){self.zoomTint.hide();}\n\t\t\t},\n\t\t\tchangeState: function(value){\n      \tvar self = this;\n\t\t\t\tif(value == 'enable'){self.options.zoomEnabled = true;}\n\t\t\t\tif(value == 'disable'){self.options.zoomEnabled = false;}\n\n\t\t\t}\n\n\t};\n\n\n\n\n\t$.fn.elevateZoom = function( options ) {\n\t\treturn this.each(function() {\n\t\t\tvar elevate = Object.create( ElevateZoom );\n\n\t\t\televate.init( options, this );\n\n\t\t\t$.data( this, 'elevateZoom', elevate );\n\n\t\t});\n\t};\n\n\t$.fn.elevateZoom.options = {\n\t\t\tzoomActivation: \"hover\", \/\/ Can also be click (PLACEHOLDER FOR NEXT VERSION)\n      zoomEnabled: true, \/\/false disables zoomwindow from showing\n\t\t\tpreloading: 1, \/\/by default, load all the images, if 0, then only load images after activated (PLACEHOLDER FOR NEXT VERSION)\n\t\t\tzoomLevel: 1, \/\/default zoom level of image\n\t\t\tscrollZoom: false, \/\/allow zoom on mousewheel, true to activate\n\t\t\tscrollZoomIncrement: 0.1,  \/\/steps of the scrollzoom\n\t\t\tminZoomLevel: false,\n\t\t\tmaxZoomLevel: false,\n\t\t\teasing: false,\n\t\t\teasingAmount: 12,\n\t\t\tlensSize: 200,\n\t\t\tzoomWindowWidth: 400,\n\t\t\tzoomWindowHeight: 400,\n\t\t\tzoomWindowOffetx: 0,\n\t\t\tzoomWindowOffety: 0,\n\t\t\tzoomWindowPosition: 1,\n\t\t\tzoomWindowBgColour: \"#fff\",\n\t\t\tlensFadeIn: false,\n\t\t\tlensFadeOut: false,\n\t\t\tdebug: false,\n\t\t\tzoomWindowFadeIn: false,\n\t\t\tzoomWindowFadeOut: false,\n\t\t\tzoomWindowAlwaysShow: false,\n\t\t\tzoomTintFadeIn: false,\n\t\t\tzoomTintFadeOut: false,\n\t\t\tborderSize: 4,\n\t\t\tshowLens: true,\n\t\t\tborderColour: \"#888\",\n\t\t\tlensBorderSize: 1,\n\t\t\tlensBorderColour: \"#000\",\n\t\t\tlensShape: \"square\", \/\/can be \"round\"\n\t\t\tzoomType: \"window\", \/\/window is default,  also \"lens\" available -\n\t\t\tcontainLensZoom: false,\n\t\t\tlensColour: \"white\", \/\/colour of the lens background\n\t\t\tlensOpacity: 0.4, \/\/opacity of the lens\n\t\t\tlenszoom: false,\n\t\t\ttint: false, \/\/enable the tinting\n\t\t\ttintColour: \"#333\", \/\/default tint color, can be anything, red, #ccc, rgb(0,0,0)\n\t\t\ttintOpacity: 0.4, \/\/opacity of the tint\n\t\t\tgallery: false,\n\t\t\tgalleryActiveClass: \"zoomGalleryActive\",\n\t\t\timageCrossfade: false,\n\t\t\tconstrainType: false,  \/\/width or height\n\t\t\tconstrainSize: false,  \/\/in pixels the dimensions you want to constrain on\n\t\t\tloadingIcon: false, \/\/http:\/\/www.example.com\/spinner.gif\n\t\t\tcursor:\"default\", \/\/ user should set to what they want the cursor as, if they have set a click function\n\t\t\tresponsive:true,\n\t\t\tonComplete: $.noop,\n\t\t\tonZoomedImageLoaded: function() {},\n\t\t\tonImageSwap: $.noop,\n\t\t\tonImageSwapComplete: $.noop\n\t};\n\n})( jQuery, window, document );\/*!\n * fancyBox - jQuery Plugin\n * version: 2.1.5 (Fri, 14 Jun 2013)\n * @requires jQuery v1.6 or later\n *\n * Examples at http:\/\/fancyapps.com\/fancybox\/\n * License: www.fancyapps.com\/fancybox\/#license\n *\n * Copyright 2012 Janis Skarnelis - janis@fancyapps.com\n *\n *\/\n\n(function (window, document, $, undefined) {\n\t\"use strict\";\n\n\tvar H = $(\"html\"),\n\t\tW = $(window),\n\t\tD = $(document),\n\t\tF = $.fancybox = function () {\n\t\t\tF.open.apply( this, arguments );\n\t\t},\n\t\tIE =  navigator.userAgent.match(\/msie\/i),\n\t\tdidUpdate\t= null,\n\t\tisTouch\t\t= document.createTouch !== undefined,\n\n\t\tisQuery\t= function(obj) {\n\t\t\treturn obj \u0026\u0026 obj.hasOwnProperty \u0026\u0026 obj instanceof $;\n\t\t},\n\t\tisString = function(str) {\n\t\t\treturn str \u0026\u0026 $.type(str) === \"string\";\n\t\t},\n\t\tisPercentage = function(str) {\n\t\t\treturn isString(str) \u0026\u0026 str.indexOf('%') \u003e 0;\n\t\t},\n\t\tisScrollable = function(el) {\n\t\t\treturn (el \u0026\u0026 !(el.style.overflow \u0026\u0026 el.style.overflow === 'hidden') \u0026\u0026 ((el.clientWidth \u0026\u0026 el.scrollWidth \u003e el.clientWidth) || (el.clientHeight \u0026\u0026 el.scrollHeight \u003e el.clientHeight)));\n\t\t},\n\t\tgetScalar = function(orig, dim) {\n\t\t\tvar value = parseInt(orig, 10) || 0;\n\n\t\t\tif (dim \u0026\u0026 isPercentage(orig)) {\n\t\t\t\tvalue = F.getViewport()[ dim ] \/ 100 * value;\n\t\t\t}\n\n\t\t\treturn Math.ceil(value);\n\t\t},\n\t\tgetValue = function(value, dim) {\n\t\t\treturn getScalar(value, dim) + 'px';\n\t\t};\n\n\t$.extend(F, {\n\t\t\/\/ The current version of fancyBox\n\t\tversion: '2.1.5',\n\n\t\tdefaults: {\n\t\t\tpadding : 15,\n\t\t\tmargin  : 20,\n\n\t\t\twidth     : 800,\n\t\t\theight    : 600,\n\t\t\tminWidth  : 100,\n\t\t\tminHeight : 100,\n\t\t\tmaxWidth  : 9999,\n\t\t\tmaxHeight : 9999,\n\t\t\tpixelRatio: 1, \/\/ Set to 2 for retina display support\n\n\t\t\tautoSize   : true,\n\t\t\tautoHeight : false,\n\t\t\tautoWidth  : false,\n\n\t\t\tautoResize  : true,\n\t\t\tautoCenter  : !isTouch,\n\t\t\tfitToView   : true,\n\t\t\taspectRatio : false,\n\t\t\ttopRatio    : 0.5,\n\t\t\tleftRatio   : 0.5,\n\n\t\t\tscrolling : 'auto', \/\/ 'auto', 'yes' or 'no'\n\t\t\twrapCSS   : '',\n\n\t\t\tarrows     : true,\n\t\t\tcloseBtn   : true,\n\t\t\tcloseClick : false,\n\t\t\tnextClick  : false,\n\t\t\tmouseWheel : true,\n\t\t\tautoPlay   : false,\n\t\t\tplaySpeed  : 3000,\n\t\t\tpreload    : 3,\n\t\t\tmodal      : false,\n\t\t\tloop       : true,\n\n\t\t\tajax  : {\n\t\t\t\tdataType : 'html',\n\t\t\t\theaders  : { 'X-fancyBox': true }\n\t\t\t},\n\t\t\tiframe : {\n\t\t\t\tscrolling : 'auto',\n\t\t\t\tpreload   : true\n\t\t\t},\n\t\t\tswf : {\n\t\t\t\twmode: 'transparent',\n\t\t\t\tallowfullscreen   : 'true',\n\t\t\t\tallowscriptaccess : 'always'\n\t\t\t},\n\n\t\t\tkeys  : {\n\t\t\t\tnext : {\n\t\t\t\t\t13 : 'left', \/\/ enter\n\t\t\t\t\t34 : 'up',   \/\/ page down\n\t\t\t\t\t39 : 'left', \/\/ right arrow\n\t\t\t\t\t40 : 'up'    \/\/ down arrow\n\t\t\t\t},\n\t\t\t\tprev : {\n\t\t\t\t\t8  : 'right',  \/\/ backspace\n\t\t\t\t\t33 : 'down',   \/\/ page up\n\t\t\t\t\t37 : 'right',  \/\/ left arrow\n\t\t\t\t\t38 : 'down'    \/\/ up arrow\n\t\t\t\t},\n\t\t\t\tclose  : [27], \/\/ escape key\n\t\t\t\tplay   : [32], \/\/ space - start\/stop slideshow\n\t\t\t\ttoggle : [70]  \/\/ letter \"f\" - toggle fullscreen\n\t\t\t},\n\n\t\t\tdirection : {\n\t\t\t\tnext : 'left',\n\t\t\t\tprev : 'right'\n\t\t\t},\n\n\t\t\tscrollOutside  : true,\n\n\t\t\t\/\/ Override some properties\n\t\t\tindex   : 0,\n\t\t\ttype    : null,\n\t\t\thref    : null,\n\t\t\tcontent : null,\n\t\t\ttitle   : null,\n\n\t\t\t\/\/ HTML templates\n\t\t\ttpl: {\n\t\t\t\twrap     : '\u003cdiv class=\"fancybox-wrap\" tabIndex=\"-1\"\u003e\u003cdiv class=\"fancybox-skin\"\u003e\u003cdiv class=\"fancybox-outer\"\u003e\u003cdiv class=\"fancybox-inner\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e',\n\t\t\t\timage    : '\u003cimg class=\"fancybox-image\" src=\"{href}\" alt=\"\" \/\u003e',\n\t\t\t\tiframe   : '\u003ciframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency=\"true\"' : '') + '\u003e\u003c\/iframe\u003e',\n\t\t\t\terror    : '\u003cp class=\"fancybox-error\"\u003eThe requested content cannot be loaded.\u003cbr\/\u003ePlease try again later.\u003c\/p\u003e',\n\t\t\t\tcloseBtn : '\u003ca title=\"Close\" class=\"fancybox-item fancybox-close\" href=\"javascript:;\"\u003e\u003c\/a\u003e',\n\t\t\t\tnext     : '\u003ca title=\"Next\" class=\"fancybox-nav fancybox-next\" href=\"javascript:;\"\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/a\u003e',\n\t\t\t\tprev     : '\u003ca title=\"Previous\" class=\"fancybox-nav fancybox-prev\" href=\"javascript:;\"\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/a\u003e'\n\t\t\t},\n\n\t\t\t\/\/ Properties for each animation type\n\t\t\t\/\/ Opening fancyBox\n\t\t\topenEffect  : 'fade', \/\/ 'elastic', 'fade' or 'none'\n\t\t\topenSpeed   : 250,\n\t\t\topenEasing  : 'swing',\n\t\t\topenOpacity : true,\n\t\t\topenMethod  : 'zoomIn',\n\n\t\t\t\/\/ Closing fancyBox\n\t\t\tcloseEffect  : 'fade', \/\/ 'elastic', 'fade' or 'none'\n\t\t\tcloseSpeed   : 250,\n\t\t\tcloseEasing  : 'swing',\n\t\t\tcloseOpacity : true,\n\t\t\tcloseMethod  : 'zoomOut',\n\n\t\t\t\/\/ Changing next gallery item\n\t\t\tnextEffect : 'elastic', \/\/ 'elastic', 'fade' or 'none'\n\t\t\tnextSpeed  : 250,\n\t\t\tnextEasing : 'swing',\n\t\t\tnextMethod : 'changeIn',\n\n\t\t\t\/\/ Changing previous gallery item\n\t\t\tprevEffect : 'elastic', \/\/ 'elastic', 'fade' or 'none'\n\t\t\tprevSpeed  : 250,\n\t\t\tprevEasing : 'swing',\n\t\t\tprevMethod : 'changeOut',\n\n\t\t\t\/\/ Enable default helpers\n\t\t\thelpers : {\n\t\t\t\toverlay : true,\n\t\t\t\ttitle   : true\n\t\t\t},\n\n\t\t\t\/\/ Callbacks\n\t\t\tonCancel     : $.noop, \/\/ If canceling\n\t\t\tbeforeLoad   : $.noop, \/\/ Before loading\n\t\t\tafterLoad    : $.noop, \/\/ After loading\n\t\t\tbeforeShow   : $.noop, \/\/ Before changing in current item\n\t\t\tafterShow    : $.noop, \/\/ After opening\n\t\t\tbeforeChange : $.noop, \/\/ Before changing gallery item\n\t\t\tbeforeClose  : $.noop, \/\/ Before closing\n\t\t\tafterClose   : $.noop  \/\/ After closing\n\t\t},\n\n\t\t\/\/Current state\n\t\tgroup    : {}, \/\/ Selected group\n\t\topts     : {}, \/\/ Group options\n\t\tprevious : null,  \/\/ Previous element\n\t\tcoming   : null,  \/\/ Element being loaded\n\t\tcurrent  : null,  \/\/ Currently loaded element\n\t\tisActive : false, \/\/ Is activated\n\t\tisOpen   : false, \/\/ Is currently open\n\t\tisOpened : false, \/\/ Have been fully opened at least once\n\n\t\twrap  : null,\n\t\tskin  : null,\n\t\touter : null,\n\t\tinner : null,\n\n\t\tplayer : {\n\t\t\ttimer    : null,\n\t\t\tisActive : false\n\t\t},\n\n\t\t\/\/ Loaders\n\t\tajaxLoad   : null,\n\t\timgPreload : null,\n\n\t\t\/\/ Some collections\n\t\ttransitions : {},\n\t\thelpers     : {},\n\n\t\t\/*\n\t\t *\tStatic methods\n\t\t *\/\n\n\t\topen: function (group, opts) {\n\t\t\tif (!group) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!$.isPlainObject(opts)) {\n\t\t\t\topts = {};\n\t\t\t}\n\n\t\t\t\/\/ Close if already active\n\t\t\tif (false === F.close(true)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t\/\/ Normalize group\n\t\t\tif (!$.isArray(group)) {\n\t\t\t\tgroup = isQuery(group) ? $(group).get() : [group];\n\t\t\t}\n\n\t\t\t\/\/ Recheck if the type of each element is `object` and set content type (image, ajax, etc)\n\t\t\t$.each(group, function(i, element) {\n\t\t\t\tvar obj = {},\n\t\t\t\t\thref,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\ttype,\n\t\t\t\t\trez,\n\t\t\t\t\threfParts,\n\t\t\t\t\tselector;\n\n\t\t\t\tif ($.type(element) === \"object\") {\n\t\t\t\t\t\/\/ Check if is DOM element\n\t\t\t\t\tif (element.nodeType) {\n\t\t\t\t\t\telement = $(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isQuery(element)) {\n\t\t\t\t\t\tobj = {\n\t\t\t\t\t\t\thref    : element.data('fancybox-href') || element.attr('href'),\n\t\t\t\t\t\t\ttitle   : element.data('fancybox-title') || element.attr('title'),\n\t\t\t\t\t\t\tisDom   : true,\n\t\t\t\t\t\t\telement : element\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif ($.metadata) {\n\t\t\t\t\t\t\t$.extend(true, obj, element.metadata());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thref  = opts.href  || obj.href || (isString(element) ? element : null);\n\t\t\t\ttitle = opts.title !== undefined ? opts.title : obj.title || '';\n\n\t\t\t\tcontent = opts.content || obj.content;\n\t\t\t\ttype    = content ? 'html' : (opts.type  || obj.type);\n\n\t\t\t\tif (!type \u0026\u0026 obj.isDom) {\n\t\t\t\t\ttype = element.data('fancybox-type');\n\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\trez  = element.prop('class').match(\/fancybox\\.(\\w+)\/);\n\t\t\t\t\t\ttype = rez ? rez[1] : null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isString(href)) {\n\t\t\t\t\t\/\/ Try to guess the content type\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\tif (F.isImage(href)) {\n\t\t\t\t\t\t\ttype = 'image';\n\n\t\t\t\t\t\t} else if (F.isSWF(href)) {\n\t\t\t\t\t\t\ttype = 'swf';\n\n\t\t\t\t\t\t} else if (href.charAt(0) === '#') {\n\t\t\t\t\t\t\ttype = 'inline';\n\n\t\t\t\t\t\t} else if (isString(element)) {\n\t\t\t\t\t\t\ttype    = 'html';\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ Split url into two pieces with source url and content selector, e.g,\n\t\t\t\t\t\/\/ \"\/mypage.html #my_id\" will load \"\/mypage.html\" and display element having id \"my_id\"\n\t\t\t\t\tif (type === 'ajax') {\n\t\t\t\t\t\threfParts = href.split(\/\\s+\/, 2);\n\t\t\t\t\t\thref      = hrefParts.shift();\n\t\t\t\t\t\tselector  = hrefParts.shift();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!content) {\n\t\t\t\t\tif (type === 'inline') {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tcontent = $( isString(href) ? href.replace(\/.*(?=#[^\\s]+$)\/, '') : href ); \/\/strip for ie7\n\n\t\t\t\t\t\t} else if (obj.isDom) {\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (type === 'html') {\n\t\t\t\t\t\tcontent = href;\n\n\t\t\t\t\t} else if (!type \u0026\u0026 !href \u0026\u0026 obj.isDom) {\n\t\t\t\t\t\ttype    = 'inline';\n\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.extend(obj, {\n\t\t\t\t\thref     : href,\n\t\t\t\t\ttype     : type,\n\t\t\t\t\tcontent  : content,\n\t\t\t\t\ttitle    : title,\n\t\t\t\t\tselector : selector\n\t\t\t\t});\n\n\t\t\t\tgroup[ i ] = obj;\n\t\t\t});\n\n\t\t\t\/\/ Extend the defaults\n\t\t\tF.opts = $.extend(true, {}, F.defaults, opts);\n\n\t\t\t\/\/ All options are merged recursive except keys\n\t\t\tif (opts.keys !== undefined) {\n\t\t\t\tF.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;\n\t\t\t}\n\n\t\t\tF.group = group;\n\n\t\t\treturn F._start(F.opts.index);\n\t\t},\n\n\t\t\/\/ Cancel image loading or abort ajax request\n\t\tcancel: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tif (!coming || false === F.trigger('onCancel')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (F.ajaxLoad) {\n\t\t\t\tF.ajaxLoad.abort();\n\t\t\t}\n\n\t\t\tF.ajaxLoad = null;\n\n\t\t\tif (F.imgPreload) {\n\t\t\t\tF.imgPreload.onload = F.imgPreload.onerror = null;\n\t\t\t}\n\n\t\t\tif (coming.wrap) {\n\t\t\t\tcoming.wrap.stop(true, true).trigger('onReset').remove();\n\t\t\t}\n\n\t\t\tF.coming = null;\n\n\t\t\t\/\/ If the first item has been canceled, then clear everything\n\t\t\tif (!F.current) {\n\t\t\t\tF._afterZoomOut( coming );\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Start closing animation if is open; remove immediately if opening\/closing\n\t\tclose: function (event) {\n\t\t\tF.cancel();\n\n\t\t\tif (false === F.trigger('beforeClose')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tif (!F.isActive) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || event === true) {\n\t\t\t\t$('.fancybox-wrap').stop(true).trigger('onReset').remove();\n\n\t\t\t\tF._afterZoomOut();\n\n\t\t\t} else {\n\t\t\t\tF.isOpen = F.isOpened = false;\n\t\t\t\tF.isClosing = true;\n\n\t\t\t\t$('.fancybox-item, .fancybox-nav').remove();\n\n\t\t\t\tF.wrap.stop(true, true).removeClass('fancybox-opened');\n\n\t\t\t\tF.transitions[ F.current.closeMethod ]();\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Manage slideshow:\n\t\t\/\/   $.fancybox.play(); - toggle slideshow\n\t\t\/\/   $.fancybox.play( true ); - start\n\t\t\/\/   $.fancybox.play( false ); - stop\n\t\tplay: function ( action ) {\n\t\t\tvar clear = function () {\n\t\t\t\t\tclearTimeout(F.player.timer);\n\t\t\t\t},\n\t\t\t\tset = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\tif (F.current \u0026\u0026 F.player.isActive) {\n\t\t\t\t\t\tF.player.timer = setTimeout(F.next, F.current.playSpeed);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstop = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\tD.unbind('.player');\n\n\t\t\t\t\tF.player.isActive = false;\n\n\t\t\t\t\tF.trigger('onPlayEnd');\n\t\t\t\t},\n\t\t\t\tstart = function () {\n\t\t\t\t\tif (F.current \u0026\u0026 (F.current.loop || F.current.index \u003c F.group.length - 1)) {\n\t\t\t\t\t\tF.player.isActive = true;\n\n\t\t\t\t\t\tD.bind({\n\t\t\t\t\t\t\t'onCancel.player beforeClose.player' : stop,\n\t\t\t\t\t\t\t'onUpdate.player'   : set,\n\t\t\t\t\t\t\t'beforeLoad.player' : clear\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tset();\n\n\t\t\t\t\t\tF.trigger('onPlayStart');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tif (action === true || (!F.player.isActive \u0026\u0026 action !== false)) {\n\t\t\t\tstart();\n\t\t\t} else {\n\t\t\t\tstop();\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Navigate to next gallery item\n\t\tnext: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.next;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index + 1, direction, 'next');\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Navigate to previous gallery item\n\t\tprev: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.prev;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index - 1, direction, 'prev');\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Navigate to gallery item by index\n\t\tjumpto: function ( index, direction, router ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tindex = getScalar(index);\n\n\t\t\tF.direction = direction || current.direction[ (index \u003e= current.index ? 'next' : 'prev') ];\n\t\t\tF.router    = router || 'jumpto';\n\n\t\t\tif (current.loop) {\n\t\t\t\tif (index \u003c 0) {\n\t\t\t\t\tindex = current.group.length + (index % current.group.length);\n\t\t\t\t}\n\n\t\t\t\tindex = index % current.group.length;\n\t\t\t}\n\n\t\t\tif (current.group[ index ] !== undefined) {\n\t\t\t\tF.cancel();\n\n\t\t\t\tF._start(index);\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Center inside viewport and toggle position type to fixed or absolute if needed\n\t\treposition: function (e, onlyAbsolute) {\n\t\t\tvar current = F.current,\n\t\t\t\twrap    = current ? current.wrap : null,\n\t\t\t\tpos;\n\n\t\t\tif (wrap) {\n\t\t\t\tpos = F._getPosition(onlyAbsolute);\n\n\t\t\t\tif (e \u0026\u0026 e.type === 'scroll') {\n\t\t\t\t\tdelete pos.position;\n\n\t\t\t\t\twrap.stop(true, true).animate(pos, 200);\n\n\t\t\t\t} else {\n\t\t\t\t\twrap.css(pos);\n\n\t\t\t\t\tcurrent.pos = $.extend({}, current.dim, pos);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdate: function (e) {\n\t\t\tvar type = (e \u0026\u0026 e.type),\n\t\t\t\tanyway = !type || type === 'orientationchange';\n\n\t\t\tif (anyway) {\n\t\t\t\tclearTimeout(didUpdate);\n\n\t\t\t\tdidUpdate = null;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || didUpdate) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdidUpdate = setTimeout(function() {\n\t\t\t\tvar current = F.current;\n\n\t\t\t\tif (!current || F.isClosing) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tF.wrap.removeClass('fancybox-tmp');\n\n\t\t\t\tif (anyway || type === 'load' || (type === 'resize' \u0026\u0026 current.autoResize)) {\n\t\t\t\t\tF._setDimension();\n\t\t\t\t}\n\n\t\t\t\tif (!(type === 'scroll' \u0026\u0026 current.canShrink)) {\n\t\t\t\t\tF.reposition(e);\n\t\t\t\t}\n\n\t\t\t\tF.trigger('onUpdate');\n\n\t\t\t\tdidUpdate = null;\n\n\t\t\t}, (anyway \u0026\u0026 !isTouch ? 0 : 300));\n\t\t},\n\n\t\t\/\/ Shrink content to fit inside viewport or restore if resized\n\t\ttoggle: function ( action ) {\n\t\t\tif (F.isOpen) {\n\t\t\t\tF.current.fitToView = $.type(action) === \"boolean\" ? action : !F.current.fitToView;\n\n\t\t\t\t\/\/ Help browser to restore document dimensions\n\t\t\t\tif (isTouch) {\n\t\t\t\t\tF.wrap.removeAttr('style').addClass('fancybox-tmp');\n\n\t\t\t\t\tF.trigger('onUpdate');\n\t\t\t\t}\n\n\t\t\t\tF.update();\n\t\t\t}\n\t\t},\n\n\t\thideLoading: function () {\n\t\t\tD.unbind('.loading');\n\n\t\t\t$('#fancybox-loading').remove();\n\t\t},\n\n\t\tshowLoading: function () {\n\t\t\tvar el, viewport;\n\n\t\t\tF.hideLoading();\n\n\t\t\tel = $('\u003cdiv id=\"fancybox-loading\"\u003e\u003cdiv\u003e\u003c\/div\u003e\u003c\/div\u003e').click(F.cancel).appendTo('body');\n\n\t\t\t\/\/ If user will press the escape-button, the request will be canceled\n\t\t\tD.bind('keydown.loading', function(e) {\n\t\t\t\tif ((e.which || e.keyCode) === 27) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.cancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!F.defaults.fixed) {\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\t\tel.css({\n\t\t\t\t\tposition : 'absolute',\n\t\t\t\t\ttop  : (viewport.h * 0.5) + viewport.y,\n\t\t\t\t\tleft : (viewport.w * 0.5) + viewport.x\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tgetViewport: function () {\n\t\t\tvar locked = (F.current \u0026\u0026 F.current.locked) || false,\n\t\t\t\trez    = {\n\t\t\t\t\tx: W.scrollLeft(),\n\t\t\t\t\ty: W.scrollTop()\n\t\t\t\t};\n\n\t\t\tif (locked) {\n\t\t\t\trez.w = locked[0].clientWidth;\n\t\t\t\trez.h = locked[0].clientHeight;\n\n\t\t\t} else {\n\t\t\t\t\/\/ See http:\/\/bugs.jquery.com\/ticket\/6724\n\t\t\t\trez.w = isTouch \u0026\u0026 window.innerWidth  ? window.innerWidth  : W.width();\n\t\t\t\trez.h = isTouch \u0026\u0026 window.innerHeight ? window.innerHeight : W.height();\n\t\t\t}\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t\/\/ Unbind the keyboard \/ clicking actions\n\t\tunbindEvents: function () {\n\t\t\tif (F.wrap \u0026\u0026 isQuery(F.wrap)) {\n\t\t\t\tF.wrap.unbind('.fb');\n\t\t\t}\n\n\t\t\tD.unbind('.fb');\n\t\t\tW.unbind('.fb');\n\t\t},\n\n\t\tbindEvents: function () {\n\t\t\tvar current = F.current,\n\t\t\t\tkeys;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t\/\/ Changing document height on iOS devices triggers a 'resize' event,\n\t\t\t\/\/ that can change document height... repeating infinitely\n\t\t\tW.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter \u0026\u0026 !current.locked ? ' scroll.fb' : ''), F.update);\n\n\t\t\tkeys = current.keys;\n\n\t\t\tif (keys) {\n\t\t\t\tD.bind('keydown.fb', function (e) {\n\t\t\t\t\tvar code   = e.which || e.keyCode,\n\t\t\t\t\t\ttarget = e.target || e.srcElement;\n\n\t\t\t\t\t\/\/ Skip esc key if loading, because showLoading will cancel preloading\n\t\t\t\t\tif (code === 27 \u0026\u0026 F.coming) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ Ignore key combinations and key events within form elements\n\t\t\t\t\tif (!e.ctrlKey \u0026\u0026 !e.altKey \u0026\u0026 !e.shiftKey \u0026\u0026 !e.metaKey \u0026\u0026 !(target \u0026\u0026 (target.type || $(target).is('[contenteditable]')))) {\n\t\t\t\t\t\t$.each(keys, function(i, val) {\n\t\t\t\t\t\t\tif (current.group.length \u003e 1 \u0026\u0026 val[ code ] !== undefined) {\n\t\t\t\t\t\t\t\tF[ i ]( val[ code ] );\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ($.inArray(code, val) \u003e -1) {\n\t\t\t\t\t\t\t\tF[ i ] ();\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ($.fn.mousewheel \u0026\u0026 current.mouseWheel) {\n\t\t\t\tF.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {\n\t\t\t\t\tvar target = e.target || null,\n\t\t\t\t\t\tparent = $(target),\n\t\t\t\t\t\tcanScroll = false;\n\n\t\t\t\t\twhile (parent.length) {\n\t\t\t\t\t\tif (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcanScroll = isScrollable( parent[0] );\n\t\t\t\t\t\tparent    = $(parent).parent();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (delta !== 0 \u0026\u0026 !canScroll) {\n\t\t\t\t\t\tif (F.group.length \u003e 1 \u0026\u0026 !current.canShrink) {\n\t\t\t\t\t\t\tif (deltaY \u003e 0 || deltaX \u003e 0) {\n\t\t\t\t\t\t\t\tF.prev( deltaY \u003e 0 ? 'down' : 'left' );\n\n\t\t\t\t\t\t\t} else if (deltaY \u003c 0 || deltaX \u003c 0) {\n\t\t\t\t\t\t\t\tF.next( deltaY \u003c 0 ? 'up' : 'right' );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\ttrigger: function (event, o) {\n\t\t\tvar ret, obj = o || F.coming || F.current;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($.isFunction( obj[event] )) {\n\t\t\t\tret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\n\t\t\tif (ret === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (obj.helpers) {\n\t\t\t\t$.each(obj.helpers, function (helper, opts) {\n\t\t\t\t\tif (opts \u0026\u0026 F.helpers[helper] \u0026\u0026 $.isFunction(F.helpers[helper][event])) {\n\t\t\t\t\t\tF.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tD.trigger(event);\n\t\t},\n\n\t\tisImage: function (str) {\n\t\t\treturn isString(str) \u0026\u0026 str.match(\/(^data:image\\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)\/i);\n\t\t},\n\n\t\tisSWF: function (str) {\n\t\t\treturn isString(str) \u0026\u0026 str.match(\/\\.(swf)((\\?|#).*)?$\/i);\n\t\t},\n\n\t\t_start: function (index) {\n\t\t\tvar coming = {},\n\t\t\t\tobj,\n\t\t\t\thref,\n\t\t\t\ttype,\n\t\t\t\tmargin,\n\t\t\t\tpadding;\n\n\t\t\tindex = getScalar( index );\n\t\t\tobj   = F.group[ index ] || null;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcoming = $.extend(true, {}, F.opts, obj);\n\n\t\t\t\/\/ Convert margin and padding properties to array - top, right, bottom, left\n\t\t\tmargin  = coming.margin;\n\t\t\tpadding = coming.padding;\n\n\t\t\tif ($.type(margin) === 'number') {\n\t\t\t\tcoming.margin = [margin, margin, margin, margin];\n\t\t\t}\n\n\t\t\tif ($.type(padding) === 'number') {\n\t\t\t\tcoming.padding = [padding, padding, padding, padding];\n\t\t\t}\n\n\t\t\t\/\/ 'modal' propery is just a shortcut\n\t\t\tif (coming.modal) {\n\t\t\t\t$.extend(true, coming, {\n\t\t\t\t\tcloseBtn   : false,\n\t\t\t\t\tcloseClick : false,\n\t\t\t\t\tnextClick  : false,\n\t\t\t\t\tarrows     : false,\n\t\t\t\t\tmouseWheel : false,\n\t\t\t\t\tkeys       : null,\n\t\t\t\t\thelpers: {\n\t\t\t\t\t\toverlay : {\n\t\t\t\t\t\t\tcloseClick : false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/\/ 'autoSize' property is a shortcut, too\n\t\t\tif (coming.autoSize) {\n\t\t\t\tcoming.autoWidth = coming.autoHeight = true;\n\t\t\t}\n\n\t\t\tif (coming.width === 'auto') {\n\t\t\t\tcoming.autoWidth = true;\n\t\t\t}\n\n\t\t\tif (coming.height === 'auto') {\n\t\t\t\tcoming.autoHeight = true;\n\t\t\t}\n\n\t\t\t\/*\n\t\t\t * Add reference to the group, so it`s possible to access from callbacks, example:\n\t\t\t * afterLoad : function() {\n\t\t\t *     this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');\n\t\t\t * }\n\t\t\t *\/\n\n\t\t\tcoming.group  = F.group;\n\t\t\tcoming.index  = index;\n\n\t\t\t\/\/ Give a chance for callback or helpers to update coming item (type, title, etc)\n\t\t\tF.coming = coming;\n\n\t\t\tif (false === F.trigger('beforeLoad')) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttype = coming.type;\n\t\t\thref = coming.href;\n\n\t\t\tif (!type) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\t\/\/If we can not determine content type then drop silently or display next\/prev item if looping through gallery\n\t\t\t\tif (F.current \u0026\u0026 F.router \u0026\u0026 F.router !== 'jumpto') {\n\t\t\t\t\tF.current.index = index;\n\n\t\t\t\t\treturn F[ F.router ]( F.direction );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tF.isActive = true;\n\n\t\t\tif (type === 'image' || type === 'swf') {\n\t\t\t\tcoming.autoHeight = coming.autoWidth = false;\n\t\t\t\tcoming.scrolling  = 'visible';\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tcoming.aspectRatio = true;\n\t\t\t}\n\n\t\t\tif (type === 'iframe' \u0026\u0026 isTouch) {\n\t\t\t\tcoming.scrolling = 'scroll';\n\t\t\t}\n\n\t\t\t\/\/ Build the neccessary markup\n\t\t\tcoming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );\n\n\t\t\t$.extend(coming, {\n\t\t\t\tskin  : $('.fancybox-skin',  coming.wrap),\n\t\t\t\touter : $('.fancybox-outer', coming.wrap),\n\t\t\t\tinner : $('.fancybox-inner', coming.wrap)\n\t\t\t});\n\n\t\t\t$.each([\"Top\", \"Right\", \"Bottom\", \"Left\"], function(i, v) {\n\t\t\t\tcoming.skin.css('padding' + v, getValue(coming.padding[ i ]));\n\t\t\t});\n\n\t\t\tF.trigger('onReady');\n\n\t\t\t\/\/ Check before try to load; 'inline' and 'html' types need content, others - href\n\t\t\tif (type === 'inline' || type === 'html') {\n\t\t\t\tif (!coming.content || !coming.content.length) {\n\t\t\t\t\treturn F._error( 'content' );\n\t\t\t\t}\n\n\t\t\t} else if (!href) {\n\t\t\t\treturn F._error( 'href' );\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tF._loadImage();\n\n\t\t\t} else if (type === 'ajax') {\n\t\t\t\tF._loadAjax();\n\n\t\t\t} else if (type === 'iframe') {\n\t\t\t\tF._loadIframe();\n\n\t\t\t} else {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_error: function ( type ) {\n\t\t\t$.extend(F.coming, {\n\t\t\t\ttype       : 'html',\n\t\t\t\tautoWidth  : true,\n\t\t\t\tautoHeight : true,\n\t\t\t\tminWidth   : 0,\n\t\t\t\tminHeight  : 0,\n\t\t\t\tscrolling  : 'no',\n\t\t\t\thasError   : type,\n\t\t\t\tcontent    : F.coming.tpl.error\n\t\t\t});\n\n\t\t\tF._afterLoad();\n\t\t},\n\n\t\t_loadImage: function () {\n\t\t\t\/\/ Reset preload image so it is later possible to check \"complete\" property\n\t\t\tvar img = F.imgPreload = new Image();\n\n\t\t\timg.onload = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF.coming.width  = this.width \/ F.opts.pixelRatio;\n\t\t\t\tF.coming.height = this.height \/ F.opts.pixelRatio;\n\n\t\t\t\tF._afterLoad();\n\t\t\t};\n\n\t\t\timg.onerror = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF._error( 'image' );\n\t\t\t};\n\n\t\t\timg.src = F.coming.href;\n\n\t\t\tif (img.complete !== true) {\n\t\t\t\tF.showLoading();\n\t\t\t}\n\t\t},\n\n\t\t_loadAjax: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tF.showLoading();\n\n\t\t\tF.ajaxLoad = $.ajax($.extend({}, coming.ajax, {\n\t\t\t\turl: coming.href,\n\t\t\t\terror: function (jqXHR, textStatus) {\n\t\t\t\t\tif (F.coming \u0026\u0026 textStatus !== 'abort') {\n\t\t\t\t\t\tF._error( 'ajax', jqXHR );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tF.hideLoading();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsuccess: function (data, textStatus) {\n\t\t\t\t\tif (textStatus === 'success') {\n\t\t\t\t\t\tcoming.content = data;\n\n\t\t\t\t\t\tF._afterLoad();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\t\t},\n\n\t\t_loadIframe: function() {\n\t\t\tvar coming = F.coming,\n\t\t\t\tiframe = $(coming.tpl.iframe.replace(\/\\{rnd\\}\/g, new Date().getTime()))\n\t\t\t\t\t.attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)\n\t\t\t\t\t.attr('src', coming.href);\n\n\t\t\t\/\/ This helps IE\n\t\t\t$(coming.wrap).bind('onReset', function () {\n\t\t\t\ttry {\n\t\t\t\t\t$(this).find('iframe').hide().attr('src', '\/\/about:blank').end().empty();\n\t\t\t\t} catch (e) {}\n\t\t\t});\n\n\t\t\tif (coming.iframe.preload) {\n\t\t\t\tF.showLoading();\n\n\t\t\t\tiframe.one('load', function() {\n\t\t\t\t\t$(this).data('ready', 1);\n\n\t\t\t\t\t\/\/ iOS will lose scrolling if we resize\n\t\t\t\t\tif (!isTouch) {\n\t\t\t\t\t\t$(this).bind('load.fb', F.update);\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ Without this trick:\n\t\t\t\t\t\/\/   - iframe won't scroll on iOS devices\n\t\t\t\t\t\/\/   - IE7 sometimes displays empty iframe\n\t\t\t\t\t$(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();\n\n\t\t\t\t\tF._afterLoad();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcoming.content = iframe.appendTo( coming.inner );\n\n\t\t\tif (!coming.iframe.preload) {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_preloadImages: function() {\n\t\t\tvar group   = F.group,\n\t\t\t\tcurrent = F.current,\n\t\t\t\tlen     = group.length,\n\t\t\t\tcnt     = current.preload ? Math.min(current.preload, len - 1) : 0,\n\t\t\t\titem,\n\t\t\t\ti;\n\n\t\t\tfor (i = 1; i \u003c= cnt; i += 1) {\n\t\t\t\titem = group[ (current.index + i ) % len ];\n\n\t\t\t\tif (item.type === 'image' \u0026\u0026 item.href) {\n\t\t\t\t\tnew Image().src = item.href;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_afterLoad: function () {\n\t\t\tvar coming   = F.coming,\n\t\t\t\tprevious = F.current,\n\t\t\t\tplaceholder = 'fancybox-placeholder',\n\t\t\t\tcurrent,\n\t\t\t\tcontent,\n\t\t\t\ttype,\n\t\t\t\tscrolling,\n\t\t\t\thref,\n\t\t\t\tembed;\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (!coming || F.isActive === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (false === F.trigger('afterLoad', coming, previous)) {\n\t\t\t\tcoming.wrap.stop(true).trigger('onReset').remove();\n\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (previous) {\n\t\t\t\tF.trigger('beforeChange', previous);\n\n\t\t\t\tprevious.wrap.stop(true).removeClass('fancybox-opened')\n\t\t\t\t\t.find('.fancybox-item, .fancybox-nav')\n\t\t\t\t\t.remove();\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tcurrent   = coming;\n\t\t\tcontent   = coming.content;\n\t\t\ttype      = coming.type;\n\t\t\tscrolling = coming.scrolling;\n\n\t\t\t$.extend(F, {\n\t\t\t\twrap  : current.wrap,\n\t\t\t\tskin  : current.skin,\n\t\t\t\touter : current.outer,\n\t\t\t\tinner : current.inner,\n\t\t\t\tcurrent  : current,\n\t\t\t\tprevious : previous\n\t\t\t});\n\n\t\t\thref = current.href;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inline':\n\t\t\t\tcase 'ajax':\n\t\t\t\tcase 'html':\n\t\t\t\t\tif (current.selector) {\n\t\t\t\t\t\tcontent = $('\u003cdiv\u003e').html(content).find(current.selector);\n\n\t\t\t\t\t} else if (isQuery(content)) {\n\t\t\t\t\t\tif (!content.data(placeholder)) {\n\t\t\t\t\t\t\tcontent.data(placeholder, $('\u003cdiv class=\"' + placeholder + '\"\u003e\u003c\/div\u003e').insertAfter( content ).hide() );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontent = content.show().detach();\n\n\t\t\t\t\t\tcurrent.wrap.bind('onReset', function () {\n\t\t\t\t\t\t\tif ($(this).find(content).length) {\n\t\t\t\t\t\t\t\tcontent.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'image':\n\t\t\t\t\tcontent = current.tpl.image.replace('{href}', href);\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'swf':\n\t\t\t\t\tcontent = '\u003cobject id=\"fancybox-swf\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"100%\" height=\"100%\"\u003e\u003cparam name=\"movie\" value=\"' + href + '\"\u003e';\n\t\t\t\t\tembed   = '';\n\n\t\t\t\t\t$.each(current.swf, function(name, val) {\n\t\t\t\t\t\tcontent += '\u003cparam name=\"' + name + '\" value=\"' + val + '\"\u003e';\n\t\t\t\t\t\tembed   += ' ' + name + '=\"' + val + '\"';\n\t\t\t\t\t});\n\n\t\t\t\t\tcontent += '\u003cembed src=\"' + href + '\" type=\"application\/x-shockwave-flash\" width=\"100%\" height=\"100%\"' + embed + '\u003e\u003c\/object\u003e';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!(isQuery(content) \u0026\u0026 content.parent().is(current.inner))) {\n\t\t\t\tcurrent.inner.append( content );\n\t\t\t}\n\n\t\t\t\/\/ Give a chance for helpers or callbacks to update elements\n\t\t\tF.trigger('beforeShow');\n\n\t\t\t\/\/ Set scrolling before calculating dimensions\n\t\t\tcurrent.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));\n\n\t\t\t\/\/ Set initial dimensions and start position\n\t\t\tF._setDimension();\n\n\t\t\tF.reposition();\n\n\t\t\tF.isOpen = false;\n\t\t\tF.coming = null;\n\n\t\t\tF.bindEvents();\n\n\t\t\tif (!F.isOpened) {\n\t\t\t\t$('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();\n\n\t\t\t} else if (previous.prevMethod) {\n\t\t\t\tF.transitions[ previous.prevMethod ]();\n\t\t\t}\n\n\t\t\tF.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();\n\n\t\t\tF._preloadImages();\n\t\t},\n\n\t\t_setDimension: function () {\n\t\t\tvar viewport   = F.getViewport(),\n\t\t\t\tsteps      = 0,\n\t\t\t\tcanShrink  = false,\n\t\t\t\tcanExpand  = false,\n\t\t\t\twrap       = F.wrap,\n\t\t\t\tskin       = F.skin,\n\t\t\t\tinner      = F.inner,\n\t\t\t\tcurrent    = F.current,\n\t\t\t\twidth      = current.width,\n\t\t\t\theight     = current.height,\n\t\t\t\tminWidth   = current.minWidth,\n\t\t\t\tminHeight  = current.minHeight,\n\t\t\t\tmaxWidth   = current.maxWidth,\n\t\t\t\tmaxHeight  = current.maxHeight,\n\t\t\t\tscrolling  = current.scrolling,\n\t\t\t\tscrollOut  = current.scrollOutside ? current.scrollbarWidth : 0,\n\t\t\t\tmargin     = current.margin,\n\t\t\t\twMargin    = getScalar(margin[1] + margin[3]),\n\t\t\t\thMargin    = getScalar(margin[0] + margin[2]),\n\t\t\t\twPadding,\n\t\t\t\thPadding,\n\t\t\t\twSpace,\n\t\t\t\thSpace,\n\t\t\t\torigWidth,\n\t\t\t\torigHeight,\n\t\t\t\torigMaxWidth,\n\t\t\t\torigMaxHeight,\n\t\t\t\tratio,\n\t\t\t\twidth_,\n\t\t\t\theight_,\n\t\t\t\tmaxWidth_,\n\t\t\t\tmaxHeight_,\n\t\t\t\tiframe,\n\t\t\t\tbody;\n\n\t\t\t\/\/ Reset dimensions so we could re-check actual size\n\t\t\twrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');\n\n\t\t\twPadding = getScalar(skin.outerWidth(true)  - skin.width());\n\t\t\thPadding = getScalar(skin.outerHeight(true) - skin.height());\n\n\t\t\t\/\/ Any space between content and viewport (margin, padding, border, title)\n\t\t\twSpace = wMargin + wPadding;\n\t\t\thSpace = hMargin + hPadding;\n\n\t\t\torigWidth  = isPercentage(width)  ? (viewport.w - wSpace) * getScalar(width)  \/ 100 : width;\n\t\t\torigHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) \/ 100 : height;\n\n\t\t\tif (current.type === 'iframe') {\n\t\t\t\tiframe = current.content;\n\n\t\t\t\tif (current.autoHeight \u0026\u0026 iframe.data('ready') === 1) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (iframe[0].contentWindow.document.location) {\n\t\t\t\t\t\t\tinner.width( origWidth ).height(9999);\n\n\t\t\t\t\t\t\tbody = iframe.contents().find('body');\n\n\t\t\t\t\t\t\tif (scrollOut) {\n\t\t\t\t\t\t\t\tbody.css('overflow-x', 'hidden');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\torigHeight = body.outerHeight(true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t}\n\n\t\t\t} else if (current.autoWidth || current.autoHeight) {\n\t\t\t\tinner.addClass( 'fancybox-tmp' );\n\n\t\t\t\t\/\/ Set width or height in case we need to calculate only one dimension\n\t\t\t\tif (!current.autoWidth) {\n\t\t\t\t\tinner.width( origWidth );\n\t\t\t\t}\n\n\t\t\t\tif (!current.autoHeight) {\n\t\t\t\t\tinner.height( origHeight );\n\t\t\t\t}\n\n\t\t\t\tif (current.autoWidth) {\n\t\t\t\t\torigWidth = inner.width();\n\t\t\t\t}\n\n\t\t\t\tif (current.autoHeight) {\n\t\t\t\t\torigHeight = inner.height();\n\t\t\t\t}\n\n\t\t\t\tinner.removeClass( 'fancybox-tmp' );\n\t\t\t}\n\n\t\t\twidth  = getScalar( origWidth );\n\t\t\theight = getScalar( origHeight );\n\n\t\t\tratio  = origWidth \/ origHeight;\n\n\t\t\t\/\/ Calculations for the content\n\t\t\tminWidth  = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);\n\t\t\tmaxWidth  = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);\n\n\t\t\tminHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);\n\t\t\tmaxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);\n\n\t\t\t\/\/ These will be used to determine if wrap can fit in the viewport\n\t\t\torigMaxWidth  = maxWidth;\n\t\t\torigMaxHeight = maxHeight;\n\n\t\t\tif (current.fitToView) {\n\t\t\t\tmaxWidth  = Math.min(viewport.w - wSpace, maxWidth);\n\t\t\t\tmaxHeight = Math.min(viewport.h - hSpace, maxHeight);\n\t\t\t}\n\n\t\t\tmaxWidth_  = viewport.w - wMargin;\n\t\t\tmaxHeight_ = viewport.h - hMargin;\n\n\t\t\tif (current.aspectRatio) {\n\t\t\t\tif (width \u003e maxWidth) {\n\t\t\t\t\twidth  = maxWidth;\n\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height \u003e maxHeight) {\n\t\t\t\t\theight = maxHeight;\n\t\t\t\t\twidth  = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t\tif (width \u003c minWidth) {\n\t\t\t\t\twidth  = minWidth;\n\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height \u003c minHeight) {\n\t\t\t\t\theight = minHeight;\n\t\t\t\t\twidth  = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\twidth = Math.max(minWidth, Math.min(width, maxWidth));\n\n\t\t\t\tif (current.autoHeight \u0026\u0026 current.type !== 'iframe') {\n\t\t\t\t\tinner.width( width );\n\n\t\t\t\t\theight = inner.height();\n\t\t\t\t}\n\n\t\t\t\theight = Math.max(minHeight, Math.min(height, maxHeight));\n\t\t\t}\n\n\t\t\t\/\/ Try to fit inside viewport (including the title)\n\t\t\tif (current.fitToView) {\n\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t\/\/ Real wrap dimensions\n\t\t\t\twidth_  = wrap.width();\n\t\t\t\theight_ = wrap.height();\n\n\t\t\t\tif (current.aspectRatio) {\n\t\t\t\t\twhile ((width_ \u003e maxWidth_ || height_ \u003e maxHeight_) \u0026\u0026 width \u003e minWidth \u0026\u0026 height \u003e minHeight) {\n\t\t\t\t\t\tif (steps++ \u003e 19) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\theight = Math.max(minHeight, Math.min(maxHeight, height - 10));\n\t\t\t\t\t\twidth  = getScalar(height * ratio);\n\n\t\t\t\t\t\tif (width \u003c minWidth) {\n\t\t\t\t\t\t\twidth  = minWidth;\n\t\t\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (width \u003e maxWidth) {\n\t\t\t\t\t\t\twidth  = maxWidth;\n\t\t\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t\t\twidth_  = wrap.width();\n\t\t\t\t\t\theight_ = wrap.height();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\twidth  = Math.max(minWidth,  Math.min(width,  width  - (width_  - maxWidth_)));\n\t\t\t\t\theight = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (scrollOut \u0026\u0026 scrolling === 'auto' \u0026\u0026 height \u003c origHeight \u0026\u0026 (width + wPadding + scrollOut) \u003c maxWidth_) {\n\t\t\t\twidth += scrollOut;\n\t\t\t}\n\n\t\t\tinner.width( width ).height( height );\n\n\t\t\twrap.width( width + wPadding );\n\n\t\t\twidth_  = wrap.width();\n\t\t\theight_ = wrap.height();\n\n\t\t\tcanShrink = (width_ \u003e maxWidth_ || height_ \u003e maxHeight_) \u0026\u0026 width \u003e minWidth \u0026\u0026 height \u003e minHeight;\n\t\t\tcanExpand = current.aspectRatio ? (width \u003c origMaxWidth \u0026\u0026 height \u003c origMaxHeight \u0026\u0026 width \u003c origWidth \u0026\u0026 height \u003c origHeight) : ((width \u003c origMaxWidth || height \u003c origMaxHeight) \u0026\u0026 (width \u003c origWidth || height \u003c origHeight));\n\n\t\t\t$.extend(current, {\n\t\t\t\tdim : {\n\t\t\t\t\twidth\t: getValue( width_ ),\n\t\t\t\t\theight\t: getValue( height_ )\n\t\t\t\t},\n\t\t\t\torigWidth  : origWidth,\n\t\t\t\torigHeight : origHeight,\n\t\t\t\tcanShrink  : canShrink,\n\t\t\t\tcanExpand  : canExpand,\n\t\t\t\twPadding   : wPadding,\n\t\t\t\thPadding   : hPadding,\n\t\t\t\twrapSpace  : height_ - skin.outerHeight(true),\n\t\t\t\tskinSpace  : skin.height() - height\n\t\t\t});\n\n\t\t\tif (!iframe \u0026\u0026 current.autoHeight \u0026\u0026 height \u003e minHeight \u0026\u0026 height \u003c maxHeight \u0026\u0026 !canExpand) {\n\t\t\t\tinner.height('auto');\n\t\t\t}\n\t\t},\n\n\t\t_getPosition: function (onlyAbsolute) {\n\t\t\tvar current  = F.current,\n\t\t\t\tviewport = F.getViewport(),\n\t\t\t\tmargin   = current.margin,\n\t\t\t\twidth    = F.wrap.width()  + margin[1] + margin[3],\n\t\t\t\theight   = F.wrap.height() + margin[0] + margin[2],\n\t\t\t\trez      = {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop  : margin[0],\n\t\t\t\t\tleft : margin[3]\n\t\t\t\t};\n\n\t\t\tif (current.autoCenter \u0026\u0026 current.fixed \u0026\u0026 !onlyAbsolute \u0026\u0026 height \u003c= viewport.h \u0026\u0026 width \u003c= viewport.w) {\n\t\t\t\trez.position = 'fixed';\n\n\t\t\t} else if (!current.locked) {\n\t\t\t\trez.top  += viewport.y;\n\t\t\t\trez.left += viewport.x;\n\t\t\t}\n\n\t\t\trez.top  = getValue(Math.max(rez.top,  rez.top  + ((viewport.h - height) * current.topRatio)));\n\t\t\trez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width)  * current.leftRatio)));\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t_afterZoomIn: function () {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.isOpen = F.isOpened = true;\n\n\t\t\tF.wrap.css('overflow', 'visible').addClass('fancybox-opened');\n\n\t\t\tF.update();\n\n\t\t\t\/\/ Assign a click event\n\t\t\tif ( current.closeClick || (current.nextClick \u0026\u0026 F.group.length \u003e 1) ) {\n\t\t\t\tF.inner.css('cursor', 'pointer').bind('click.fb', function(e) {\n\t\t\t\t\tif (!$(e.target).is('a') \u0026\u0026 !$(e.target).parent().is('a')) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tF[ current.closeClick ? 'close' : 'next' ]();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/\/ Create a close button\n\t\t\tif (current.closeBtn) {\n\t\t\t\t$(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.close();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/\/ Create navigation arrows\n\t\t\tif (current.arrows \u0026\u0026 F.group.length \u003e 1) {\n\t\t\t\tif (current.loop || current.index \u003e 0) {\n\t\t\t\t\t$(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);\n\t\t\t\t}\n\n\t\t\t\tif (current.loop || current.index \u003c F.group.length - 1) {\n\t\t\t\t\t$(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.trigger('afterShow');\n\n\t\t\t\/\/ Stop the slideshow if this is the last item\n\t\t\tif (!current.loop \u0026\u0026 current.index === current.group.length - 1) {\n\t\t\t\tF.play( false );\n\n\t\t\t} else if (F.opts.autoPlay \u0026\u0026 !F.player.isActive) {\n\t\t\t\tF.opts.autoPlay = false;\n\n\t\t\t\tF.play();\n\t\t\t}\n\t\t},\n\n\t\t_afterZoomOut: function ( obj ) {\n\t\t\tobj = obj || F.current;\n\n\t\t\t$('.fancybox-wrap').trigger('onReset').remove();\n\n\t\t\t$.extend(F, {\n\t\t\t\tgroup  : {},\n\t\t\t\topts   : {},\n\t\t\t\trouter : false,\n\t\t\t\tcurrent   : null,\n\t\t\t\tisActive  : false,\n\t\t\t\tisOpened  : false,\n\t\t\t\tisOpen    : false,\n\t\t\t\tisClosing : false,\n\t\t\t\twrap   : null,\n\t\t\t\tskin   : null,\n\t\t\t\touter  : null,\n\t\t\t\tinner  : null\n\t\t\t});\n\n\t\t\tF.trigger('afterClose', obj);\n\t\t}\n\t});\n\n\t\/*\n\t *\tDefault transitions\n\t *\/\n\n\tF.transitions = {\n\t\tgetOrigPosition: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\telement  = current.element,\n\t\t\t\torig     = current.orig,\n\t\t\t\tpos      = {},\n\t\t\t\twidth    = 50,\n\t\t\t\theight   = 50,\n\t\t\t\thPadding = current.hPadding,\n\t\t\t\twPadding = current.wPadding,\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\tif (!orig \u0026\u0026 current.isDom \u0026\u0026 element.is(':visible')) {\n\t\t\t\torig = element.find('img:first');\n\n\t\t\t\tif (!orig.length) {\n\t\t\t\t\torig = element;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isQuery(orig)) {\n\t\t\t\tpos = orig.offset();\n\n\t\t\t\tif (orig.is('img')) {\n\t\t\t\t\twidth  = orig.outerWidth();\n\t\t\t\t\theight = orig.outerHeight();\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tpos.top  = viewport.y + (viewport.h - height) * current.topRatio;\n\t\t\t\tpos.left = viewport.x + (viewport.w - width)  * current.leftRatio;\n\t\t\t}\n\n\t\t\tif (F.wrap.css('position') === 'fixed' || current.locked) {\n\t\t\t\tpos.top  -= viewport.y;\n\t\t\t\tpos.left -= viewport.x;\n\t\t\t}\n\n\t\t\tpos = {\n\t\t\t\ttop     : getValue(pos.top  - hPadding * current.topRatio),\n\t\t\t\tleft    : getValue(pos.left - wPadding * current.leftRatio),\n\t\t\t\twidth   : getValue(width  + wPadding),\n\t\t\t\theight  : getValue(height + hPadding)\n\t\t\t};\n\n\t\t\treturn pos;\n\t\t},\n\n\t\tstep: function (now, fx) {\n\t\t\tvar ratio,\n\t\t\t\tpadding,\n\t\t\t\tvalue,\n\t\t\t\tprop       = fx.prop,\n\t\t\t\tcurrent    = F.current,\n\t\t\t\twrapSpace  = current.wrapSpace,\n\t\t\t\tskinSpace  = current.skinSpace;\n\n\t\t\tif (prop === 'width' || prop === 'height') {\n\t\t\t\tratio = fx.end === fx.start ? 1 : (now - fx.start) \/ (fx.end - fx.start);\n\n\t\t\t\tif (F.isClosing) {\n\t\t\t\t\tratio = 1 - ratio;\n\t\t\t\t}\n\n\t\t\t\tpadding = prop === 'width' ? current.wPadding : current.hPadding;\n\t\t\t\tvalue   = now - padding;\n\n\t\t\t\tF.skin[ prop ](  getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) ) );\n\t\t\t\tF.inner[ prop ]( getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );\n\t\t\t}\n\t\t},\n\n\t\tzoomIn: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\tstartPos = current.pos,\n\t\t\t\teffect   = current.openEffect,\n\t\t\t\telastic  = effect === 'elastic',\n\t\t\t\tendPos   = $.extend({opacity : 1}, startPos);\n\n\t\t\t\/\/ Remove \"position\" property that breaks older IE\n\t\t\tdelete endPos.position;\n\n\t\t\tif (elastic) {\n\t\t\t\tstartPos = this.getOrigPosition();\n\n\t\t\t\tif (current.openOpacity) {\n\t\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t\t}\n\n\t\t\t} else if (effect === 'fade') {\n\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t}\n\n\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.openSpeed,\n\t\t\t\teasing   : current.openEasing,\n\t\t\t\tstep     : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t});\n\t\t},\n\n\t\tzoomOut: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\teffect   = current.closeEffect,\n\t\t\t\telastic  = effect === 'elastic',\n\t\t\t\tendPos   = {opacity : 0.1};\n\n\t\t\tif (elastic) {\n\t\t\t\tendPos = this.getOrigPosition();\n\n\t\t\t\tif (current.closeOpacity) {\n\t\t\t\t\tendPos.opacity = 0.1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.closeSpeed,\n\t\t\t\teasing   : current.closeEasing,\n\t\t\t\tstep     : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomOut\n\t\t\t});\n\t\t},\n\n\t\tchangeIn: function () {\n\t\t\tvar current   = F.current,\n\t\t\t\teffect    = current.nextEffect,\n\t\t\t\tstartPos  = current.pos,\n\t\t\t\tendPos    = { opacity : 1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance  = 200,\n\t\t\t\tfield;\n\n\t\t\tstartPos.opacity = 0.1;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tfield = direction === 'down' || direction === 'up' ? 'top' : 'left';\n\n\t\t\t\tif (direction === 'down' || direction === 'right') {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);\n\t\t\t\t\tendPos[ field ]   = '+=' + distance + 'px';\n\n\t\t\t\t} else {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);\n\t\t\t\t\tendPos[ field ]   = '-=' + distance + 'px';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\/\/ Workaround for http:\/\/bugs.jquery.com\/ticket\/12273\n\t\t\tif (effect === 'none') {\n\t\t\t\tF._afterZoomIn();\n\n\t\t\t} else {\n\t\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\t\tduration : current.nextSpeed,\n\t\t\t\t\teasing   : current.nextEasing,\n\t\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tchangeOut: function () {\n\t\t\tvar previous  = F.previous,\n\t\t\t\teffect    = previous.prevEffect,\n\t\t\t\tendPos    = { opacity : 0.1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance  = 200;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tendPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';\n\t\t\t}\n\n\t\t\tprevious.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : previous.prevSpeed,\n\t\t\t\teasing   : previous.prevEasing,\n\t\t\t\tcomplete : function () {\n\t\t\t\t\t$(this).trigger('onReset').remove();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t\/*\n\t *\tOverlay helper\n\t *\/\n\n\tF.helpers.overlay = {\n\t\tdefaults : {\n\t\t\tcloseClick : true,      \/\/ if true, fancyBox will be closed when user clicks on the overlay\n\t\t\tspeedOut   : 200,       \/\/ duration of fadeOut animation\n\t\t\tshowEarly  : true,      \/\/ indicates if should be opened immediately or wait until the content is ready\n\t\t\tcss        : {},        \/\/ custom CSS properties\n\t\t\tlocked     : !isTouch,  \/\/ if true, the content will be locked into overlay\n\t\t\tfixed      : true       \/\/ if false, the overlay CSS position property will not be set to \"fixed\"\n\t\t},\n\n\t\toverlay : null,      \/\/ current handle\n\t\tfixed   : false,     \/\/ indicates if the overlay has position \"fixed\"\n\t\tel      : $('html'), \/\/ element that contains \"the lock\"\n\n\t\t\/\/ Public methods\n\t\tcreate : function(opts) {\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.close();\n\t\t\t}\n\n\t\t\tthis.overlay = $('\u003cdiv class=\"fancybox-overlay\"\u003e\u003c\/div\u003e').appendTo( F.coming ? F.coming.parent : opts.parent );\n\t\t\tthis.fixed   = false;\n\n\t\t\tif (opts.fixed \u0026\u0026 F.defaults.fixed) {\n\t\t\t\tthis.overlay.addClass('fancybox-overlay-fixed');\n\n\t\t\t\tthis.fixed = true;\n\t\t\t}\n\t\t},\n\n\t\topen : function(opts) {\n\t\t\tvar that = this;\n\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.overlay.unbind('.overlay').width('auto').height('auto');\n\n\t\t\t} else {\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (!this.fixed) {\n\t\t\t\tW.bind('resize.overlay', $.proxy( this.update, this) );\n\n\t\t\t\tthis.update();\n\t\t\t}\n\n\t\t\tif (opts.closeClick) {\n\t\t\t\tthis.overlay.bind('click.overlay', function(e) {\n\t\t\t\t\tif ($(e.target).hasClass('fancybox-overlay')) {\n\t\t\t\t\t\tif (F.isActive) {\n\t\t\t\t\t\t\tF.close();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.overlay.css( opts.css ).show();\n\t\t},\n\n\t\tclose : function() {\n\t\t\tvar scrollV, scrollH;\n\n\t\t\tW.unbind('resize.overlay');\n\n\t\t\tif (this.el.hasClass('fancybox-lock')) {\n\t\t\t\t$('.fancybox-margin').removeClass('fancybox-margin');\n\n\t\t\t\tscrollV = W.scrollTop();\n\t\t\t\tscrollH = W.scrollLeft();\n\n\t\t\t\tthis.el.removeClass('fancybox-lock');\n\n\t\t\t\tW.scrollTop( scrollV ).scrollLeft( scrollH );\n\t\t\t}\n\n\t\t\t$('.fancybox-overlay').remove().hide();\n\n\t\t\t$.extend(this, {\n\t\t\t\toverlay : null,\n\t\t\t\tfixed   : false\n\t\t\t});\n\t\t},\n\n\t\t\/\/ Private, callbacks\n\n\t\tupdate : function () {\n\t\t\tvar width = '100%', offsetWidth;\n\n\t\t\t\/\/ Reset width\/height so it will not mess\n\t\t\tthis.overlay.width(width).height('100%');\n\n\t\t\t\/\/ jQuery does not return reliable result for IE\n\t\t\tif (IE) {\n\t\t\t\toffsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);\n\n\t\t\t\tif (D.width() \u003e offsetWidth) {\n\t\t\t\t\twidth = D.width();\n\t\t\t\t}\n\n\t\t\t} else if (D.width() \u003e W.width()) {\n\t\t\t\twidth = D.width();\n\t\t\t}\n\n\t\t\tthis.overlay.width(width).height(D.height());\n\t\t},\n\n\t\t\/\/ This is where we can manipulate DOM, because later it would cause iframes to reload\n\t\tonReady : function (opts, obj) {\n\t\t\tvar overlay = this.overlay;\n\n\t\t\t$('.fancybox-overlay').stop(true, true);\n\n\t\t\tif (!overlay) {\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (opts.locked \u0026\u0026 this.fixed \u0026\u0026 obj.fixed) {\n\t\t\t\tif (!overlay) {\n\t\t\t\t\tthis.margin = D.height() \u003e W.height() ? $('html').css('margin-right').replace(\"px\", \"\") : false;\n\t\t\t\t}\n\n\t\t\t\tobj.locked = this.overlay.append( obj.wrap );\n\t\t\t\tobj.fixed  = false;\n\t\t\t}\n\n\t\t\tif (opts.showEarly === true) {\n\t\t\t\tthis.beforeShow.apply(this, arguments);\n\t\t\t}\n\t\t},\n\n\t\tbeforeShow : function(opts, obj) {\n\t\t\tvar scrollV, scrollH;\n\n\t\t\tif (obj.locked) {\n\t\t\t\tif (this.margin !== false) {\n\t\t\t\t\t$('*').filter(function(){\n\t\t\t\t\t\treturn ($(this).css('position') === 'fixed' \u0026\u0026 !$(this).hasClass(\"fancybox-overlay\") \u0026\u0026 !$(this).hasClass(\"fancybox-wrap\") );\n\t\t\t\t\t}).addClass('fancybox-margin');\n\n\t\t\t\t\tthis.el.addClass('fancybox-margin');\n\t\t\t\t}\n\n\t\t\t\tscrollV = W.scrollTop();\n\t\t\t\tscrollH = W.scrollLeft();\n\n\t\t\t\tthis.el.addClass('fancybox-lock');\n\n\t\t\t\tW.scrollTop( scrollV ).scrollLeft( scrollH );\n\t\t\t}\n\n\t\t\tthis.open(opts);\n\t\t},\n\n\t\tonUpdate : function() {\n\t\t\tif (!this.fixed) {\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t},\n\n\t\tafterClose: function (opts) {\n\t\t\t\/\/ Remove overlay if exists and fancyBox is not opening\n\t\t\t\/\/ (e.g., it is not being open using afterClose callback)\n\t\t\t\/\/if (this.overlay \u0026\u0026 !F.isActive) {\n\t\t\tif (this.overlay \u0026\u0026 !F.coming) {\n\t\t\t\tthis.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));\n\t\t\t}\n\t\t}\n\t};\n\n\t\/*\n\t *\tTitle helper\n\t *\/\n\n\tF.helpers.title = {\n\t\tdefaults : {\n\t\t\ttype     : 'float', \/\/ 'float', 'inside', 'outside' or 'over',\n\t\t\tposition : 'bottom' \/\/ 'top' or 'bottom'\n\t\t},\n\n\t\tbeforeShow: function (opts) {\n\t\t\tvar current = F.current,\n\t\t\t\ttext    = current.title,\n\t\t\t\ttype    = opts.type,\n\t\t\t\ttitle,\n\t\t\t\ttarget;\n\n\t\t\tif ($.isFunction(text)) {\n\t\t\t\ttext = text.call(current.element, current);\n\t\t\t}\n\n\t\t\tif (!isString(text) || $.trim(text) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttitle = $('\u003cdiv class=\"fancybox-title fancybox-title-' + type + '-wrap\"\u003e' + text + '\u003c\/div\u003e');\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inside':\n\t\t\t\t\ttarget = F.skin;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'outside':\n\t\t\t\t\ttarget = F.wrap;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'over':\n\t\t\t\t\ttarget = F.inner;\n\t\t\t\tbreak;\n\n\t\t\t\tdefault: \/\/ 'float'\n\t\t\t\t\ttarget = F.skin;\n\n\t\t\t\t\ttitle.appendTo('body');\n\n\t\t\t\t\tif (IE) {\n\t\t\t\t\t\ttitle.width( title.width() );\n\t\t\t\t\t}\n\n\t\t\t\t\ttitle.wrapInner('\u003cspan class=\"child\"\u003e\u003c\/span\u003e');\n\n\t\t\t\t\t\/\/Increase bottom margin so this title will also fit into viewport\n\t\t\t\t\tF.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttitle[ (opts.position === 'top' ? 'prependTo'  : 'appendTo') ](target);\n\t\t}\n\t};\n\n\t\/\/ jQuery plugin initialization\n\t$.fn.fancybox = function (options) {\n\t\tvar index,\n\t\t\tthat     = $(this),\n\t\t\tselector = this.selector || '',\n\t\t\trun      = function(e) {\n\t\t\t\tvar what = $(this).blur(), idx = index, relType, relVal;\n\n\t\t\t\tif (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) \u0026\u0026 !what.is('.fancybox-wrap')) {\n\t\t\t\t\trelType = options.groupAttr || 'data-fancybox-group';\n\t\t\t\t\trelVal  = what.attr(relType);\n\n\t\t\t\t\tif (!relVal) {\n\t\t\t\t\t\trelType = 'rel';\n\t\t\t\t\t\trelVal  = what.get(0)[ relType ];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (relVal \u0026\u0026 relVal !== '' \u0026\u0026 relVal !== 'nofollow') {\n\t\t\t\t\t\twhat = selector.length ? $(selector) : that;\n\t\t\t\t\t\twhat = what.filter('[' + relType + '=\"' + relVal + '\"]');\n\t\t\t\t\t\tidx  = what.index(this);\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.index = idx;\n\n\t\t\t\t\t\/\/ Stop an event from bubbling if everything is fine\n\t\t\t\t\tif (F.open(what, options) !== false) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\toptions = options || {};\n\t\tindex   = options.index || 0;\n\n\t\tif (!selector || options.live === false) {\n\t\t\tthat.unbind('click.fb-start').bind('click.fb-start', run);\n\n\t\t} else {\n\t\t\tD.undelegate(selector, 'click.fb-start').delegate(selector + \":not('.fancybox-item, .fancybox-nav')\", 'click.fb-start', run);\n\t\t}\n\n\t\tthis.filter('[data-fancybox-start=1]').trigger('click');\n\n\t\treturn this;\n\t};\n\n\t\/\/ Tests that need a body at doc ready\n\tD.ready(function() {\n\t\tvar w1, w2;\n\n\t\tif ( $.scrollbarWidth === undefined ) {\n\t\t\t\/\/ http:\/\/benalman.com\/projects\/jquery-misc-plugins\/#scrollbarwidth\n\t\t\t$.scrollbarWidth = function() {\n\t\t\t\tvar parent = $('\u003cdiv style=\"width:50px;height:50px;overflow:auto\"\u003e\u003cdiv\/\u003e\u003c\/div\u003e').appendTo('body'),\n\t\t\t\t\tchild  = parent.children(),\n\t\t\t\t\twidth  = child.innerWidth() - child.height( 99 ).innerWidth();\n\n\t\t\t\tparent.remove();\n\n\t\t\t\treturn width;\n\t\t\t};\n\t\t}\n\n\t\tif ( $.support.fixedPosition === undefined ) {\n\t\t\t$.support.fixedPosition = (function() {\n\t\t\t\tvar elem  = $('\u003cdiv style=\"position:fixed;top:20px;\"\u003e\u003c\/div\u003e').appendTo('body'),\n\t\t\t\t\tfixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );\n\n\t\t\t\telem.remove();\n\n\t\t\t\treturn fixed;\n\t\t\t}());\n\t\t}\n\n\t\t$.extend(F.defaults, {\n\t\t\tscrollbarWidth : $.scrollbarWidth(),\n\t\t\tfixed  : $.support.fixedPosition,\n\t\t\tparent : $('body')\n\t\t});\n\n\t\t\/\/Get real width of page scroll-bar\n\t\tw1 = $(window).width();\n\n\t\tH.addClass('fancybox-lock-test');\n\n\t\tw2 = $(window).width();\n\n\t\tH.removeClass('fancybox-lock-test');\n\n\t\t$(\"\u003cstyle type='text\/css'\u003e.fancybox-margin{margin-right:\" + (w2 - w1) + \"px;}\u003c\/style\u003e\").appendTo(\"head\");\n\t});\n\n}(window, document, jQuery));\u003c\/script\u003e\n\t\t\n\t\t\u003cscript type=\"text\/javascript\"\u003e\n\t\t\t\n\t\t\tfunction cambia_imagen(el){\n\t\t\n\t\t\t\t\/\/ $(\".galeria\").css('border','');\n\t\t\t\t$(\".galeria\").removeClass('cuadro');\n\t\t\t\t\n\t\t\t\tif(el.dataset){\n\t\t\n\t\t\t\t\t$(\"#zoom_img\").prop('src',el.dataset.image);\n\t\t\t\t\tdocument.querySelector(\"#zoom_img\").dataset.zoomImage = el.dataset.zoomImage;\n\t\t\t\t\t\/\/ el.children[0].style.border=\"1px solid #a7a4a4\";\n\t\t\n\t\t\t\t\tel.children[0].classList.add('cuadro')\n\t\t\t\t\t\n\t\t\n\t\t\t\t}\t\t\n\t\t\t}\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t$(document).ready(function() {\n\t\t\n\t\t\t\t$('#zoom_img').elevateZoom({\n\t\t\n\t\t\t\t\t\tgallery:'galerias', \n\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\tgalleryActiveClass:'active',\n\t\t\t\t\t\timageCrossfade: false,\n\t\t\t\t\t\tzoomWindowHeight:document.getElementById('producto_container').clientHeight-15,\n\t\t\t\t\t\tzoomWindowWidth:680,\n\t\t\t\t\t\tborderSize:0,\n\t\t\t\t\t\teasing:true\n\t\t\t\t});\t\t\n\t\t\t\t\n\t\t\t\t$(\"#zoom_img\").bind(\"click\", function(e) { \n\t\t\t\t\tvar ez = $('#zoom_img').data('elevateZoom');\t\n\t\t\t\t\n\t\t\t\t\t$.fancybox(ez.getGalleryList()); \n\t\t\t\t\treturn false; \n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('.fancybox-media').fancybox({\n\t\t\t\t\topenEffect  : 'none',\n\t\t\t\t\tcloseEffect : 'none',\n\t\t\t\t\thelpers : {\n\t\t\t\t\t\tmedia : {}\n\t\t\t\t\t}\n\t\t\t\t});\t\t\t\t\n\t\t\t\t\n\t\t\t});\n\t\t\n\t\n\t\t\u003c\/script\u003e\t\n\t\n\t\n\n\n\u003cstyle\u003e\n.info-text{\n\tfont-family: 'Open Sans', sans-serif;\n    font-size: 15px;\n    text-align: center;\n    font-weight: bolder;\n}\n\nbody{\n\tmargin-bottom: 0px;\n}\n\n.icono_info_product{\n\tmax-width: 60px;\n    max-height: 60px;\n    margin:  15px 15px 10px 0px;\n}\n\n\n.imagenes_galeria{\n  border: 1px solid #e5e5e5;\n  height: 45px;\n  margin-bottom: 8px;\t\n}\n\n.cuadro{\n\tborder: 1px solid #a7a4a4;\n}\n\n.zoomWindowContainer div{\n\tborder: 1px solid #a7a4a4 !important;\t \n}\n\u003c\/style\u003e\n\n\n\n\n\n\u003cdiv class=\"container\"\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-md-12\"\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003c!-- Inicia información de producto --\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003cdiv class=\"row\"\u003e\n\t\t\u003cdiv class=\"row\"\u003e\n\t\t\t\u003cdiv class=\"col-md-12\"\u003e\n\t\t\t\t\u003ch4 class=\"text-primary center info-text\"\u003eInformación de Producto\u003c\/h4\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\u003c\/div\u003e\n\t\t\u003cdiv class=\"row\" style=\"margin-bottom: 25px;\"\u003e\n\t\t\t\u003cdiv class=\"col-md-12\"\u003e\n\t\t\t\t\u003ch3\u003eNet.Cover Preferred - 1 año para AT-x530L-28GTX\u003c\/h3\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\u003c\/div\u003e\n\t\t\n\t\t\u003cdiv id=\"producto_container\" class=\"row\"\u003e\n\t\t\t\u003cdiv class=\"col-md-4\"\u003e\n\t\t\t\t\t\t\t\t\u003cimg class=\"img-responsive center-block\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/BancoFotografiasSyscom\/ALLIEDTELESIS\/ATX530L28GTXNCP1\/ATX530L28GTXNCP1-p.PNG\" alt=\"AT-X530L-28GTX-NCP1\"\u003e\n\t\t\t\t\t\t\t\t\u003cdiv class=\"row\" style=\"margin:15px 0px;\"\u003e\n\t\t\t\t\t\u003cdiv id=\"galerias\" class=\"col-sm-12\"\u003e\n\n\t\t\t\t\t\t\u003c!-- \t\t\t\t\t\t\u003cimg class=\"imagenes_galeria\" alt=\"Imagen 0\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/BancoFotografiasSyscom\/EPCOM\/LB7TURBOKIT4\/LB7TURBOKIT4-i.PNG\" onclick=\"cambia_imagen(this)\"\u003e\n\t\t\t\t\t\t\u003cimg class=\"imagenes_galeria\" alt=\"Imagen 0\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/BancoFotografiasSyscom\/EPCOM\/LB7TURBOKIT4\/LB7TURBOKIT4-FRENTE-i.PNG\" onclick=\"cambia_imagen(this)\"\u003e --\u003e\n\t\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\t\t\t\t\n\t\t\t\u003c\/div\u003e\n\t\t\t\u003cdiv class=\"col-md-4\"\u003e\n\t\t\t\t\n\t\t\t\t\u003cdiv\u003e\n\t\t\t\t\t\u003cimg class=\"img-responsive img-thumbnail\" style=\"max-width: 170px; max-height: 120px;\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/logotipos\/allied_telesis.png\"\u003e\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003cdiv\u003e\n\t\t\t\t\t \t\n\t\t\t\t\u003c\/div\u003e\t\n\t\t\t\t\n\t\t\t\t\u003cdiv\u003e\n\t\t\t\t\t\u003cp\u003eModelo: \u003cspan class=\"modelo-marca\"\u003eAT-X530L-28GTX-NCP1\u003c\/span\u003e\u003c\/p\u003e\n\t\t\t\t\t\u003cp\u003eMarca: \u003cspan class=\"modelo-marca\"\u003eALLIED TELESIS\u003c\/span\u003e\u003c\/p\u003e\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003cdiv\u003e\n\n\t\t\t\t\t\t\n                   \t\u003cp\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\t \u003ch2 class=\"no_margin_top\"\u003e\u003c\/h2\u003e\n\t\t\t\t\t\t\n                   \t\u003cp\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\t \u003ch2 class=\"no_margin_top\"\u003e\u003c\/h2\u003e\n\n                    \n\n\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003cp\u003e\u003c\/p\u003e\n\t\t\t\t\u003cp\u003e\u003c\/p\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\t\u003cdiv class=\"col-md-4\"\u003e\n\t\t\t\t\u003cdiv class=\"row\"\u003e\n\t\t\t\t\t\u003cdiv class=\"col-md-12 default_padding_bottom\"\u003e\n\t\t\t\t\t\t\u003cimg src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/LOG_SYS\/83bf15d853542f15c8b176c6c7e027cb\/logo_83bf15d853542f15c8b176c6c7e027cb.png?v=1603314848\" style=\"max-height: 150px;margin: 10px 0px 0px 40px;\"\u003e\t\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\u003c\/div\u003e\n\t\u003c\/div\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003c!-- Termina información de producto --\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\n\n\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003c!-- Inicia especificaciones de producto --\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003cdiv class=\"row \"\u003e\n\t\t\u003cdiv class=\"col-md-12\"\u003e\n\t\t\t\u003cdiv class=\"row\"\u003e\n\t\t\t\t\u003ch3 class=\"text-primary\" style=\"font-family: 'Open Sans',sans-serif;\"\u003eEspecificaciones:\u003c\/h3\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\t\u003cdiv class=\"row well\"\u003e \u003c!-- Contenedor de specs --\u003e\n\n\t\t\t\t\t\u003ch1\u003e\n\u003cstrong\u003eNet\u003c\/strong\u003e.Cover\u003c\/h1\u003e\n\u003ch2\u003e\u003cstrong\u003eProgramas de soporte\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cp\u003eAllied Telesis Net.Cover® programas de soporte, están diseñados para proporcionar una cobertura completa y dedicada para su red. Brindar los más altos niveles de soporte técnico, medidas superiores de mitigación de riesgos y servicios proactivos, para garantizar alta disponibilidad, continuidad comercial y tranquilidad. Entre los servicios disponibles con nuestros programas de soporte Net.Cover se encuentran el soporte técnico telefónico de varios niveles, las colas de prioridad y el reemplazo avanzado de productos; asegurando el máximo tiempo de actividad y facilitando la resolución de problemas de hardware y software de red vitales.\u003c\/p\u003e\n\u003cp\u003eDisponible por períodos de uno, tres y cinco años, Net.Cover ofrece opciones de soporte para los clientes que deseen mejorar las características ofrecidas por la garantía estándar solamente, para proteger aún más su red y simplificar su presupuesto de mantenimiento con una tarifa única.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/ftp3.syscom.mx\/usuarios\/raragon\/Allied_Telesis\/NetCover\/NetCover_Caracteristicas.png\" alt=\"\" width=\"1049\" height=\"459\"\u003e\u003c\/p\u003e\n\u003cp\u003eLos programas de soporte Net.Cover Premium, Advanced y Elite están disponibles en los productos actuales de Allied Telesis. Para los clientes que buscan protección continua en productos de fin de venta, Net.Cover TAC ofrece acceso a actualizaciones de software y mejoras, junto con acceso a nuestro Centro de asistencia técnica (TAC). Para comprobar si Net.Cover TAC está disponible para su producto y obtener una cotización, comuníquese con su representante local de Allied Telesis.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eLos programas de Net.Cover ofrecen:\u003c\/h2\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eServicios en linea:\u003c\/strong\u003e\n\u003cp\u003eAllied Telesis ofrece un servicio de soporte en línea basado en la web, disponible las 24 horas del día, los siete días de la semana. Con su cuenta personalizada, puede generar y realizar un seguimiento del estado de sus incidentes de soporte técnico.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eBase de conocimientos:\u003c\/strong\u003e\n\u003cp\u003eLos clientes de Net.Cover se registrarán en el portal de soporte de Allied Telesis con acceso inmediato a la base de conocimientos.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eActualizaciones de software:\u003c\/strong\u003e\n\u003cp\u003eEl soporte de software de Allied Telesis brinda acceso en línea a actualizaciones de software, actualizaciones y corrección de errores para todos los productos cubiertos. Estas actualizaciones ofrecen funciones y mejoras oportunas en respuesta a los cambios constantes que experimentan nuestros clientes en sus entornos de red.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eAcceso al software 24 x 7\u003c\/li\u003e\n\u003cli\u003eActualizaciones y mejoras de software\u003c\/li\u003e\n\u003cli\u003eNotas de la versión y documentación\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eSoporte de hardware:\u003c\/strong\u003e\n\u003cp\u003eProporcionar solución de problemas de hardware y diagnóstico de fallas. El soporte de hardware de Allied Telesis cubrirá el costo de las reparaciones en caso de falla del hardware, evitando gastos imprevistos. La opción de reemplazo avanzado de hardware garantiza un mínimo de tiempo de inactividad de la red para aplicaciones de misión crítica. Los clientes sin un plan de mantenimiento Net.Cover válido recibirán instrucciones para la resolución de problemas básicos de hardware, mientras los clientes de Net.Cover serán guiados a través del procedimiento de análisis de fallas para un diagnóstico y resolución rápidos.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eReparación y devolución de hardware\u003c\/li\u003e\n\u003cli\u003eEnvío al siguiente día hábil para Reemplazo avanzado de hardware (Programas Advanced y Elite)\u003c\/li\u003e\n\u003cli\u003eDiagnóstico de fallas de hardware\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eCola de prioridad:\u003c\/strong\u003e\n\u003cp\u003eLas solicitudes de los clientes de Net.Cover se priorizarán de acuerdo con el plan suscrito y se les otorgará acceso a través de números de teléfono locales gratuitos de llamada en vivo.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eSoporte telefónico:\u003c\/strong\u003e\n\u003cp\u003eLa suscripción a un plan Net.Cover le dará derecho a recibir soporte en vivo del servicio de asistencia técnica de Allied Telesis, que lo guiará paso a paso para identificar y resolver problemas relacionados con la red. El servicio de asistencia técnica de Allied Telesis está compuesto por ingenieros con experiencia, tanto en los productos de Allied Telesis como en una amplia gama de tecnologías de redes. Consulte nuestro sitio web para obtener la lista actualizada de números de teléfono de su país.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eEvaluación de la configuración:\u003c\/strong\u003e\n\u003cp\u003eEsta función proporciona a un ingeniero de Allied Telesis para evaluar sus archivos de configuración básicos de hardware y software. Si se requieren servicios adicionales, la organización de Servicios Profesionales de Allied Telesis está disponible para brindar servicios completos de ingeniería, incluida la consulta de diseño, implementación, documentación y análisis de redes remotas y en el sitio resolución de problemas, que se facturan por separado. Para obtener detalles y precios de las ofertas de servicios profesionales de Allied Telesis, comuníquese con su representante de ventas.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #0091ff; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #d8d8d8; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cstrong\u003eSoporte de cuenta directo:\u003c\/strong\u003e\n\u003cp\u003eLos clientes de élite tienen contacto directo con los gerentes de cuentas y especialistas de Allied Telesis, quienes ayudan en la selección de las soluciones y tecnologías más adecuadas y brindan apoyo para la resolución rápida de problemas.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\t\t\t\t\t\u003c!-- \u003ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/-r-N7C-5xQc\" width=\"560\"\u003e\u003c\/iframe\u003e\u003ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/GkYn2qjXos8\" width=\"560\"\u003e\u003c\/iframe\u003e --\u003e\n\n\n\n\t\t\t\u003c\/div\u003e\n\n\t\t\u003c\/div\u003e\n\t\u003c\/div\u003e\n\n\n\n\n\u003c\/div\u003e \u003c!-- .\/ col-md-12 --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\n\t\n\t\n\u003cscript\u003edocument.cookie = \"nav_id_2=;path=\/;\";document.cookie = \"nav_id_3=;path=\/;\";\u003c\/script\u003e        \n    \u003cscript\u003e\n  var idioma_global =\"es\";\n\u003c\/script\u003e\n\n\u003cscript type=\"text\/javascript\"\u003ewindow.NREUM||(NREUM={});NREUM.info={\"beacon\":\"bam.nr-data.net\",\"licenseKey\":\"NRJS-624cf1b7bf4add3973c\",\"applicationID\":\"783538228\",\"transactionName\":\"Z1QENxRYXUZTVkxcXF4eMxEPFlpbVlBAG0NYQQ==\",\"queueTime\":0,\"applicationTime\":35,\"atts\":\"SxMHQVxCTkg=\",\"errorBeacon\":\"bam.nr-data.net\",\"agent\":\"\"}\u003c\/script\u003e\n\u003c\/body\u003e","brand":"ALLIED TELESIS","offers":[{"title":"AT-X530L-28GTX-NCP1 \/ 43222609","offer_id":47564434604311,"sku":"210366","price":5343.75,"currency_code":"MXN","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0832\/7698\/8695\/products\/ATX530L28GTXNCP1-p.png?v=1699526996","url":"https:\/\/controldeaccesos.com.mx\/products\/210366","provider":"controldeaccesos.com.mx","version":"1.0","type":"link"}