"use strict"; !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3be83712-dfd6-512e-9fb9-bb13a403ed70")}catch(e){}}(); (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9364],{49364:(e,n,t)=>{t.r(n),t.d(n,{default:()=>g});var r=t(9479),o=t(72303),a=t(39385);function i(e,n,t,r){return new(t||(t=Promise))(function(o,a){function i(e){try{l(r.next(e))}catch(e){a(e)}}function c(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var n;e.done?o(e.value):((n=e.value)instanceof t?n:new t(function(e){e(n)})).then(i,c)}l((r=r.apply(e,n||[])).next())})}let c=["geforce 320m","geforce 8600","geforce 8600m gt","geforce 8800 gs","geforce 8800 gt","geforce 9400","geforce 9400m g","geforce 9400m","geforce 9600m gt","geforce 9600m","geforce fx go5200","geforce gt 120","geforce gt 130","geforce gt 330m","geforce gtx 285","google swiftshader","intel g41","intel g45","intel gma 4500mhd","intel gma x3100","intel hd 3000","intel q45","legacy","mali-2","mali-3","mali-4","quadro fx 1500","quadro fx 4","quadro fx 5","radeon hd 2400","radeon hd 2600","radeon hd 4670","radeon hd 4850","radeon hd 4870","radeon hd 5670","radeon hd 5750","radeon hd 6290","radeon hd 6300","radeon hd 6310","radeon hd 6320","radeon hd 6490m","radeon hd 6630m","radeon hd 6750m","radeon hd 6770m","radeon hd 6970m","sgx 543","sgx543"];function l(e){return e=e.toLowerCase().replace(/.*angle ?\((.+)\)(?: on vulkan [0-9.]+)?$/i,"$1").replace(/\s(\d{1,2}gb|direct3d.+$)|\(r\)| \([^)]+\)$/g,"").replace(/(?:vulkan|opengl) \d+\.\d+(?:\.\d+)?(?: \((.*)\))?/,"$1")}let v="undefined"==typeof window,d=(()=>{if(v)return;let{userAgent:e,platform:n,maxTouchPoints:t}=window.navigator,r=/(iphone|ipod|ipad)/i.test(e),o="iPad"===n||"MacIntel"===n&&t>0&&!window.MSStream;return{isIpad:o,isMobile:/android/i.test(e)||r||o,isSafari12:/Version\/12.+Safari/.test(e)}})();class s extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}}let u=[],f=[];function h(e){return null!=e}let p=({mobileTiers:e=[0,15,30,60],desktopTiers:n=[0,15,30,60],override:t={},glContext:r,failIfMajorPerformanceCaveat:o=!1,benchmarksURL:a="https://unpkg.com/detect-gpu@5.0.37/dist/benchmarks"}={})=>i(void 0,void 0,void 0,function*(){let p={};if(v)return{tier:0,type:"SSR"};let{isIpad:m=!!(null==d?void 0:d.isIpad),isMobile:g=!!(null==d?void 0:d.isMobile),screenSize:x=window.screen,loadBenchmarks:y=e=>i(void 0,void 0,void 0,function*(){let n=yield fetch(`${a}/${e}`).then(e=>e.json());if(4>parseInt(n.shift().split(".")[0],10))throw new s("Detect GPU benchmark data is out of date. Please update to version 4x");return n})}=t,{renderer:b}=t,w=(e,n,t,r,o)=>({device:o,fps:r,gpu:t,isMobile:g,tier:e,type:n}),A,C="";if(b)A=[b=l(b)];else{var S;let e=r||function(e,n=!1){let t={alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:n,powerPreference:"high-performance",stencil:!1};e&&delete t.powerPreference;let r=window.document.createElement("canvas"),o=r.getContext("webgl",t)||r.getContext("experimental-webgl",t);return null!=o?o:void 0}(null==d?void 0:d.isSafari12,o);if(!e)return w(0,"WEBGL_UNSUPPORTED");let n=e.getExtension("WEBGL_debug_renderer_info");if(n&&(b=e.getParameter(n.UNMASKED_RENDERER_WEBGL)),!b)return w(1,"FALLBACK");C=b,A="apple gpu"===(S=b=l(b))?function(e,n,t){let r;if(!t)return[n];let o=function(e){let n=e.createShader(35633),t=e.createShader(35632),r=e.createProgram();if(!(t&&n&&r))return;e.shaderSource(n,"\n precision highp float;\n attribute vec3 aPosition;\n varying float vvv;\n void main() {\n vvv = 0.31622776601683794;\n gl_Position = vec4(aPosition, 1.0);\n }\n "),e.shaderSource(t,"\n precision highp float;\n varying float vvv;\n void main() {\n vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * vvv;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n gl_FragColor = enc;\n }\n "),e.compileShader(n),e.compileShader(t),e.attachShader(r,n),e.attachShader(r,t),e.linkProgram(r),e.detachShader(r,n),e.detachShader(r,t),e.deleteShader(n),e.deleteShader(t),e.useProgram(r);let o=e.createBuffer();e.bindBuffer(34962,o),e.bufferData(34962,new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),35044);let a=e.getAttribLocation(r,"aPosition");e.vertexAttribPointer(a,3,5126,!1,0,0),e.enableVertexAttribArray(a),e.clearColor(1,1,1,1),e.clear(16384),e.viewport(0,0,1,1),e.drawArrays(4,0,3);let i=new Uint8Array(4);return e.readPixels(0,0,1,1,6408,5121,i),e.deleteProgram(r),e.deleteBuffer(o),i.join("")}(e),a="801621810",i="8016218135",c="80162181161",l=(null==d?void 0:d.isIpad)?[["a7",c,12],["a8",i,15],["a8x",i,15],["a9",i,15],["a9x",i,15],["a10",i,15],["a10x",i,15],["a12",a,15],["a12x",a,15],["a12z",a,15],["a14",a,15],["m1",a,15]]:[["a7",c,12],["a8",i,12],["a9",i,15],["a10",i,15],["a11",a,15],["a12",a,15],["a13",a,15],["a14",a,15]];return"80162181255"===o?r=l.filter(([,,e])=>e>=14):(r=l.filter(([,e])=>e===o)).length||(r=l),r.map(([e])=>`apple ${e} gpu`)}(e,S,g):[S]}let E=(yield Promise.all(A.map(function(e){var n;return i(this,void 0,void 0,function*(){let t;let r=(e=>{for(let n of g?["adreno","apple","mali-t","mali","nvidia","powervr","samsung"]:["intel","apple","amd","radeon","nvidia","geforce"])if(e.includes(n))return n})(e);if(!r)return;let o=`${g?"m":"d"}-${r}${m?"-ipad":""}.json`,a=p[o]=null!==(n=p[o])&&void 0!==n?n:y(o);try{t=yield a}catch(e){if(e instanceof s)throw e;return}let i=function(e){var n;let t=(e=e.replace(/\([^)]+\)/,"")).match(/\d+/)||e.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return null!==(n=null==t?void 0:t.join("").replace(/\W|amd/g,""))&&void 0!==n?n:""}(e),c=t.filter(([,e])=>e===i);c.length||(c=t.filter(([n])=>n.includes(e)));let l=c.length;if(0===l)return;let v=e.split(/[.,()\[\]/\s]/g).sort().filter((e,n,t)=>0===n||e!==t[n-1]).join(" "),d,[h,,,,b]=l>1?c.map(e=>[e,function(e,n){if(e===n)return 0;let t=e;e.length>n.length&&(e=n,n=t);let r=e.length,o=n.length;for(;r>0&&e.charCodeAt(~-r)===n.charCodeAt(~-o);)r--,o--;let a,i=0;for(;iv?l>v?v+1:l:l>c?c+1:l;return v}(v,e[2])]).sort(([,e],[,n])=>e-n)[0][0]:c[0],w=Number.MAX_VALUE,{devicePixelRatio:A}=window,C=x.width*A*x.height*A;for(let e of b){let[n,t]=e,r=Math.abs(C-n*t);re===t?n-r:e-t);if(!E.length){let e=c.find(e=>b.includes(e));return e?w(0,"BLOCKLISTED",e):w(1,"FALLBACK",`${b} (${C})`)}let[,z,P,_]=E[0];if(-1===z)return w(0,"BLOCKLISTED",P,z,_);let L=g?e:n,R=0;for(let e=0;e=L[e]&&(R=e);return w(R,"BENCHMARK",P,z,_)});var m=t(60892);function g(e){let{width:n,height:t,heroRef:i,...c}=e,l=o.useRef(!1),[v,d]=o.useState(!1),s=(0,m.j)(),u=o.useRef(null),f=(0,a.W)(i),h=o.useRef();return(o.useEffect(()=>{p().then(e=>{h.current=e})},[]),o.useEffect(()=>{var e;let r,o;if(!f||s)return;let a=u.current,c=i.current;if(!a||!c)return;a.width=n,a.height=t;let v=a.getContext("webgl2");if(!v)return;let p=0;function m(e,n){let t=null==v?void 0:v.createShader(n);return t?(null==v||v.shaderSource(t,e),null==v||v.compileShader(t),t):null}function g(e,n){return null==v?void 0:v.getUniformLocation(e,n)}let b=m(y,v.VERTEX_SHADER),w=m("#version 300 es\n\nprecision mediump float;\n\nout vec4 fragColor;\n\nuniform float time;\nuniform float width;\nuniform float height;\n\nfloat blendOverlay(float base, float blend) {\n return base<0.5?(2.0*base*blend):(1.0-2.0*(1.0-base)*(1.0-blend));\n}\n\nvec3 blendOverlay(vec3 base, vec3 blend) {\n return vec3(blendOverlay(base.r,blend.r),blendOverlay(base.g,blend.g),blendOverlay(base.b,blend.b));\n}\n\nvec3 blendOverlay(vec3 base, vec3 blend, float opacity) {\n return (blendOverlay(base, blend) * opacity + base * (1.0 - opacity));\n}\n\nvec3 brightnessContrast(vec3 value, float brightness, float contrast) {\n return (value - 0.5) * contrast + 0.5 + brightness;\n}\n\nfloat random(in vec2 st) {\n return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123);\n}\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n\nvec4 permute(vec4 x) { return mod289(((x * 34.0) + 1.0) * x); }\n\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec3 fade(vec3 t) { return t * t * t * (t * (t * 6.0 - 15.0) + 10.0); }\n\nfloat snoise(vec3 v){ \n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n// First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n// Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n // x0 = x0 - 0. + 0.0 * C \n vec3 x1 = x0 - i1 + 1.0 * C.xxx;\n vec3 x2 = x0 - i2 + 2.0 * C.xxx;\n vec3 x3 = x0 - 1. + 3.0 * C.xxx;\n\n// Permutations\n i = mod(i, 289.0 ); \n vec4 p = permute( permute( permute( \n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) \n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n// Gradients\n// ( N*N points uniformly over a square, mapped onto an octahedron.)\n float n_ = 1.0/7.0; // N=7\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z *ns.z); // mod(p,N*N)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n//Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n// Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), \n dot(p2,x2), dot(p3,x3) ) );\n}\n\n// https://iquilezles.org/www/articles/palettes/palettes.htm\nvec3 palette(in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d) {\n return a + b * cos(6.4 * (c * t + d));\n}\n\nvec3 compose(in float t, in vec2 uv, in float index) {\n float delta = 0.15;\n float offset = delta * index;\n\n vec3 color1 = vec3(0.45, 0.29, 0.45);\n vec3 color2 = vec3(0.5, 0.3, 0.1);\n vec3 color3 = vec3(1.0, 1.1, 1.1);\n vec3 color4 = vec3(0.38, 0.25, 1.1);\n\n return palette(\n snoise(vec3(uv.x, uv.y + sin(uv.x + offset * 1. + t) * 3., t) * 0.4) * 1.,\n color1,\n color2,\n color3,\n color4\n );\n}\n\nvoid main() {\n vec2 resolution = vec2(width, height);\n // vec2 vUv = gl_FragCoord.xy / resolution.xy;\n vec2 vUv = gl_FragCoord.xy / resolution.yx; \n vec2 uv = vUv * 1.1;\n float t = time * 0.32;\n\n float n =\n snoise(vec3(uv.x - t * 2., uv.y + sin(uv.x + 120.0 * 1. + t) * 3., t) *\n 0.4) *\n 1.;\n\n vec3 color = palette(n, vec3(0.5, 0.29, 0.45), vec3(0.5, 0.3, 0.1),\n vec3(1.0, 1.1, 1.1), vec3(0.35, 0.25, 1.1));\n\n vec2 st = gl_FragCoord.xy / resolution.xy;\n st.x *= resolution.y / resolution.y;\n float noise = random(st * 1.0);\n\n vec3 color1 = vec3(0.45, 0.29, 0.45);\n vec3 color2 = vec3(0.5, 0.3, 0.1);\n vec3 color3 = vec3(1.0, 1.1, 1.1);\n vec3 color4 = vec3(0.38, 0.25, 1.1);\n\n vec3[] x = vec3[] (\n compose(t, uv, 1.0),\n compose(t, uv, 2.0),\n compose(t, uv, 3.0),\n compose(t, uv, 4.0),\n compose(t, uv, 5.0),\n compose(t, uv, 6.0),\n compose(t, uv, 7.0),\n compose(t, uv, 8.0),\n compose(t, uv, 9.0),\n compose(t, uv, 10.0),\n compose(t, uv, 11.0),\n compose(t, uv, 12.0)\n );\n\n int k = int(vUv.x * 8.0);\n vec3 p = x[k];\n\n p = brightnessContrast(p, 0.0, 1.1);\n p = vec3(p.r * 0.3 + p.g * 0.59 + p.b * 0.11);\n \n fragColor = vec4(\n blendOverlay(\n p,\n vec3(noise), \n 0.2\n ), \n 1.0\n );\n\n // fragColor = vec4(p, 1.0);\n}\n",v.FRAGMENT_SHADER),A=v.createProgram();if(!A||!b||!w)return;v.attachShader(A,b),v.attachShader(A,w),v.linkProgram(A),v.useProgram(A);let C=new Float32Array([-1,1,-1,-1,1,1,1,-1]),S=v.createBuffer();v.bindBuffer(v.ARRAY_BUFFER,S),v.bufferData(v.ARRAY_BUFFER,C,v.STATIC_DRAW);let E=(e="position",null==v?void 0:v.getAttribLocation(A,e));if("number"!=typeof E)return;v.enableVertexAttribArray(E),v.vertexAttribPointer(E,2,v.FLOAT,!1,8,0);let z=g(A,"time"),P=g(A,"width"),_=g(A,"height");if(!P||!_)return;let L=x(c);v.uniform1f(P,L.width),v.uniform1f(_,L.height);let R=Date.now();function M(){window.removeEventListener("resize",N),cancelAnimationFrame(o),l.current=!1}function N(){let e=x(c);P&&_&&(null==v||v.uniform1f(P,e.width),null==v||v.uniform1f(_,e.height))}return function e(){var n,t;if(h.current&&!(!(n=h.current).isMobile&&(null!==(t=n.gpu)&&void 0!==t&&t.includes("apple")||!(n.tier<=1)))){d(!0),M();return}r=Date.now(),p+=(r-R)/2e3,R=r,null==v||v.uniform1f(z,p),null==v||v.drawArrays(v.TRIANGLE_STRIP,0,4),o=requestAnimationFrame(e),l.current||(l.current=!0,a.dataset.show="true")}(),window.addEventListener("resize",N,!1),M},[f,s]),s||v)?null:(0,r.jsx)("canvas",{"aria-hidden":!0,"data-hero-shader":!0,ref:u,style:{width:n,height:t},...c})}function x(e){if(!e)return{width:0,height:0};let n=e.getBoundingClientRect();return{width:n.width,height:n.height}}let y="#version 300 es\nin vec4 position;\nin vec2 uv;\nout vec2 vUv;\nvoid main(){\n vUv = uv;\n gl_Position = position;\n}"},60892:(e,n,t)=>{t.d(n,{j:()=>i});var r=t(72303);let o="(prefers-reduced-motion: no-preference)",a=()=>!window.matchMedia(o).matches;function i(){let[e,n]=(0,r.useState)(a);return(0,r.useEffect)(()=>{let e=window.matchMedia(o),t=e=>{n(!e.matches)};return e.addEventListener?e.addEventListener("change",t):e.addListener(t),()=>{e.removeEventListener?e.removeEventListener("change",t):e.removeListener(t)}},[]),e}}}]); //# debugId=3be83712-dfd6-512e-9fb9-bb13a403ed70