{"product_id":"214989","title":"NVR de 16 canales \/ 32MP \/ Hasta 4 Discos Duros \/ Switch PoE+ 16 puertos \/ Wisenet P2P \/ H.265 \u0026 WiseStream \/ incluye 24TB de almacenamiento","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=1108\"\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\u003eNVR de 16 canales \/ 32MP \/ Hasta 4 Discos Duros \/ Switch PoE+ 16 puertos \/ Wisenet P2P \/ H.265 \u0026amp; WiseStream \/ incluye 24TB de almacenamiento\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\/HANWHATECHWINWISENET\/XRN1620SB124TB\/XRN1620SB124TB-p.PNG\" alt=\"XRN-1620SB1-24TB\"\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\/hanwha_techwin_wisenet.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\"\u003eXRN-1620SB1-24TB\u003c\/span\u003e\u003c\/p\u003e\n\t\t\t\t\t\u003cp\u003eMarca: \u003cspan class=\"modelo-marca\"\u003eHanwha Techwin Wisenet\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\u003cp style=\"text-align: center;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003e\u003cimg class=\"fr-fic fr-dii\" style=\"width: 560px;\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/gmagos\/Hanwha\/fotos\/Wisenet%20NVR.png\" alt=\"\"\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003cdiv style=\"box-sizing: border-box;\"\u003e\n\u003cp style=\"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: center;\"\u003e \u003c\/p\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-sm-6\"\u003e\n\u003cdiv class=\"embed-responsive embed-responsive-16by9\"\u003e\u003cspan class=\"fr-video fr-fvc fr-dvi fr-draggable\" contenteditable=\"false\"\u003e\u003ciframe class=\"fr-draggable\" src=\"https:\/\/www.youtube.com\/embed\/t8QDgKTtxtQ\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"\u003e\u003c\/iframe\u003e\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col-sm-6\"\u003e\n\u003ch2\u003eWisenet \u003cspan style=\"color: #f37934;\"\u003eP2P\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp style=\"text-align: justify;\"\u003e\u003cspan style=\"font-family: Arial, Helvetica, sans-serif; font-size: 14px;\"\u003eMediante el servicio de Wisenet P2P, agregue sus dispositivos a su app móvil en menos de 2 minutos: \u003c\/span\u003e\u003c\/p\u003e\n\u003col\u003e\n\u003cli style=\"text-align: justify;\"\u003e\u003cspan style=\"font-family: Arial, Helvetica, sans-serif; font-size: 14px;\"\u003eAbra la aplicación \u003cstrong\u003eWisenet Mobile\u003c\/strong\u003e.\u003c\/span\u003e\u003c\/li\u003e\n\u003cli style=\"text-align: justify;\"\u003e\u003cspan style=\"font-family: Arial, Helvetica, sans-serif; font-size: 14px;\"\u003eEscanee el código QR que viene en la etiqueta del NVR.\u003c\/span\u003e\u003c\/li\u003e\n\u003cli style=\"text-align: justify;\"\u003e\u003cspan style=\"font-family: Arial, Helvetica, sans-serif; font-size: 14px;\"\u003eIngrese Usuario y Contraseña del NVR. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli style=\"text-align: justify;\"\u003e\u003cspan style=\"font-family: Arial, Helvetica, sans-serif; font-size: 14px;\"\u003eVisualice sus equipos de manera remota.\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3 style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: #333333; margin: 0px 0px 8px; font-size: 24px; caret-color: #333333; padding: 0px 0px 0px 18px; background-image: url('https:\/\/www.syscom.mx\/producto\/;');\"\u003e\u003cstrong style=\"box-sizing: border-box; font-size: 16px; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; text-align: justify;\"\u003eNOTA: \u003cspan style=\"box-sizing: border-box; color: #202124; font-family: Roboto, sans-serif; font-size: 14px; orphans: 2; white-space: pre-wrap; widows: 2; background-color: #f8f9fa;\"\u003e(El P2P es unicamente compatible con dispositivos moviles a través de la aplicacion Wisenet mobile, no es compatible con Smart Viewer, SSM o Wisenet Wave).\u003c\/span\u003e\u003c\/strong\u003e\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp style=\"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px;\"\u003e \u003c\/p\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-sm-6\"\u003e\n\u003ch2\u003eAuto Recovery \u003cspan style=\"color: #f37934;\"\u003eBackup\u003c\/span\u003e (ARB)\u003c\/h2\u003e\n\u003cp style=\"text-align: justify;\"\u003e\u003cspan style=\"font-size: 14px; font-family: Arial, Helvetica, sans-serif;\"\u003eRecupere la grabación perdida cuando una o varias cámaras IP se desconecten de su grabador. \u003c\/span\u003e\u003c\/p\u003e\n\u003cp style=\"text-align: justify;\"\u003e\u003cspan style=\"font-size: 14px; font-family: Arial, Helvetica, sans-serif;\"\u003eCuando se detecte el corte de comunicación entre cámara IP - NVR, la cámara empezará a grabar por su tarjeta SD. Cuando regrese la comunicación con el NVR, la cámara enviará toda la grabación que hubo en el periodo de tiempo donde se perdió la conexión. Las cámaras compatibles con esta función son todas las de la serie Q, X y P.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\"\u003eCámaras compatibles en stock con ARB aquí.\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"divImg-1559069067140\" class=\"col-sm-6 box-tamanio\"\u003e\n\u003cimg id=\"1559069067140\" class=\"img-responsive fr-fil fr-dib\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/XRN3010A\/169720-arb.png\"\u003e\u003c!--7--\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-sm-6\"\u003e\n\u003cdiv class=\"embed-responsive embed-responsive-16by9\"\u003e\u003cspan class=\"fr-video fr-fvc fr-dvi fr-draggable\" contenteditable=\"false\"\u003e\u003ciframe class=\"fr-draggable\" src=\"https:\/\/www.youtube.com\/embed\/Q7b6HLJjREk\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"\u003e\u003c\/iframe\u003e\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col-sm-6\"\u003e\n\u003ch2\u003eControlador \u003cspan style=\"color: #f37934;\"\u003eSPC-2000\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp style=\"text-align: justify;\"\u003e\u003cspan style=\"font-family: Arial, Helvetica, sans-serif; font-size: 14px;\"\u003eUtilice el controlador SPC-2000 para controlar su NVR. La conexión del accesorio es\u003cstrong\u003e Plug \u0026amp; Play\u003c\/strong\u003e, solamente conecte por USB su joystick y comience a controlar su grabador, no es necesario alguna configuración adicional. Puede mandar llamar distintas cuadrículas, ingresar al menú del grabador, ver grabación de video, etc. \u003c\/span\u003e\u003c\/p\u003e\n\u003cp style=\"text-align: justify;\"\u003e\u003cspan style=\"font-size: 14px;\"\u003e\u003cspan style=\"font-family: Arial,Helvetica,sans-serif;\"\u003eAdicional, puede controlar el movimiento de sus PTZ's agregadas al grabador así como sus Presets \/ Patrols \/ Patterns.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp style=\"text-align: justify;\"\u003e\u003cspan style=\"font-size: 11px;\"\u003e\u003cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003e(Revise el video para mayor información).\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp style=\"text-align: justify;\"\u003e \u003c\/p\u003e\n\u003cp style=\"text-align: justify;\"\u003e \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp style=\"text-align: center;\"\u003e \u003c\/p\u003e\n\u003cp style=\"text-align: center;\"\u003e\u003cspan style=\"font-size: 24px;\"\u003eEspecificaciones técnicas\u003c\/span\u003e\u003c\/p\u003e\n\u003cdiv style=\"box-sizing: border-box; text-align: center;\"\u003e \n\u003cdiv class=\"row\" style=\"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px;\"\u003e\n\u003cdiv class=\"col-sm-4\"\u003e\n\u003cdiv style=\"border-left: 5px solid #f37324; border-radius: 5px; padding: 5px; box-shadow: #d8d8d8 2px 2px 10px; text-align: left;\"\u003e\n\u003cstrong\u003e\u003cspan style=\"font-family: Arial,Helvetica,sans-serif;\"\u003eCaracterísticas generales:\u003c\/span\u003e\u003c\/strong\u003e\n\u003cul\u003e\n\u003cli\u003eSoporta 16 cámaras de hasta máximo \u003cstrong\u003e32 MP.\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSwitch PoE+ Interconstruido \u003c\/strong\u003ede 16 puertos.\u003c\/li\u003e\n\u003cli\u003eCompresión de video: \u003cstrong\u003eH.265 \u0026amp; WiseStream\u003c\/strong\u003e, H264, MJPEG.\u003c!--7--\u003e\n\u003c\/li\u003e\n\u003cli\u003eSoporta mouse USB para operar (incluido).\u003c\/li\u003e\n\u003cli\u003eSoporta 4 HDD de hasta 6TB, \u003cstrong\u003eIncluye 24TB de almacenamiento.\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eSoporta Hanwha security DDNS.\u003c\/li\u003e\n\u003cli\u003eSoporta conexión por código QR, \u003cstrong\u003eWisenet P2P\u003c\/strong\u003e.\u003c\/li\u003e\n\u003cli\u003eAcceso por dispositivo móvil: Android, iOS.\u003c\/li\u003e\n\u003cli\u003eProtocolos: Samsung, \u003cstrong\u003eONVIF Perfil G y S\u003c\/strong\u003e.\u003c!--7--\u003e\n\u003c\/li\u003e\n\u003cli\u003eCompatible con Camaras Wisenet de inteligencia artificial\u003c\/li\u003e\n\u003cli\u003eCompatible con gabinete metálico GAB-VID2-R2.\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 #f37324; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #f37324; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cp style=\"text-align: left;\"\u003e\u003cspan style=\"font-family: Arial,Helvetica,sans-serif;\"\u003e\u003cstrong\u003eCaracterísticas de red:\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli style=\"text-align: left;\"\u003eThroughput de grabación: 140 Mbps.\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eThroughput de salida: 140 Mbps. \u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eUsuarios remotos: Hasta 3. \u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003e2 Puertos de red.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp style=\"text-align: left;\"\u003e\u003cspan style=\"font-family: Arial,Helvetica,sans-serif;\"\u003e\u003cstrong\u003eInterfaces:\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli style=\"text-align: left;\"\u003e\n\u003cstrong\u003eSalida HDMI en 4K\u003c\/strong\u003e.\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eSalida VGA.\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eAlarma: 4 Entradas \/ 2 Salidas.\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eUSB: 2 Puertos.\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 #f37324; border-radius: 5px; padding: 5px; box-shadow: 2px 2px 10px #f37324; -webkit-box-shadow: 2px 2px 10px #d8d8d8;\"\u003e\n\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003e\u003cspan style=\"font-family: Arial,Helvetica,sans-serif;\"\u003e\u003cstrong\u003eCaracterísticas Físicas y Eléctricas:\u003c\/strong\u003e\u003c\/span\u003e \u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli style=\"text-align: left;\"\u003eTemperatura de Operación: 0 a 40°C.\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eAlimentación: 100 - 240 VCA \u003cspan style=\"box-sizing: border-box;\"\u003eMax. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eConsumo: Max. 310W (Con 4 HDD's y PoE+ encendido).\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eDimensiones: \u003cspan style=\"box-sizing: border-box;\"\u003eØ 440.0 x 89.8 x 428.4 mm.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003ePeso: 5.76 Kg.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003ePara más información sobre características técnicas, ingrese \u003ca href=\"https:\/\/www.hanwhasecurity.com\/media\/attachment\/file\/d\/a\/datasheet_xrn-1610sa_190219.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eaquí\u003c\/a\u003e\u003c\/strong\u003e\u003cstrong\u003e.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; box-sizing: border-box; text-align: center;\"\u003e \u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ca href=\"https:\/\/syscom.mx\/principal\/listadoproductosazul\/cctv-cuartos-de-control-pantallas---monitores-65971.html?ordenar=Precio_de_Menor_a_Mayor\u0026amp;marca=-hanwha%20techwin%20wisenet\u0026amp;pag=1\" target=\"_blank\" rel=\"noopener\"\u003e\u003cimg class=\"fr-fic fr-dii\" style=\"width: 560px;\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/gmagos\/Hanwha\/fotos\/Monitores%20247.png\" alt=\"\"\u003e\u003c\/a\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp style=\"box-sizing: border-box;\"\u003e\u003cstrong\u003e\u003cspan style=\"font-size: 18px;\"\u003e3 años de garantía.\u003c\/span\u003e\u003c\/strong\u003e\u003c\/p\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\":25,\"atts\":\"SxMHQVxCTkg=\",\"errorBeacon\":\"bam.nr-data.net\",\"agent\":\"\"}\u003c\/script\u003e\n\u003c\/body\u003e","brand":"Hanwha Techwin Wisenet","offers":[{"title":"XRN-1620SB1-24TB \/ 46171621","offer_id":47563441537303,"sku":"214989","price":86654.7,"currency_code":"MXN","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0832\/7698\/8695\/products\/XRN1620SB124TB-p.png?v=1699429630","url":"https:\/\/controldeaccesos.com.mx\/products\/214989","provider":"controldeaccesos.com.mx","version":"1.0","type":"link"}