From b3430cac238a19cdc2bd075aec49de9ab897ee0f Mon Sep 17 00:00:00 2001 From: baleinegris Date: Sat, 26 Oct 2024 20:42:45 -0400 Subject: [PATCH] Updates --- assets/index-BCSqked0.css | 1 + assets/index-CkUt-f8A.js | 145 +++++++++++++++++++++++++++++++++++ flood-fill-favicon-color.png | Bin 0 -> 1106 bytes flood-fill/.gitignore | 25 ++++++ index.html | 14 ++++ logo - Copy.png | Bin 0 -> 109344 bytes logo.png | Bin 0 -> 44558 bytes three.r134.min.js | 6 ++ vanta.waves.min.js | 1 + vite.svg | 1 + 10 files changed, 193 insertions(+) create mode 100644 assets/index-BCSqked0.css create mode 100644 assets/index-CkUt-f8A.js create mode 100644 flood-fill-favicon-color.png create mode 100644 flood-fill/.gitignore create mode 100644 index.html create mode 100644 logo - Copy.png create mode 100644 logo.png create mode 100644 three.r134.min.js create mode 100644 vanta.waves.min.js create mode 100644 vite.svg diff --git a/assets/index-BCSqked0.css b/assets/index-BCSqked0.css new file mode 100644 index 0000000..5d82842 --- /dev/null +++ b/assets/index-BCSqked0.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.relative{position:relative}.z-10{z-index:10}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.flex{display:flex}.hidden{display:none}.h-\[1px\]{height:1px}.h-\[40\%\]{height:40%}.h-\[500px\]{height:500px}.h-full{height:100%}.w-\[100\%\]{width:100%}.w-\[1000px\]{width:1000px}.w-\[100vw\]{width:100vw}.w-\[200px\]{width:200px}.w-\[40\%\]{width:40%}.w-\[60\%\]{width:60%}.w-full{width:100%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1px\]{border-width:1px}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.bg-\[\#0a1627\]{--tw-bg-opacity: 1;background-color:rgb(10 22 39 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-purple-950{--tw-bg-opacity: 1;background-color:rgb(59 7 100 / var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-cyan-500{--tw-gradient-from: #06b6d4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-blue-500{--tw-gradient-to: #3b82f6 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-2{padding:.5rem}.p-6{padding:1.5rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.pb-5{padding-bottom:1.25rem}.text-\[3em\]{font-size:3em}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-bold{font-weight:700}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.danger-gradient{background:linear-gradient(-90deg,red,red 20%,#ff0 75%,#0f0)}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}#tsparticles{z-index:-1}.map-label{position:absolute;top:0;left:0;transform:translate(-50%);padding:.5em;background-color:#fff;color:#fff;font-size:1.2em;font-weight:500;border-radius:0 0 0 8px} diff --git a/assets/index-CkUt-f8A.js b/assets/index-CkUt-f8A.js new file mode 100644 index 0000000..9055024 --- /dev/null +++ b/assets/index-CkUt-f8A.js @@ -0,0 +1,145 @@ +var Km=Object.defineProperty;var Gm=(e,t,n)=>t in e?Km(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Jr=(e,t,n)=>Gm(e,typeof t!="symbol"?t+"":t,n);function Xm(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const s of l.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();function Qm(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Od={exports:{}},Il={},zd={exports:{}},W={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Yo=Symbol.for("react.element"),Ym=Symbol.for("react.portal"),Zm=Symbol.for("react.fragment"),Jm=Symbol.for("react.strict_mode"),qm=Symbol.for("react.profiler"),e0=Symbol.for("react.provider"),t0=Symbol.for("react.context"),n0=Symbol.for("react.forward_ref"),r0=Symbol.for("react.suspense"),o0=Symbol.for("react.memo"),i0=Symbol.for("react.lazy"),Bc=Symbol.iterator;function l0(e){return e===null||typeof e!="object"?null:(e=Bc&&e[Bc]||e["@@iterator"],typeof e=="function"?e:null)}var Dd={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},jd=Object.assign,Bd={};function Wr(e,t,n){this.props=e,this.context=t,this.refs=Bd,this.updater=n||Dd}Wr.prototype.isReactComponent={};Wr.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Wr.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Fd(){}Fd.prototype=Wr.prototype;function mu(e,t,n){this.props=e,this.context=t,this.refs=Bd,this.updater=n||Dd}var gu=mu.prototype=new Fd;gu.constructor=mu;jd(gu,Wr.prototype);gu.isPureReactComponent=!0;var Fc=Array.isArray,Ud=Object.prototype.hasOwnProperty,yu={current:null},Vd={key:!0,ref:!0,__self:!0,__source:!0};function Wd(e,t,n){var r,o={},l=null,s=null;if(t!=null)for(r in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(l=""+t.key),t)Ud.call(t,r)&&!Vd.hasOwnProperty(r)&&(o[r]=t[r]);var a=arguments.length-2;if(a===1)o.children=n;else if(1>>1,Y=I[V];if(0>>1;Vo(Me,F))Seo(et,Me)?(I[V]=et,I[Se]=F,V=Se):(I[V]=Me,I[ae]=F,V=ae);else if(Seo(et,F))I[V]=et,I[Se]=F,V=Se;else break e}}return D}function o(I,D){var F=I.sortIndex-D.sortIndex;return F!==0?F:I.id-D.id}if(typeof performance=="object"&&typeof performance.now=="function"){var l=performance;e.unstable_now=function(){return l.now()}}else{var s=Date,a=s.now();e.unstable_now=function(){return s.now()-a}}var u=[],c=[],f=1,d=null,h=3,v=!1,S=!1,w=!1,E=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,m=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function y(I){for(var D=n(c);D!==null;){if(D.callback===null)r(c);else if(D.startTime<=I)r(c),D.sortIndex=D.expirationTime,t(u,D);else break;D=n(c)}}function x(I){if(w=!1,y(I),!S)if(n(u)!==null)S=!0,te(C);else{var D=n(c);D!==null&&se(x,D.startTime-I)}}function C(I,D){S=!1,w&&(w=!1,g(R),R=-1),v=!0;var F=h;try{for(y(D),d=n(u);d!==null&&(!(d.expirationTime>D)||I&&!M());){var V=d.callback;if(typeof V=="function"){d.callback=null,h=d.priorityLevel;var Y=V(d.expirationTime<=D);D=e.unstable_now(),typeof Y=="function"?d.callback=Y:d===n(u)&&r(u),y(D)}else r(u);d=n(u)}if(d!==null)var ft=!0;else{var ae=n(c);ae!==null&&se(x,ae.startTime-D),ft=!1}return ft}finally{d=null,h=F,v=!1}}var T=!1,P=null,R=-1,z=5,p=-1;function M(){return!(e.unstable_now()-pI||125V?(I.sortIndex=F,t(c,I),n(u)===null&&I===n(c)&&(w?(g(R),R=-1):w=!0,se(x,F-V))):(I.sortIndex=Y,t(u,I),S||v||(S=!0,te(C))),I},e.unstable_shouldYield=M,e.unstable_wrapCallback=function(I){var D=h;return function(){var F=h;h=D;try{return I.apply(this,arguments)}finally{h=F}}}})(Qd);Xd.exports=Qd;var y0=Xd.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var v0=k,st=y0;function _(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ha=Object.prototype.hasOwnProperty,S0=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Vc={},Wc={};function w0(e){return ha.call(Wc,e)?!0:ha.call(Vc,e)?!1:S0.test(e)?Wc[e]=!0:(Vc[e]=!0,!1)}function x0(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function C0(e,t,n,r){if(t===null||typeof t>"u"||x0(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function He(e,t,n,r,o,l,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=s}var Le={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Le[e]=new He(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Le[t]=new He(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Le[e]=new He(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Le[e]=new He(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Le[e]=new He(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Le[e]=new He(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Le[e]=new He(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Le[e]=new He(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Le[e]=new He(e,5,!1,e.toLowerCase(),null,!1,!1)});var Su=/[\-:]([a-z])/g;function wu(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Su,wu);Le[t]=new He(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Su,wu);Le[t]=new He(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Su,wu);Le[t]=new He(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Le[e]=new He(e,1,!1,e.toLowerCase(),null,!1,!1)});Le.xlinkHref=new He("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Le[e]=new He(e,1,!1,e.toLowerCase(),null,!0,!0)});function xu(e,t,n,r){var o=Le.hasOwnProperty(t)?Le[t]:null;(o!==null?o.type!==0:r||!(2a||o[s]!==l[a]){var u=` +`+o[s].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=s&&0<=a);break}}}finally{Ns=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?co(e):""}function k0(e){switch(e.tag){case 5:return co(e.type);case 16:return co("Lazy");case 13:return co("Suspense");case 19:return co("SuspenseList");case 0:case 2:case 15:return e=Os(e.type,!1),e;case 11:return e=Os(e.type.render,!1),e;case 1:return e=Os(e.type,!0),e;default:return""}}function va(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case mr:return"Fragment";case hr:return"Portal";case ma:return"Profiler";case Cu:return"StrictMode";case ga:return"Suspense";case ya:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Jd:return(e.displayName||"Context")+".Consumer";case Zd:return(e._context.displayName||"Context")+".Provider";case ku:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Eu:return t=e.displayName||null,t!==null?t:va(e.type)||"Memo";case sn:t=e._payload,e=e._init;try{return va(e(t))}catch{}}return null}function E0(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return va(t);case 8:return t===Cu?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Cn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ep(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function T0(e){var t=ep(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(s){r=""+s,l.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function gi(e){e._valueTracker||(e._valueTracker=T0(e))}function tp(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ep(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function el(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Sa(e,t){var n=t.checked;return he({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Kc(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Cn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function np(e,t){t=t.checked,t!=null&&xu(e,"checked",t,!1)}function wa(e,t){np(e,t);var n=Cn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?xa(e,t.type,n):t.hasOwnProperty("defaultValue")&&xa(e,t.type,Cn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Gc(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function xa(e,t,n){(t!=="number"||el(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var fo=Array.isArray;function Rr(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=yi.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Ro(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var yo={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},P0=["Webkit","ms","Moz","O"];Object.keys(yo).forEach(function(e){P0.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),yo[t]=yo[e]})});function lp(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||yo.hasOwnProperty(e)&&yo[e]?(""+t).trim():t+"px"}function sp(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=lp(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var A0=he({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ea(e,t){if(t){if(A0[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(_(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(_(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(_(61))}if(t.style!=null&&typeof t.style!="object")throw Error(_(62))}}function Ta(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Pa=null;function Tu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Aa=null,Mr=null,br=null;function Yc(e){if(e=qo(e)){if(typeof Aa!="function")throw Error(_(280));var t=e.stateNode;t&&(t=Dl(t),Aa(e.stateNode,e.type,t))}}function ap(e){Mr?br?br.push(e):br=[e]:Mr=e}function up(){if(Mr){var e=Mr,t=br;if(br=Mr=null,Yc(e),t)for(e=0;e>>=0,e===0?32:31-(D0(e)/j0|0)|0}var vi=64,Si=4194304;function po(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ol(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,l=e.pingedLanes,s=n&268435455;if(s!==0){var a=s&~o;a!==0?r=po(a):(l&=s,l!==0&&(r=po(l)))}else s=n&~o,s!==0?r=po(s):l!==0&&(r=po(l));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,l=t&-t,o>=l||o===16&&(l&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Zo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Mt(t),e[t]=n}function V0(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=So),lf=" ",sf=!1;function Mp(e,t){switch(e){case"keyup":return yg.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bp(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gr=!1;function Sg(e,t){switch(e){case"compositionend":return bp(t);case"keypress":return t.which!==32?null:(sf=!0,lf);case"textInput":return e=t.data,e===lf&&sf?null:e;default:return null}}function wg(e,t){if(gr)return e==="compositionend"||!Iu&&Mp(e,t)?(e=Ap(),Fi=bu=dn=null,gr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ff(n)}}function Lp(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Lp(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Np(){for(var e=window,t=el();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=el(e.document)}return t}function Lu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Mg(e){var t=Np(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Lp(n.ownerDocument.documentElement,n)){if(r!==null&&Lu(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,l=Math.min(r.start,o);r=r.end===void 0?l:Math.min(r.end,o),!e.extend&&l>r&&(o=r,r=l,l=o),o=df(n,l);var s=df(n,r);o&&s&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),l>r?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,yr=null,Ia=null,xo=null,La=!1;function pf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;La||yr==null||yr!==el(r)||(r=yr,"selectionStart"in r&&Lu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),xo&&Lo(xo,r)||(xo=r,r=sl(Ia,"onSelect"),0wr||(e.current=Ba[wr],Ba[wr]=null,wr--)}function oe(e,t){wr++,Ba[wr]=e.current,e.current=t}var kn={},Fe=An(kn),Ye=An(!1),Xn=kn;function zr(e,t){var n=e.type.contextTypes;if(!n)return kn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},l;for(l in n)o[l]=t[l];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Ze(e){return e=e.childContextTypes,e!=null}function ul(){le(Ye),le(Fe)}function wf(e,t,n){if(Fe.current!==kn)throw Error(_(168));oe(Fe,t),oe(Ye,n)}function Wp(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(_(108,E0(e)||"Unknown",o));return he({},n,r)}function cl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||kn,Xn=Fe.current,oe(Fe,e),oe(Ye,Ye.current),!0}function xf(e,t,n){var r=e.stateNode;if(!r)throw Error(_(169));n?(e=Wp(e,t,Xn),r.__reactInternalMemoizedMergedChildContext=e,le(Ye),le(Fe),oe(Fe,e)):le(Ye),oe(Ye,n)}var Kt=null,jl=!1,Ys=!1;function Hp(e){Kt===null?Kt=[e]:Kt.push(e)}function Fg(e){jl=!0,Hp(e)}function Rn(){if(!Ys&&Kt!==null){Ys=!0;var e=0,t=J;try{var n=Kt;for(J=1;e>=s,o-=s,Gt=1<<32-Mt(t)+o|n<R?(z=P,P=null):z=P.sibling;var p=h(g,P,y[R],x);if(p===null){P===null&&(P=z);break}e&&P&&p.alternate===null&&t(g,P),m=l(p,m,R),T===null?C=p:T.sibling=p,T=p,P=z}if(R===y.length)return n(g,P),ce&&On(g,R),C;if(P===null){for(;RR?(z=P,P=null):z=P.sibling;var M=h(g,P,p.value,x);if(M===null){P===null&&(P=z);break}e&&P&&M.alternate===null&&t(g,P),m=l(M,m,R),T===null?C=M:T.sibling=M,T=M,P=z}if(p.done)return n(g,P),ce&&On(g,R),C;if(P===null){for(;!p.done;R++,p=y.next())p=d(g,p.value,x),p!==null&&(m=l(p,m,R),T===null?C=p:T.sibling=p,T=p);return ce&&On(g,R),C}for(P=r(g,P);!p.done;R++,p=y.next())p=v(P,g,R,p.value,x),p!==null&&(e&&p.alternate!==null&&P.delete(p.key===null?R:p.key),m=l(p,m,R),T===null?C=p:T.sibling=p,T=p);return e&&P.forEach(function(N){return t(g,N)}),ce&&On(g,R),C}function E(g,m,y,x){if(typeof y=="object"&&y!==null&&y.type===mr&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case mi:e:{for(var C=y.key,T=m;T!==null;){if(T.key===C){if(C=y.type,C===mr){if(T.tag===7){n(g,T.sibling),m=o(T,y.props.children),m.return=g,g=m;break e}}else if(T.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===sn&&Ef(C)===T.type){n(g,T.sibling),m=o(T,y.props),m.ref=oo(g,T,y),m.return=g,g=m;break e}n(g,T);break}else t(g,T);T=T.sibling}y.type===mr?(m=Kn(y.props.children,g.mode,x,y.key),m.return=g,g=m):(x=Qi(y.type,y.key,y.props,null,g.mode,x),x.ref=oo(g,m,y),x.return=g,g=x)}return s(g);case hr:e:{for(T=y.key;m!==null;){if(m.key===T)if(m.tag===4&&m.stateNode.containerInfo===y.containerInfo&&m.stateNode.implementation===y.implementation){n(g,m.sibling),m=o(m,y.children||[]),m.return=g,g=m;break e}else{n(g,m);break}else t(g,m);m=m.sibling}m=oa(y,g.mode,x),m.return=g,g=m}return s(g);case sn:return T=y._init,E(g,m,T(y._payload),x)}if(fo(y))return S(g,m,y,x);if(qr(y))return w(g,m,y,x);Pi(g,y)}return typeof y=="string"&&y!==""||typeof y=="number"?(y=""+y,m!==null&&m.tag===6?(n(g,m.sibling),m=o(m,y),m.return=g,g=m):(n(g,m),m=ra(y,g.mode,x),m.return=g,g=m),s(g)):n(g,m)}return E}var jr=Qp(!0),Yp=Qp(!1),pl=An(null),hl=null,kr=null,Du=null;function ju(){Du=kr=hl=null}function Bu(e){var t=pl.current;le(pl),e._currentValue=t}function Va(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function $r(e,t){hl=e,Du=kr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Qe=!0),e.firstContext=null)}function wt(e){var t=e._currentValue;if(Du!==e)if(e={context:e,memoizedValue:t,next:null},kr===null){if(hl===null)throw Error(_(308));kr=e,hl.dependencies={lanes:0,firstContext:e}}else kr=kr.next=e;return t}var Fn=null;function Fu(e){Fn===null?Fn=[e]:Fn.push(e)}function Zp(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,Fu(t)):(n.next=o.next,o.next=n),t.interleaved=n,Jt(e,r)}function Jt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var an=!1;function Uu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Jp(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Qt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function vn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,H&2){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Jt(e,n)}return o=r.interleaved,o===null?(t.next=t,Fu(r)):(t.next=o.next,o.next=t),r.interleaved=t,Jt(e,n)}function Vi(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Au(e,n)}}function Tf(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,l=null;if(n=n.firstBaseUpdate,n!==null){do{var s={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};l===null?o=l=s:l=l.next=s,n=n.next}while(n!==null);l===null?o=l=t:l=l.next=t}else o=l=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:l,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ml(e,t,n,r){var o=e.updateQueue;an=!1;var l=o.firstBaseUpdate,s=o.lastBaseUpdate,a=o.shared.pending;if(a!==null){o.shared.pending=null;var u=a,c=u.next;u.next=null,s===null?l=c:s.next=c,s=u;var f=e.alternate;f!==null&&(f=f.updateQueue,a=f.lastBaseUpdate,a!==s&&(a===null?f.firstBaseUpdate=c:a.next=c,f.lastBaseUpdate=u))}if(l!==null){var d=o.baseState;s=0,f=c=u=null,a=l;do{var h=a.lane,v=a.eventTime;if((r&h)===h){f!==null&&(f=f.next={eventTime:v,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var S=e,w=a;switch(h=t,v=n,w.tag){case 1:if(S=w.payload,typeof S=="function"){d=S.call(v,d,h);break e}d=S;break e;case 3:S.flags=S.flags&-65537|128;case 0:if(S=w.payload,h=typeof S=="function"?S.call(v,d,h):S,h==null)break e;d=he({},d,h);break e;case 2:an=!0}}a.callback!==null&&a.lane!==0&&(e.flags|=64,h=o.effects,h===null?o.effects=[a]:h.push(a))}else v={eventTime:v,lane:h,tag:a.tag,payload:a.payload,callback:a.callback,next:null},f===null?(c=f=v,u=d):f=f.next=v,s|=h;if(a=a.next,a===null){if(a=o.shared.pending,a===null)break;h=a,a=h.next,h.next=null,o.lastBaseUpdate=h,o.shared.pending=null}}while(!0);if(f===null&&(u=d),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=f,t=o.shared.interleaved,t!==null){o=t;do s|=o.lane,o=o.next;while(o!==t)}else l===null&&(o.shared.lanes=0);Zn|=s,e.lanes=s,e.memoizedState=d}}function Pf(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Js.transition;Js.transition={};try{e(!1),t()}finally{J=n,Js.transition=r}}function mh(){return xt().memoizedState}function Hg(e,t,n){var r=wn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},gh(e))yh(t,n);else if(n=Zp(e,t,n,r),n!==null){var o=Ve();bt(n,e,r,o),vh(n,t,r)}}function Kg(e,t,n){var r=wn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(gh(e))yh(t,o);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var s=t.lastRenderedState,a=l(s,n);if(o.hasEagerState=!0,o.eagerState=a,_t(a,s)){var u=t.interleaved;u===null?(o.next=o,Fu(t)):(o.next=u.next,u.next=o),t.interleaved=o;return}}catch{}finally{}n=Zp(e,t,o,r),n!==null&&(o=Ve(),bt(n,e,r,o),vh(n,t,r))}}function gh(e){var t=e.alternate;return e===pe||t!==null&&t===pe}function yh(e,t){Co=yl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function vh(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Au(e,n)}}var vl={readContext:wt,useCallback:Oe,useContext:Oe,useEffect:Oe,useImperativeHandle:Oe,useInsertionEffect:Oe,useLayoutEffect:Oe,useMemo:Oe,useReducer:Oe,useRef:Oe,useState:Oe,useDebugValue:Oe,useDeferredValue:Oe,useTransition:Oe,useMutableSource:Oe,useSyncExternalStore:Oe,useId:Oe,unstable_isNewReconciler:!1},Gg={readContext:wt,useCallback:function(e,t){return Ot().memoizedState=[e,t===void 0?null:t],e},useContext:wt,useEffect:Rf,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Hi(4194308,4,ch.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Hi(4194308,4,e,t)},useInsertionEffect:function(e,t){return Hi(4,2,e,t)},useMemo:function(e,t){var n=Ot();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ot();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Hg.bind(null,pe,e),[r.memoizedState,e]},useRef:function(e){var t=Ot();return e={current:e},t.memoizedState=e},useState:Af,useDebugValue:Yu,useDeferredValue:function(e){return Ot().memoizedState=e},useTransition:function(){var e=Af(!1),t=e[0];return e=Wg.bind(null,e[1]),Ot().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=pe,o=Ot();if(ce){if(n===void 0)throw Error(_(407));n=n()}else{if(n=t(),Ae===null)throw Error(_(349));Yn&30||nh(r,t,n)}o.memoizedState=n;var l={value:n,getSnapshot:t};return o.queue=l,Rf(oh.bind(null,r,l,e),[e]),r.flags|=2048,Uo(9,rh.bind(null,r,l,n,t),void 0,null),n},useId:function(){var e=Ot(),t=Ae.identifierPrefix;if(ce){var n=Xt,r=Gt;n=(r&~(1<<32-Mt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Bo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),n==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[jt]=t,e[zo]=r,Rh(e,t,!1,!1),t.stateNode=e;e:{switch(s=Ta(n,r),n){case"dialog":ie("cancel",e),ie("close",e),o=r;break;case"iframe":case"object":case"embed":ie("load",e),o=r;break;case"video":case"audio":for(o=0;oUr&&(t.flags|=128,r=!0,io(l,!1),t.lanes=4194304)}else{if(!r)if(e=gl(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),io(l,!0),l.tail===null&&l.tailMode==="hidden"&&!s.alternate&&!ce)return ze(t),null}else 2*we()-l.renderingStartTime>Ur&&n!==1073741824&&(t.flags|=128,r=!0,io(l,!1),t.lanes=4194304);l.isBackwards?(s.sibling=t.child,t.child=s):(n=l.last,n!==null?n.sibling=s:t.child=s,l.last=s)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=we(),t.sibling=null,n=fe.current,oe(fe,r?n&1|2:n&1),t):(ze(t),null);case 22:case 23:return nc(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?tt&1073741824&&(ze(t),t.subtreeFlags&6&&(t.flags|=8192)):ze(t),null;case 24:return null;case 25:return null}throw Error(_(156,t.tag))}function ty(e,t){switch(Ou(t),t.tag){case 1:return Ze(t.type)&&ul(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Br(),le(Ye),le(Fe),Hu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Wu(t),null;case 13:if(le(fe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(_(340));Dr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return le(fe),null;case 4:return Br(),null;case 10:return Bu(t.type._context),null;case 22:case 23:return nc(),null;case 24:return null;default:return null}}var Ri=!1,Be=!1,ny=typeof WeakSet=="function"?WeakSet:Set,O=null;function Er(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ve(e,t,r)}else n.current=null}function Ja(e,t,n){try{n()}catch(r){ve(e,t,r)}}var jf=!1;function ry(e,t){if(Na=il,e=Np(),Lu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,l=r.focusNode;r=r.focusOffset;try{n.nodeType,l.nodeType}catch{n=null;break e}var s=0,a=-1,u=-1,c=0,f=0,d=e,h=null;t:for(;;){for(var v;d!==n||o!==0&&d.nodeType!==3||(a=s+o),d!==l||r!==0&&d.nodeType!==3||(u=s+r),d.nodeType===3&&(s+=d.nodeValue.length),(v=d.firstChild)!==null;)h=d,d=v;for(;;){if(d===e)break t;if(h===n&&++c===o&&(a=s),h===l&&++f===r&&(u=s),(v=d.nextSibling)!==null)break;d=h,h=d.parentNode}d=v}n=a===-1||u===-1?null:{start:a,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Oa={focusedElem:e,selectionRange:n},il=!1,O=t;O!==null;)if(t=O,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,O=e;else for(;O!==null;){t=O;try{var S=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(S!==null){var w=S.memoizedProps,E=S.memoizedState,g=t.stateNode,m=g.getSnapshotBeforeUpdate(t.elementType===t.type?w:Pt(t.type,w),E);g.__reactInternalSnapshotBeforeUpdate=m}break;case 3:var y=t.stateNode.containerInfo;y.nodeType===1?y.textContent="":y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(_(163))}}catch(x){ve(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,O=e;break}O=t.return}return S=jf,jf=!1,S}function ko(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var l=o.destroy;o.destroy=void 0,l!==void 0&&Ja(t,n,l)}o=o.next}while(o!==r)}}function Ul(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function qa(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function _h(e){var t=e.alternate;t!==null&&(e.alternate=null,_h(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[jt],delete t[zo],delete t[ja],delete t[jg],delete t[Bg])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function $h(e){return e.tag===5||e.tag===3||e.tag===4}function Bf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||$h(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function eu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=al));else if(r!==4&&(e=e.child,e!==null))for(eu(e,t,n),e=e.sibling;e!==null;)eu(e,t,n),e=e.sibling}function tu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(tu(e,t,n),e=e.sibling;e!==null;)tu(e,t,n),e=e.sibling}var be=null,At=!1;function on(e,t,n){for(n=n.child;n!==null;)Ih(e,t,n),n=n.sibling}function Ih(e,t,n){if(Ft&&typeof Ft.onCommitFiberUnmount=="function")try{Ft.onCommitFiberUnmount(Ll,n)}catch{}switch(n.tag){case 5:Be||Er(n,t);case 6:var r=be,o=At;be=null,on(e,t,n),be=r,At=o,be!==null&&(At?(e=be,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):be.removeChild(n.stateNode));break;case 18:be!==null&&(At?(e=be,n=n.stateNode,e.nodeType===8?Qs(e.parentNode,n):e.nodeType===1&&Qs(e,n),$o(e)):Qs(be,n.stateNode));break;case 4:r=be,o=At,be=n.stateNode.containerInfo,At=!0,on(e,t,n),be=r,At=o;break;case 0:case 11:case 14:case 15:if(!Be&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var l=o,s=l.destroy;l=l.tag,s!==void 0&&(l&2||l&4)&&Ja(n,t,s),o=o.next}while(o!==r)}on(e,t,n);break;case 1:if(!Be&&(Er(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){ve(n,t,a)}on(e,t,n);break;case 21:on(e,t,n);break;case 22:n.mode&1?(Be=(r=Be)||n.memoizedState!==null,on(e,t,n),Be=r):on(e,t,n);break;default:on(e,t,n)}}function Ff(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new ny),t.forEach(function(r){var o=dy.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function Tt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=s),r&=~l}if(r=o,r=we()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*iy(r/1960))-r,10e?16:e,pn===null)var r=!1;else{if(e=pn,pn=null,xl=0,H&6)throw Error(_(331));var o=H;for(H|=4,O=e.current;O!==null;){var l=O,s=l.child;if(O.flags&16){var a=l.deletions;if(a!==null){for(var u=0;uwe()-ec?Hn(e,0):qu|=n),Je(e,t)}function Fh(e,t){t===0&&(e.mode&1?(t=Si,Si<<=1,!(Si&130023424)&&(Si=4194304)):t=1);var n=Ve();e=Jt(e,t),e!==null&&(Zo(e,t,n),Je(e,n))}function fy(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Fh(e,n)}function dy(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(_(314))}r!==null&&r.delete(t),Fh(e,n)}var Uh;Uh=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ye.current)Qe=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Qe=!1,qg(e,t,n);Qe=!!(e.flags&131072)}else Qe=!1,ce&&t.flags&1048576&&Kp(t,dl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ki(e,t),e=t.pendingProps;var o=zr(t,Fe.current);$r(t,n),o=Gu(null,t,r,e,o,n);var l=Xu();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ze(r)?(l=!0,cl(t)):l=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Uu(t),o.updater=Fl,t.stateNode=o,o._reactInternals=t,Ha(t,r,e,n),t=Xa(null,t,r,!0,l,n)):(t.tag=0,ce&&l&&Nu(t),Ue(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ki(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=hy(r),e=Pt(r,e),o){case 0:t=Ga(null,t,r,e,n);break e;case 1:t=Of(null,t,r,e,n);break e;case 11:t=Lf(null,t,r,e,n);break e;case 14:t=Nf(null,t,r,Pt(r.type,e),n);break e}throw Error(_(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Pt(r,o),Ga(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Pt(r,o),Of(e,t,r,o,n);case 3:e:{if(Th(t),e===null)throw Error(_(387));r=t.pendingProps,l=t.memoizedState,o=l.element,Jp(e,t),ml(t,r,null,n);var s=t.memoizedState;if(r=s.element,l.isDehydrated)if(l={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){o=Fr(Error(_(423)),t),t=zf(e,t,r,n,o);break e}else if(r!==o){o=Fr(Error(_(424)),t),t=zf(e,t,r,n,o);break e}else for(rt=yn(t.stateNode.containerInfo.firstChild),ot=t,ce=!0,Rt=null,n=Yp(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Dr(),r===o){t=qt(e,t,n);break e}Ue(e,t,r,n)}t=t.child}return t;case 5:return qp(t),e===null&&Ua(t),r=t.type,o=t.pendingProps,l=e!==null?e.memoizedProps:null,s=o.children,za(r,o)?s=null:l!==null&&za(r,l)&&(t.flags|=32),Eh(e,t),Ue(e,t,s,n),t.child;case 6:return e===null&&Ua(t),null;case 13:return Ph(e,t,n);case 4:return Vu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=jr(t,null,r,n):Ue(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Pt(r,o),Lf(e,t,r,o,n);case 7:return Ue(e,t,t.pendingProps,n),t.child;case 8:return Ue(e,t,t.pendingProps.children,n),t.child;case 12:return Ue(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,l=t.memoizedProps,s=o.value,oe(pl,r._currentValue),r._currentValue=s,l!==null)if(_t(l.value,s)){if(l.children===o.children&&!Ye.current){t=qt(e,t,n);break e}}else for(l=t.child,l!==null&&(l.return=t);l!==null;){var a=l.dependencies;if(a!==null){s=l.child;for(var u=a.firstContext;u!==null;){if(u.context===r){if(l.tag===1){u=Qt(-1,n&-n),u.tag=2;var c=l.updateQueue;if(c!==null){c=c.shared;var f=c.pending;f===null?u.next=u:(u.next=f.next,f.next=u),c.pending=u}}l.lanes|=n,u=l.alternate,u!==null&&(u.lanes|=n),Va(l.return,n,t),a.lanes|=n;break}u=u.next}}else if(l.tag===10)s=l.type===t.type?null:l.child;else if(l.tag===18){if(s=l.return,s===null)throw Error(_(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),Va(s,n,t),s=l.sibling}else s=l.child;if(s!==null)s.return=l;else for(s=l;s!==null;){if(s===t){s=null;break}if(l=s.sibling,l!==null){l.return=s.return,s=l;break}s=s.return}l=s}Ue(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,$r(t,n),o=wt(o),r=r(o),t.flags|=1,Ue(e,t,r,n),t.child;case 14:return r=t.type,o=Pt(r,t.pendingProps),o=Pt(r.type,o),Nf(e,t,r,o,n);case 15:return Ch(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Pt(r,o),Ki(e,t),t.tag=1,Ze(r)?(e=!0,cl(t)):e=!1,$r(t,n),Sh(t,r,o),Ha(t,r,o,n),Xa(null,t,r,!0,e,n);case 19:return Ah(e,t,n);case 22:return kh(e,t,n)}throw Error(_(156,t.tag))};function Vh(e,t){return gp(e,t)}function py(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function vt(e,t,n,r){return new py(e,t,n,r)}function oc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function hy(e){if(typeof e=="function")return oc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ku)return 11;if(e===Eu)return 14}return 2}function xn(e,t){var n=e.alternate;return n===null?(n=vt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Qi(e,t,n,r,o,l){var s=2;if(r=e,typeof e=="function")oc(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case mr:return Kn(n.children,o,l,t);case Cu:s=8,o|=8;break;case ma:return e=vt(12,n,t,o|2),e.elementType=ma,e.lanes=l,e;case ga:return e=vt(13,n,t,o),e.elementType=ga,e.lanes=l,e;case ya:return e=vt(19,n,t,o),e.elementType=ya,e.lanes=l,e;case qd:return Wl(n,o,l,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Zd:s=10;break e;case Jd:s=9;break e;case ku:s=11;break e;case Eu:s=14;break e;case sn:s=16,r=null;break e}throw Error(_(130,e==null?e:typeof e,""))}return t=vt(s,n,t,o),t.elementType=e,t.type=r,t.lanes=l,t}function Kn(e,t,n,r){return e=vt(7,e,r,t),e.lanes=n,e}function Wl(e,t,n,r){return e=vt(22,e,r,t),e.elementType=qd,e.lanes=n,e.stateNode={isHidden:!1},e}function ra(e,t,n){return e=vt(6,e,null,t),e.lanes=n,e}function oa(e,t,n){return t=vt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function my(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ds(0),this.expirationTimes=Ds(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ds(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function ic(e,t,n,r,o,l,s,a,u){return e=new my(e,t,n,a,u),t===1?(t=1,l===!0&&(t|=8)):t=0,l=vt(3,null,null,t),e.current=l,l.stateNode=e,l.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Uu(l),e}function gy(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Gh)}catch(e){console.error(e)}}Gh(),Gd.exports=at;var Xh=Gd.exports,Qh,Qf=Xh;Qh=Qf.createRoot,Qf.hydrateRoot;const xy="/logo%20-%20Copy.png";function Cy(){return $.jsx("div",{className:"flex justify-center items-center relative bg-[#0a1627]",children:$.jsx("img",{src:xy,style:{height:"150px",borderRadius:"50px"}})})}function Gn(){return Gn=Object.assign?Object.assign.bind():function(e){for(var t=1;tgoogle.maps.importLibrary(a)))}static serializeParams(t){return[t.v,t.key,t.language,t.region,t.authReferrerPolicy,t.solutionChannel].join("/")}static initImportLibrary(t){if(window.google||(window.google={}),window.google.maps||(window.google.maps={}),window.google.maps.importLibrary){console.error("[google-maps-api-loader-internal]: initImportLibrary must only be called once");return}let n=null;const r=()=>n||(n=new Promise((o,l)=>{var s;const a=document.createElement("script"),u=new URLSearchParams;for(const[c,f]of Object.entries(t)){const d=c.replace(/[A-Z]/g,h=>"_"+h[0].toLowerCase());u.set(d,f)}u.set("loading","async"),u.set("callback","__googleMapsCallback__"),a.async=!0,a.src=Ty+"?"+u.toString(),a.nonce=((s=document.querySelector("script[nonce]"))==null?void 0:s.nonce)||"",a.onerror=()=>{this.loadingStatus=fn.FAILED,this.notifyLoadingStatusListeners(),l(new Error("The Google Maps JavaScript API could not load."))},window.__googleMapsCallback__=()=>{this.loadingStatus=fn.LOADED,this.notifyLoadingStatusListeners(),o()},window.gm_authFailure=()=>{this.loadingStatus=fn.AUTH_FAILURE,this.notifyLoadingStatusListeners()},this.loadingStatus=fn.LOADING,this.notifyLoadingStatusListeners(),document.head.append(a)}),n);google.maps.importLibrary=o=>r().then(()=>google.maps.importLibrary(o))}static notifyLoadingStatusListeners(){for(const t of this.listeners)t(this.loadingStatus)}}Wo.loadingStatus=fn.NOT_LOADED;Wo.serializedApiParams=void 0;Wo.listeners=[];const Py=["onLoad","onError","apiKey","version","libraries"],Ay=["children"],Ry="GMP_visgl_rgmlibrary_v1_default",Ql=$e.createContext(null);function My(){const[e,t]=k.useState({});return{mapInstances:e,addMapInstance:(l,s="default")=>{t(a=>Gn({},a,{[s]:l}))},removeMapInstance:(l="default")=>{t(s=>ti(s,[l].map(Ey)))},clearMapInstances:()=>{t({})}}}function by(e){const{onLoad:t,onError:n,apiKey:r,version:o,libraries:l=[]}=e,s=ti(e,Py),[a,u]=k.useState(Wo.loadingStatus),[c,f]=k.useReducer((S,w)=>S[w.name]?S:Gn({},S,{[w.name]:w.value}),{}),d=k.useMemo(()=>l==null?void 0:l.join(","),[l]),h=k.useMemo(()=>JSON.stringify(Gn({apiKey:r,version:o},s)),[r,o,s]),v=k.useCallback(async S=>{var w;if(c[S])return c[S];if(!((w=google)!=null&&(w=w.maps)!=null&&w.importLibrary))throw new Error("[api-provider-internal] importLibrary was called before google.maps.importLibrary was defined.");const E=await window.google.maps.importLibrary(S);return f({name:S,value:E}),E},[c]);return k.useEffect(()=>{(async()=>{try{const S=Gn({key:r},s);o&&(S.v=o),(d==null?void 0:d.length)>0&&(S.libraries=d),S.solutionChannel===void 0?S.solutionChannel=Ry:S.solutionChannel===""&&delete S.solutionChannel,await Wo.load(S,w=>u(w));for(const w of["core","maps",...l])await v(w);t&&t()}catch(S){n?n(S):console.error(" failed to load the Google Maps JavaScript API",S)}})()},[r,d,h]),{status:a,loadedLibraries:c,importLibrary:v}}const _y=e=>{const{children:t}=e,n=ti(e,Ay),{mapInstances:r,addMapInstance:o,removeMapInstance:l,clearMapInstances:s}=My(),{status:a,loadedLibraries:u,importLibrary:c}=by(n),f=k.useMemo(()=>({mapInstances:r,addMapInstance:o,removeMapInstance:l,clearMapInstances:s,status:a,loadedLibraries:u,importLibrary:c}),[r,o,l,s,a,u,c]);return $e.createElement(Ql.Provider,{value:f},t)};function $y(){var e;return((e=k.useContext(Ql))==null?void 0:e.status)||fn.NOT_LOADED}function Iy(){return $y()===fn.LOADED}const Ly=$e.createContext(null),Yf=new Set;function Ny(...e){const t=JSON.stringify(e);Yf.has(t)||(Yf.add(t),console.error(...e))}const Yh=(e=null)=>{const t=k.useContext(Ql),{map:n}=k.useContext(Ly)||{};if(t===null)return Ny("useMap(): failed to retrieve APIProviderContext. Make sure that the component exists and that the component you are calling `useMap()` from is a sibling of the ."),null;const{mapInstances:r}=t;return e!==null?r[e]||null:n||r.default||null};function Oy(e){const t=Iy(),n=k.useContext(Ql);return k.useEffect(()=>{!t||!n||n.importLibrary(e)},[t,n,e]),(n==null?void 0:n.loadedLibraries[e])||null}function _i(e,t,n){k.useEffect(()=>{if(!e||!t||!n)return;const r=google.maps.event.addListener(e,t,n);return()=>r.remove()},[e,t,n])}function $i(e,t,n){k.useEffect(()=>{e&&(e[t]=n)},[e,t,n])}function Zf(e,t,n){k.useEffect(()=>{if(!(!e||!t||!n))return e.addEventListener(t,n),()=>e.removeEventListener(t,n)},[e,t,n])}const zy=["transform"],Dy=$e.createContext(null),jy={TOP_LEFT:["0","0"],TOP_CENTER:["50%","0"],TOP:["50%","0"],TOP_RIGHT:["100%","0"],LEFT_CENTER:["0","50%"],LEFT_TOP:["0","0"],LEFT:["0","50%"],LEFT_BOTTOM:["0","100%"],RIGHT_TOP:["100%","0"],RIGHT:["100%","50%"],RIGHT_CENTER:["100%","50%"],RIGHT_BOTTOM:["100%","100%"],BOTTOM_LEFT:["0","100%"],BOTTOM_CENTER:["50%","100%"],BOTTOM:["50%","100%"],BOTTOM_RIGHT:["100%","100%"],CENTER:["50%","50%"]},By=({children:e,styles:t,className:n,anchorPoint:r})=>{const[o,l]=r??jy.BOTTOM,s=t??{},{transform:a}=s,u=ti(s,zy);let c=`translate(-${o}, -${l})`;return a&&(c+=` ${a}`),$e.createElement("div",{className:n,style:Gn({width:"fit-content",transformOrigin:`${o} ${l}`,transform:c},u)},e)};function Fy(e){const[t,n]=k.useState(null),[r,o]=k.useState(null),l=Yh(),s=Oy("marker"),{children:a,onClick:u,className:c,onMouseEnter:f,onMouseLeave:d,onDrag:h,onDragStart:v,onDragEnd:S,collisionBehavior:w,clickable:E,draggable:g,position:m,title:y,zIndex:x}=e,C=k.Children.count(a);return k.useEffect(()=>{if(!l||!s)return;const T=new s.AdvancedMarkerElement;T.map=l,n(T);let P=null;return C>0&&(P=document.createElement("div"),P.style.width="0",P.style.height="0",T.content=P,o(P)),()=>{var R;T.map=null,(R=P)==null||R.remove(),n(null),o(null)}},[l,s,C]),k.useEffect(()=>{!t||!t.content||C>0||(t.content.className=c||"")},[t,c,C]),$i(t,"position",m),$i(t,"title",y??""),$i(t,"zIndex",x),$i(t,"collisionBehavior",w),k.useEffect(()=>{t&&(g!==void 0?t.gmpDraggable=g:h||v||S?t.gmpDraggable=!0:t.gmpDraggable=!1)},[t,g,h,S,v]),k.useEffect(()=>{t&&(E!==void 0?t.gmpClickable=E:u?t.gmpClickable=!0:t.gmpClickable=!1)},[t,E,u]),_i(t,"click",u),_i(t,"drag",h),_i(t,"dragstart",v),_i(t,"dragend",S),Zf(t==null?void 0:t.element,"mouseenter",f),Zf(t==null?void 0:t.element,"mouseleave",d),[t,r]}k.forwardRef((e,t)=>{const{children:n,style:r,className:o,anchorPoint:l}=e,[s,a]=Fy(e),u=k.useMemo(()=>s?{marker:s}:null,[s]);return k.useImperativeHandle(t,()=>s,[s]),a?$e.createElement(Dy.Provider,{value:u},Xh.createPortal($e.createElement(By,{anchorPoint:l,styles:r,className:o},n),a)):null});const Uy=["onClick","onDrag","onDragStart","onDragEnd","onMouseOver","onMouseOut"];function Vy(e){const[t,n]=k.useState(null),r=Yh(),{onClick:o,onDrag:l,onDragStart:s,onDragEnd:a,onMouseOver:u,onMouseOut:c}=e,f=ti(e,Uy),{position:d,draggable:h}=f;return k.useEffect(()=>{if(!r){r===void 0&&console.error(" has to be inside a Map component.");return}const v=new google.maps.Marker(f);return v.setMap(r),n(v),()=>{v.setMap(null),n(null)}},[r]),k.useEffect(()=>{if(!t)return;const v=t,S=google.maps.event;return o&&S.addListener(v,"click",o),l&&S.addListener(v,"drag",l),s&&S.addListener(v,"dragstart",s),a&&S.addListener(v,"dragend",a),u&&S.addListener(v,"mouseover",u),c&&S.addListener(v,"mouseout",c),t.setDraggable(!!h),()=>{S.clearInstanceListeners(v)}},[t,h,o,l,s,a,u,c]),k.useEffect(()=>{t&&f&&t.setOptions(f)},[t,f]),k.useEffect(()=>{h||!d||!t||t.setPosition(d)},[h,d,t]),t}k.forwardRef((e,t)=>{const n=Vy(e);return k.useImperativeHandle(t,()=>n,[n]),$e.createElement($e.Fragment,null)});function Wy(e,t,n,r){function o(l){return l instanceof n?l:new n(function(s){s(l)})}return new(n||(n=Promise))(function(l,s){function a(f){try{c(r.next(f))}catch(d){s(d)}}function u(f){try{c(r.throw(f))}catch(d){s(d)}}function c(f){f.done?l(f.value):o(f.value).then(a,u)}c((r=r.apply(e,[])).next())})}function Hy(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ky=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var r,o,l;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(o=r;o--!==0;)if(!e(t[o],n[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(l=Object.keys(t),r=l.length,r!==Object.keys(n).length)return!1;for(o=r;o--!==0;)if(!Object.prototype.hasOwnProperty.call(n,l[o]))return!1;for(o=r;o--!==0;){var s=l[o];if(!e(t[s],n[s]))return!1}return!0}return t!==t&&n!==n},Gy=Hy(Ky);const Jf="__googleMapsScriptId";var Pr;(function(e){e[e.INITIALIZED=0]="INITIALIZED",e[e.LOADING=1]="LOADING",e[e.SUCCESS=2]="SUCCESS",e[e.FAILURE=3]="FAILURE"})(Pr||(Pr={}));class jn{constructor({apiKey:t,authReferrerPolicy:n,channel:r,client:o,id:l=Jf,language:s,libraries:a=[],mapIds:u,nonce:c,region:f,retries:d=3,url:h="https://maps.googleapis.com/maps/api/js",version:v}){if(this.callbacks=[],this.done=!1,this.loading=!1,this.errors=[],this.apiKey=t,this.authReferrerPolicy=n,this.channel=r,this.client=o,this.id=l||Jf,this.language=s,this.libraries=a,this.mapIds=u,this.nonce=c,this.region=f,this.retries=d,this.url=h,this.version=v,jn.instance){if(!Gy(this.options,jn.instance.options))throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(jn.instance.options)}`);return jn.instance}jn.instance=this}get options(){return{version:this.version,apiKey:this.apiKey,channel:this.channel,client:this.client,id:this.id,libraries:this.libraries,language:this.language,region:this.region,mapIds:this.mapIds,nonce:this.nonce,url:this.url,authReferrerPolicy:this.authReferrerPolicy}}get status(){return this.errors.length?Pr.FAILURE:this.done?Pr.SUCCESS:this.loading?Pr.LOADING:Pr.INITIALIZED}get failed(){return this.done&&!this.loading&&this.errors.length>=this.retries+1}createUrl(){let t=this.url;return t+="?callback=__googleMapsCallback&loading=async",this.apiKey&&(t+=`&key=${this.apiKey}`),this.channel&&(t+=`&channel=${this.channel}`),this.client&&(t+=`&client=${this.client}`),this.libraries.length>0&&(t+=`&libraries=${this.libraries.join(",")}`),this.language&&(t+=`&language=${this.language}`),this.region&&(t+=`®ion=${this.region}`),this.version&&(t+=`&v=${this.version}`),this.mapIds&&(t+=`&map_ids=${this.mapIds.join(",")}`),this.authReferrerPolicy&&(t+=`&auth_referrer_policy=${this.authReferrerPolicy}`),t}deleteScript(){const t=document.getElementById(this.id);t&&t.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((t,n)=>{this.loadCallback(r=>{r?n(r.error):t(window.google)})})}importLibrary(t){return this.execute(),google.maps.importLibrary(t)}loadCallback(t){this.callbacks.push(t),this.execute()}setScript(){var t,n;if(document.getElementById(this.id)){this.callback();return}const r={key:this.apiKey,channel:this.channel,client:this.client,libraries:this.libraries.length&&this.libraries,v:this.version,mapIds:this.mapIds,language:this.language,region:this.region,authReferrerPolicy:this.authReferrerPolicy};Object.keys(r).forEach(l=>!r[l]&&delete r[l]),!((n=(t=window==null?void 0:window.google)===null||t===void 0?void 0:t.maps)===null||n===void 0)&&n.importLibrary||(l=>{let s,a,u,c="The Google Maps JavaScript API",f="google",d="importLibrary",h="__ib__",v=document,S=window;S=S[f]||(S[f]={});const w=S.maps||(S.maps={}),E=new Set,g=new URLSearchParams,m=()=>s||(s=new Promise((y,x)=>Wy(this,void 0,void 0,function*(){var C;yield a=v.createElement("script"),a.id=this.id,g.set("libraries",[...E]+"");for(u in l)g.set(u.replace(/[A-Z]/g,T=>"_"+T[0].toLowerCase()),l[u]);g.set("callback",f+".maps."+h),a.src=this.url+"?"+g,w[h]=y,a.onerror=()=>s=x(Error(c+" could not load.")),a.nonce=this.nonce||((C=v.querySelector("script[nonce]"))===null||C===void 0?void 0:C.nonce)||"",v.head.append(a)})));w[d]?console.warn(c+" only loads once. Ignoring:",l):w[d]=(y,...x)=>E.add(y)&&m().then(()=>w[d](y,...x))})(r);const o=this.libraries.map(l=>this.importLibrary(l));o.length||o.push(this.importLibrary("core")),Promise.all(o).then(()=>this.callback(),l=>{const s=new ErrorEvent("error",{error:l});this.loadErrorCallback(s)})}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.errors=[],this.onerrorEvent=null}resetIfRetryingFailed(){this.failed&&this.reset()}loadErrorCallback(t){if(this.errors.push(t),this.errors.length<=this.retries){const n=this.errors.length*Math.pow(2,this.errors.length);console.error(`Failed to load Google Maps script, retrying in ${n} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript()},n)}else this.onerrorEvent=t,this.callback()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(t=>{t(this.onerrorEvent)}),this.callbacks=[]}execute(){if(this.resetIfRetryingFailed(),!this.loading)if(this.done)this.callback();else{if(window.google&&window.google.maps&&window.google.maps.version){console.warn("Google Maps already loaded outside @googlemaps/js-api-loader. This may result in undesirable behavior as options and script parameters may not match."),this.callback();return}this.loading=!0,this.setScript()}}}var ee={};/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var uc=Symbol.for("react.element"),cc=Symbol.for("react.portal"),Yl=Symbol.for("react.fragment"),Zl=Symbol.for("react.strict_mode"),Jl=Symbol.for("react.profiler"),ql=Symbol.for("react.provider"),es=Symbol.for("react.context"),Xy=Symbol.for("react.server_context"),ts=Symbol.for("react.forward_ref"),ns=Symbol.for("react.suspense"),rs=Symbol.for("react.suspense_list"),os=Symbol.for("react.memo"),is=Symbol.for("react.lazy"),Qy=Symbol.for("react.offscreen"),Zh;Zh=Symbol.for("react.module.reference");function Ct(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case uc:switch(e=e.type,e){case Yl:case Jl:case Zl:case ns:case rs:return e;default:switch(e=e&&e.$$typeof,e){case Xy:case es:case ts:case is:case os:case ql:return e;default:return t}}case cc:return t}}}ee.ContextConsumer=es;ee.ContextProvider=ql;ee.Element=uc;ee.ForwardRef=ts;ee.Fragment=Yl;ee.Lazy=is;ee.Memo=os;ee.Portal=cc;ee.Profiler=Jl;ee.StrictMode=Zl;ee.Suspense=ns;ee.SuspenseList=rs;ee.isAsyncMode=function(){return!1};ee.isConcurrentMode=function(){return!1};ee.isContextConsumer=function(e){return Ct(e)===es};ee.isContextProvider=function(e){return Ct(e)===ql};ee.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===uc};ee.isForwardRef=function(e){return Ct(e)===ts};ee.isFragment=function(e){return Ct(e)===Yl};ee.isLazy=function(e){return Ct(e)===is};ee.isMemo=function(e){return Ct(e)===os};ee.isPortal=function(e){return Ct(e)===cc};ee.isProfiler=function(e){return Ct(e)===Jl};ee.isStrictMode=function(e){return Ct(e)===Zl};ee.isSuspense=function(e){return Ct(e)===ns};ee.isSuspenseList=function(e){return Ct(e)===rs};ee.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===Yl||e===Jl||e===Zl||e===ns||e===rs||e===Qy||typeof e=="object"&&e!==null&&(e.$$typeof===is||e.$$typeof===os||e.$$typeof===ql||e.$$typeof===es||e.$$typeof===ts||e.$$typeof===Zh||e.getModuleId!==void 0)};ee.typeOf=Ct;function Jh(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;tk.useContext(Yy)??!1;function Zy(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function El(...e){return k.useMemo(()=>e.every(t=>t==null)?null:t=>{e.forEach(n=>{Zy(n,t)})},e)}function Jy(e){return typeof e=="string"}function qy(e,t,n){return e===void 0||Jy(e)?t:{...t,ownerState:{...t.ownerState,...n}}}function ev(e,t=[]){if(e===void 0)return{};const n={};return Object.keys(e).filter(r=>r.match(/^on[A-Z]/)&&typeof e[r]=="function"&&!t.includes(r)).forEach(r=>{n[r]=e[r]}),n}function qf(e){if(e===void 0)return{};const t={};return Object.keys(e).filter(n=>!(n.match(/^on[A-Z]/)&&typeof e[n]=="function")).forEach(n=>{t[n]=e[n]}),t}function tv(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:o,className:l}=e;if(!t){const v=de(n==null?void 0:n.className,l,o==null?void 0:o.className,r==null?void 0:r.className),S={...n==null?void 0:n.style,...o==null?void 0:o.style,...r==null?void 0:r.style},w={...n,...o,...r};return v.length>0&&(w.className=v),Object.keys(S).length>0&&(w.style=S),{props:w,internalRef:void 0}}const s=ev({...o,...r}),a=qf(r),u=qf(o),c=t(s),f=de(c==null?void 0:c.className,n==null?void 0:n.className,l,o==null?void 0:o.className,r==null?void 0:r.className),d={...c==null?void 0:c.style,...n==null?void 0:n.style,...o==null?void 0:o.style,...r==null?void 0:r.style},h={...c,...n,...u,...a};return f.length>0&&(h.className=f),Object.keys(d).length>0&&(h.style=d),{props:h,internalRef:c.ref}}function nv(e,t,n){return typeof e=="function"?e(t,n):e}function Tl(e){var d;const{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:o=!1,...l}=e,s=o?{}:nv(n,r),{props:a,internalRef:u}=tv({...l,externalSlotProps:s}),c=El(u,s==null?void 0:s.ref,(d=e.additionalProps)==null?void 0:d.ref);return qy(t,{...a,ref:c},r)}function qn(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(r=>n.searchParams.append("args[]",r)),`Minified MUI error #${e}; visit ${n} for the full message.`}function En(e){if(typeof e!="string")throw new Error(qn(7));return e.charAt(0).toUpperCase()+e.slice(1)}function Bt(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function em(e){if(!Bt(e))return e;const t={};return Object.keys(e).forEach(n=>{t[n]=em(e[n])}),t}function it(e,t,n={clone:!0}){const r=n.clone?{...e}:e;return Bt(e)&&Bt(t)&&Object.keys(t).forEach(o=>{Bt(t[o])&&Object.prototype.hasOwnProperty.call(e,o)&&Bt(e[o])?r[o]=it(e[o],t[o],n):n.clone?r[o]=Bt(t[o])?em(t[o]):t[o]:r[o]=t[o]}),r}function Po(e,t){return t?it(e,t,{clone:!1}):e}function rv(e,t){if(!e.containerQueries)return t;const n=Object.keys(t).filter(r=>r.startsWith("@container")).sort((r,o)=>{var s,a;const l=/min-width:\s*([0-9.]+)/;return+(((s=r.match(l))==null?void 0:s[1])||0)-+(((a=o.match(l))==null?void 0:a[1])||0)});return n.length?n.reduce((r,o)=>{const l=t[o];return delete r[o],r[o]=l,r},{...t}):t}function ov(e,t){return t==="@"||t.startsWith("@")&&(e.some(n=>t.startsWith(`@${n}`))||!!t.match(/^@\d/))}function iv(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,o]=n,l=Number.isNaN(+r)?r||0:+r;return e.containerQueries(o).up(l)}function lv(e){const t=(l,s)=>l.replace("@media",s?`@container ${s}`:"@container");function n(l,s){l.up=(...a)=>t(e.breakpoints.up(...a),s),l.down=(...a)=>t(e.breakpoints.down(...a),s),l.between=(...a)=>t(e.breakpoints.between(...a),s),l.only=(...a)=>t(e.breakpoints.only(...a),s),l.not=(...a)=>{const u=t(e.breakpoints.not(...a),s);return u.includes("not all and")?u.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):u}}const r={},o=l=>(n(r,l),r);return n(o),{...e,containerQueries:o}}const ls={xs:0,sm:600,md:900,lg:1200,xl:1536},ed={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${ls[e]}px)`},sv={containerQueries:e=>({up:t=>{let n=typeof t=="number"?t:ls[t]||t;return typeof n=="number"&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function en(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const l=r.breakpoints||ed;return t.reduce((s,a,u)=>(s[l.up(l.keys[u])]=n(t[u]),s),{})}if(typeof t=="object"){const l=r.breakpoints||ed;return Object.keys(t).reduce((s,a)=>{if(ov(l.keys,a)){const u=iv(r.containerQueries?r:sv,a);u&&(s[u]=n(t[a],a))}else if(Object.keys(l.values||ls).includes(a)){const u=l.up(a);s[u]=n(t[a],a)}else{const u=a;s[u]=t[u]}return s},{})}return n(t)}function av(e={}){var n;return((n=e.keys)==null?void 0:n.reduce((r,o)=>{const l=e.up(o);return r[l]={},r},{}))||{}}function uv(e,t){return e.reduce((n,r)=>{const o=n[r];return(!o||Object.keys(o).length===0)&&delete n[r],n},t)}function ss(e,t,n=!0){if(!t||typeof t!="string")return null;if(e&&e.vars&&n){const r=`vars.${t}`.split(".").reduce((o,l)=>o&&o[l]?o[l]:null,e);if(r!=null)return r}return t.split(".").reduce((r,o)=>r&&r[o]!=null?r[o]:null,e)}function Pl(e,t,n,r=n){let o;return typeof e=="function"?o=e(n):Array.isArray(e)?o=e[n]||r:o=ss(e,n)||r,t&&(o=t(o,r,e)),o}function xe(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:o}=e,l=s=>{if(s[t]==null)return null;const a=s[t],u=s.theme,c=ss(u,r)||{};return en(s,a,d=>{let h=Pl(c,o,d);return d===h&&typeof d=="string"&&(h=Pl(c,o,`${t}${d==="default"?"":En(d)}`,d)),n===!1?h:{[n]:h}})};return l.propTypes={},l.filterProps=[t],l}function cv(e){const t={};return n=>(t[n]===void 0&&(t[n]=e(n)),t[n])}const fv={m:"margin",p:"padding"},dv={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},td={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},pv=cv(e=>{if(e.length>2)if(td[e])e=td[e];else return[e];const[t,n]=e.split(""),r=fv[t],o=dv[n]||"";return Array.isArray(o)?o.map(l=>r+l):[r+o]}),fc=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],dc=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...fc,...dc];function ni(e,t,n,r){const o=ss(e,t,!0)??n;return typeof o=="number"||typeof o=="string"?l=>typeof l=="string"?l:typeof o=="string"?`calc(${l} * ${o})`:o*l:Array.isArray(o)?l=>{if(typeof l=="string")return l;const s=Math.abs(l),a=o[s];return l>=0?a:typeof a=="number"?-a:`-${a}`}:typeof o=="function"?o:()=>{}}function pc(e){return ni(e,"spacing",8)}function ri(e,t){return typeof t=="string"||t==null?t:e(t)}function hv(e,t){return n=>e.reduce((r,o)=>(r[o]=ri(t,n),r),{})}function mv(e,t,n,r){if(!t.includes(n))return null;const o=pv(n),l=hv(o,r),s=e[n];return en(e,s,l)}function tm(e,t){const n=pc(e.theme);return Object.keys(e).map(r=>mv(e,t,r,n)).reduce(Po,{})}function ge(e){return tm(e,fc)}ge.propTypes={};ge.filterProps=fc;function ye(e){return tm(e,dc)}ye.propTypes={};ye.filterProps=dc;function as(...e){const t=e.reduce((r,o)=>(o.filterProps.forEach(l=>{r[l]=o}),r),{}),n=r=>Object.keys(r).reduce((o,l)=>t[l]?Po(o,t[l](r)):o,{});return n.propTypes={},n.filterProps=e.reduce((r,o)=>r.concat(o.filterProps),[]),n}function yt(e){return typeof e!="number"?e:`${e}px solid`}function kt(e,t){return xe({prop:e,themeKey:"borders",transform:t})}const gv=kt("border",yt),yv=kt("borderTop",yt),vv=kt("borderRight",yt),Sv=kt("borderBottom",yt),wv=kt("borderLeft",yt),xv=kt("borderColor"),Cv=kt("borderTopColor"),kv=kt("borderRightColor"),Ev=kt("borderBottomColor"),Tv=kt("borderLeftColor"),Pv=kt("outline",yt),Av=kt("outlineColor"),us=e=>{if(e.borderRadius!==void 0&&e.borderRadius!==null){const t=ni(e.theme,"shape.borderRadius",4),n=r=>({borderRadius:ri(t,r)});return en(e,e.borderRadius,n)}return null};us.propTypes={};us.filterProps=["borderRadius"];as(gv,yv,vv,Sv,wv,xv,Cv,kv,Ev,Tv,us,Pv,Av);const cs=e=>{if(e.gap!==void 0&&e.gap!==null){const t=ni(e.theme,"spacing",8),n=r=>({gap:ri(t,r)});return en(e,e.gap,n)}return null};cs.propTypes={};cs.filterProps=["gap"];const fs=e=>{if(e.columnGap!==void 0&&e.columnGap!==null){const t=ni(e.theme,"spacing",8),n=r=>({columnGap:ri(t,r)});return en(e,e.columnGap,n)}return null};fs.propTypes={};fs.filterProps=["columnGap"];const ds=e=>{if(e.rowGap!==void 0&&e.rowGap!==null){const t=ni(e.theme,"spacing",8),n=r=>({rowGap:ri(t,r)});return en(e,e.rowGap,n)}return null};ds.propTypes={};ds.filterProps=["rowGap"];const Rv=xe({prop:"gridColumn"}),Mv=xe({prop:"gridRow"}),bv=xe({prop:"gridAutoFlow"}),_v=xe({prop:"gridAutoColumns"}),$v=xe({prop:"gridAutoRows"}),Iv=xe({prop:"gridTemplateColumns"}),Lv=xe({prop:"gridTemplateRows"}),Nv=xe({prop:"gridTemplateAreas"}),Ov=xe({prop:"gridArea"});as(cs,fs,ds,Rv,Mv,bv,_v,$v,Iv,Lv,Nv,Ov);function Lr(e,t){return t==="grey"?t:e}const zv=xe({prop:"color",themeKey:"palette",transform:Lr}),Dv=xe({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:Lr}),jv=xe({prop:"backgroundColor",themeKey:"palette",transform:Lr});as(zv,Dv,jv);function nt(e){return e<=1&&e!==0?`${e*100}%`:e}const Bv=xe({prop:"width",transform:nt}),hc=e=>{if(e.maxWidth!==void 0&&e.maxWidth!==null){const t=n=>{var o,l,s,a,u;const r=((s=(l=(o=e.theme)==null?void 0:o.breakpoints)==null?void 0:l.values)==null?void 0:s[n])||ls[n];return r?((u=(a=e.theme)==null?void 0:a.breakpoints)==null?void 0:u.unit)!=="px"?{maxWidth:`${r}${e.theme.breakpoints.unit}`}:{maxWidth:r}:{maxWidth:nt(n)}};return en(e,e.maxWidth,t)}return null};hc.filterProps=["maxWidth"];const Fv=xe({prop:"minWidth",transform:nt}),Uv=xe({prop:"height",transform:nt}),Vv=xe({prop:"maxHeight",transform:nt}),Wv=xe({prop:"minHeight",transform:nt});xe({prop:"size",cssProperty:"width",transform:nt});xe({prop:"size",cssProperty:"height",transform:nt});const Hv=xe({prop:"boxSizing"});as(Bv,hc,Fv,Uv,Vv,Wv,Hv);const oi={border:{themeKey:"borders",transform:yt},borderTop:{themeKey:"borders",transform:yt},borderRight:{themeKey:"borders",transform:yt},borderBottom:{themeKey:"borders",transform:yt},borderLeft:{themeKey:"borders",transform:yt},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:yt},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:us},color:{themeKey:"palette",transform:Lr},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:Lr},backgroundColor:{themeKey:"palette",transform:Lr},p:{style:ye},pt:{style:ye},pr:{style:ye},pb:{style:ye},pl:{style:ye},px:{style:ye},py:{style:ye},padding:{style:ye},paddingTop:{style:ye},paddingRight:{style:ye},paddingBottom:{style:ye},paddingLeft:{style:ye},paddingX:{style:ye},paddingY:{style:ye},paddingInline:{style:ye},paddingInlineStart:{style:ye},paddingInlineEnd:{style:ye},paddingBlock:{style:ye},paddingBlockStart:{style:ye},paddingBlockEnd:{style:ye},m:{style:ge},mt:{style:ge},mr:{style:ge},mb:{style:ge},ml:{style:ge},mx:{style:ge},my:{style:ge},margin:{style:ge},marginTop:{style:ge},marginRight:{style:ge},marginBottom:{style:ge},marginLeft:{style:ge},marginX:{style:ge},marginY:{style:ge},marginInline:{style:ge},marginInlineStart:{style:ge},marginInlineEnd:{style:ge},marginBlock:{style:ge},marginBlockStart:{style:ge},marginBlockEnd:{style:ge},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:cs},rowGap:{style:ds},columnGap:{style:fs},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:nt},maxWidth:{style:hc},minWidth:{transform:nt},height:{transform:nt},maxHeight:{transform:nt},minHeight:{transform:nt},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}};function Kv(...e){const t=e.reduce((r,o)=>r.concat(Object.keys(o)),[]),n=new Set(t);return e.every(r=>n.size===Object.keys(r).length)}function Gv(e,t){return typeof e=="function"?e(t):e}function Xv(){function e(n,r,o,l){const s={[n]:r,theme:o},a=l[n];if(!a)return{[n]:r};const{cssProperty:u=n,themeKey:c,transform:f,style:d}=a;if(r==null)return null;if(c==="typography"&&r==="inherit")return{[n]:r};const h=ss(o,c)||{};return d?d(s):en(s,r,S=>{let w=Pl(h,f,S);return S===w&&typeof S=="string"&&(w=Pl(h,f,`${n}${S==="default"?"":En(S)}`,S)),u===!1?w:{[u]:w}})}function t(n){const{sx:r,theme:o={}}=n||{};if(!r)return null;const l=o.unstable_sxConfig??oi;function s(a){let u=a;if(typeof a=="function")u=a(o);else if(typeof a!="object")return a;if(!u)return null;const c=av(o.breakpoints),f=Object.keys(c);let d=c;return Object.keys(u).forEach(h=>{const v=Gv(u[h],o);if(v!=null)if(typeof v=="object")if(l[h])d=Po(d,e(h,v,o,l));else{const S=en({theme:o},v,w=>({[h]:w}));Kv(S,v)?d[h]=t({sx:v,theme:o}):d=Po(d,S)}else d=Po(d,e(h,v,o,l))}),rv(o,uv(f,d))}return Array.isArray(r)?r.map(s):s(r)}return t}const er=Xv();er.filterProps=["sx"];const Qv=e=>{var r;const t={systemProps:{},otherProps:{}},n=((r=e==null?void 0:e.theme)==null?void 0:r.unstable_sxConfig)??oi;return Object.keys(e).forEach(o=>{n[o]?t.systemProps[o]=e[o]:t.otherProps[o]=e[o]}),t};function Yv(e){const{sx:t,...n}=e,{systemProps:r,otherProps:o}=Qv(n);let l;return Array.isArray(t)?l=[r,...t]:typeof t=="function"?l=(...s)=>{const a=t(...s);return Bt(a)?{...r,...a}:r}:l={...r,...t},{...o,sx:l}}function Ne(){return Ne=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?_e(Xr,--qe):0,Vr--,Ce===10&&(Vr=1,hs--),Ce}function lt(){return Ce=qe2||Ko(Ce)>3?"":" "}function p1(e,t){for(;--t&<()&&!(Ce<48||Ce>102||Ce>57&&Ce<65||Ce>70&&Ce<97););return ii(e,Yi()+(t<6&&Vt()==32&<()==32))}function su(e){for(;lt();)switch(Ce){case e:return qe;case 34:case 39:e!==34&&e!==39&&su(Ce);break;case 40:e===41&&su(e);break;case 92:lt();break}return qe}function h1(e,t){for(;lt()&&e+Ce!==57;)if(e+Ce===84&&Vt()===47)break;return"/*"+ii(t,qe-1)+"*"+ps(e===47?e:lt())}function m1(e){for(;!Ko(Vt());)lt();return ii(e,qe)}function g1(e){return am(Ji("",null,null,null,[""],e=sm(e),0,[0],e))}function Ji(e,t,n,r,o,l,s,a,u){for(var c=0,f=0,d=s,h=0,v=0,S=0,w=1,E=1,g=1,m=0,y="",x=o,C=l,T=r,P=y;E;)switch(S=m,m=lt()){case 40:if(S!=108&&_e(P,d-1)==58){lu(P+=Q(Zi(m),"&","&\f"),"&\f")!=-1&&(g=-1);break}case 34:case 39:case 91:P+=Zi(m);break;case 9:case 10:case 13:case 32:P+=d1(S);break;case 92:P+=p1(Yi()-1,7);continue;case 47:switch(Vt()){case 42:case 47:Ii(y1(h1(lt(),Yi()),t,n),u);break;default:P+="/"}break;case 123*w:a[c++]=zt(P)*g;case 125*w:case 59:case 0:switch(m){case 0:case 125:E=0;case 59+f:g==-1&&(P=Q(P,/\f/g,"")),v>0&&zt(P)-d&&Ii(v>32?rd(P+";",r,n,d-1):rd(Q(P," ","")+";",r,n,d-2),u);break;case 59:P+=";";default:if(Ii(T=nd(P,t,n,c,f,o,a,y,x=[],C=[],d),l),m===123)if(f===0)Ji(P,t,T,T,x,l,d,a,C);else switch(h===99&&_e(P,3)===110?100:h){case 100:case 108:case 109:case 115:Ji(e,T,T,r&&Ii(nd(e,T,T,0,0,o,a,y,o,x=[],d),C),o,C,d,a,r?x:C);break;default:Ji(P,T,T,T,[""],C,0,a,C)}}c=f=v=0,w=g=1,y=P="",d=s;break;case 58:d=1+zt(P),v=S;default:if(w<1){if(m==123)--w;else if(m==125&&w++==0&&f1()==125)continue}switch(P+=ps(m),m*w){case 38:g=f>0?1:(P+="\f",-1);break;case 44:a[c++]=(zt(P)-1)*g,g=1;break;case 64:Vt()===45&&(P+=Zi(lt())),h=Vt(),f=d=zt(y=P+=m1(Yi())),m++;break;case 45:S===45&&zt(P)==2&&(w=0)}}return l}function nd(e,t,n,r,o,l,s,a,u,c,f){for(var d=o-1,h=o===0?l:[""],v=yc(h),S=0,w=0,E=0;S0?h[g]+" "+m:Q(m,/&\f/g,h[g])))&&(u[E++]=y);return ms(e,t,n,o===0?mc:a,u,c,f)}function y1(e,t,n){return ms(e,t,n,rm,ps(c1()),Ho(e,2,-2),0)}function rd(e,t,n,r){return ms(e,t,n,gc,Ho(e,0,r),Ho(e,r+1,-1),r)}function Nr(e,t){for(var n="",r=yc(e),o=0;o6)switch(_e(e,t+1)){case 109:if(_e(e,t+4)!==45)break;case 102:return Q(e,/(.+:)(.+)-([^]+)/,"$1"+X+"$2-$3$1"+Al+(_e(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~lu(e,"stretch")?um(Q(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(_e(e,t+1)!==115)break;case 6444:switch(_e(e,zt(e)-3-(~lu(e,"!important")&&10))){case 107:return Q(e,":",":"+X)+e;case 101:return Q(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+X+(_e(e,14)===45?"inline-":"")+"box$3$1"+X+"$2$3$1"+je+"$2box$3")+e}break;case 5936:switch(_e(e,t+11)){case 114:return X+e+je+Q(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return X+e+je+Q(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return X+e+je+Q(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return X+e+je+e+e}return e}var P1=function(t,n,r,o){if(t.length>-1&&!t.return)switch(t.type){case gc:t.return=um(t.value,t.length);break;case om:return Nr([so(t,{value:Q(t.value,"@","@"+X)})],o);case mc:if(t.length)return u1(t.props,function(l){switch(a1(l,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Nr([so(t,{props:[Q(l,/:(read-\w+)/,":"+Al+"$1")]})],o);case"::placeholder":return Nr([so(t,{props:[Q(l,/:(plac\w+)/,":"+X+"input-$1")]}),so(t,{props:[Q(l,/:(plac\w+)/,":"+Al+"$1")]}),so(t,{props:[Q(l,/:(plac\w+)/,je+"input-$1")]})],o)}return""})}},A1=[P1],R1=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(w){var E=w.getAttribute("data-emotion");E.indexOf(" ")!==-1&&(document.head.appendChild(w),w.setAttribute("data-s",""))})}var o=t.stylisPlugins||A1,l={},s,a=[];s=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(w){for(var E=w.getAttribute("data-emotion").split(" "),g=1;g=4;++r,o-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(o){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var F1={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},U1=!1,V1=/[A-Z]|^ms/g,W1=/_EMO_([^_]+?)_([^]*?)_EMO_/g,mm=function(t){return t.charCodeAt(1)===45},id=function(t){return t!=null&&typeof t!="boolean"},ia=nm(function(e){return mm(e)?e:e.replace(V1,"-$&").toLowerCase()}),ld=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(W1,function(r,o,l){return Dt={name:o,styles:l,next:Dt},o})}return F1[t]!==1&&!mm(t)&&typeof n=="number"&&n!==0?n+"px":n},H1="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function Go(e,t,n){if(n==null)return"";var r=n;if(r.__emotion_styles!==void 0)return r;switch(typeof n){case"boolean":return"";case"object":{var o=n;if(o.anim===1)return Dt={name:o.name,styles:o.styles,next:Dt},o.name;var l=n;if(l.styles!==void 0){var s=l.next;if(s!==void 0)for(;s!==void 0;)Dt={name:s.name,styles:s.styles,next:Dt},s=s.next;var a=l.styles+";";return a}return K1(e,t,n)}case"function":{if(e!==void 0){var u=Dt,c=n(e);return Dt=u,Go(e,t,c)}break}}var f=n;if(t==null)return f;var d=t[f];return d!==void 0?d:f}function K1(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o96?J1:q1},ud=function(t,n,r){var o;if(n){var l=n.shouldForwardProp;o=t.__emotion_forwardProp&&l?function(s){return t.__emotion_forwardProp(s)&&l(s)}:l}return typeof o!="function"&&r&&(o=t.__emotion_forwardProp),o},eS=!1,tS=function(t){var n=t.cache,r=t.serialized,o=t.isStringTag;return hm(n,r,o),Q1(function(){return j1(n,r,o)}),null},nS=function e(t,n){var r=t.__emotion_real===t,o=r&&t.__emotion_base||t,l,s;n!==void 0&&(l=n.label,s=n.target);var a=ud(t,n,r),u=a||ad(o),c=!u("as");return function(){var f=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(l!==void 0&&d.push("label:"+l+";"),f[0]==null||f[0].raw===void 0)d.push.apply(d,f);else{d.push(f[0][0]);for(var h=f.length,v=1;v{const t=Object.keys(e).map(n=>({key:n,val:e[n]}))||[];return t.sort((n,r)=>n.val-r.val),t.reduce((n,r)=>({...n,[r.key]:r.val}),{})};function lS(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5,...o}=e,l=iS(t),s=Object.keys(l);function a(h){return`@media (min-width:${typeof t[h]=="number"?t[h]:h}${n})`}function u(h){return`@media (max-width:${(typeof t[h]=="number"?t[h]:h)-r/100}${n})`}function c(h,v){const S=s.indexOf(v);return`@media (min-width:${typeof t[h]=="number"?t[h]:h}${n}) and (max-width:${(S!==-1&&typeof t[s[S]]=="number"?t[s[S]]:v)-r/100}${n})`}function f(h){return s.indexOf(h)+1(r.length===0?[1]:r).map(l=>{const s=t(l);return typeof s=="number"?`${s}px`:s}).join(" ");return n.mui=!0,n}function aS(e,t){var r;const n=this;if(n.vars){if(!((r=n.colorSchemes)!=null&&r[e])||typeof n.getColorSchemeSelector!="function")return{};let o=n.getColorSchemeSelector(e);return o==="&"?t:((o.includes("data-")||o.includes("."))&&(o=`*:where(${o.replace(/\s*&$/,"")}) &`),{[o]:t})}return n.palette.mode===e?t:{}}function kc(e={},...t){const{breakpoints:n={},palette:r={},spacing:o,shape:l={},...s}=e,a=lS(n),u=Sm(o);let c=it({breakpoints:a,direction:"ltr",components:{},palette:{mode:"light",...r},spacing:u,shape:{...sS,...l}},s);return c=lv(c),c.applyStyles=aS,c=t.reduce((f,d)=>it(f,d),c),c.unstable_sxConfig={...oi,...s==null?void 0:s.unstable_sxConfig},c.unstable_sx=function(d){return er({sx:d,theme:this})},c}function uS(e){return Object.keys(e).length===0}function cS(e=null){const t=k.useContext(ym);return!t||uS(t)?e:t}const fS=kc();function Ec(e=fS){return cS(e)}const dd=e=>e,dS=()=>{let e=dd;return{configure(t){e=t},generate(t){return e(t)},reset(){e=dd}}},wm=dS();function pS(e={}){const{themeId:t,defaultTheme:n,defaultClassName:r="MuiBox-root",generateClassName:o}=e,l=vm("div",{shouldForwardProp:a=>a!=="theme"&&a!=="sx"&&a!=="as"})(er);return k.forwardRef(function(u,c){const f=Ec(n),{className:d,component:h="div",...v}=Yv(u);return $.jsx(l,{as:h,ref:c,className:de(d,o?o(r):r),theme:t&&f[t]||f,...v})})}const hS={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function or(e,t,n="Mui"){const r=hS[t];return r?`${n}-${r}`:`${wm.generate(e)}-${t}`}function Mn(e,t,n="Mui"){const r={};return t.forEach(o=>{r[o]=or(e,o,n)}),r}function xm(e){const{variants:t,...n}=e,r={variants:t,style:fd(n),isProcessed:!0};return r.style===n||t&&t.forEach(o=>{typeof o.style!="function"&&(o.style=fd(o.style))}),r}const mS=kc();function la(e){return e!=="ownerState"&&e!=="theme"&&e!=="sx"&&e!=="as"}function gS(e){return e?(t,n)=>n[e]:null}function yS(e,t,n){e.theme=wS(e.theme)?n:e.theme[t]||e.theme}function qi(e,t){const n=typeof t=="function"?t(e):t;if(Array.isArray(n))return n.flatMap(r=>qi(e,r));if(Array.isArray(n==null?void 0:n.variants)){let r;if(n.isProcessed)r=n.style;else{const{variants:o,...l}=n;r=l}return Cm(e,n.variants,[r])}return n!=null&&n.isProcessed?n.style:n}function Cm(e,t,n=[]){var o;let r;e:for(let l=0;l{oS(a,C=>C.filter(T=>T!==er));const{name:c,slot:f,skipVariantsResolver:d,skipSx:h,overridesResolver:v=gS(CS(f)),...S}=u,w=d!==void 0?d:f&&f!=="Root"&&f!=="root"||!1,E=h||!1;let g=la;f==="Root"||f==="root"?g=r:f?g=o:xS(a)&&(g=void 0);const m=vm(a,{shouldForwardProp:g,label:SS(),...S}),y=C=>{if(typeof C=="function"&&C.__emotion_real!==C)return function(P){return qi(P,C)};if(Bt(C)){const T=xm(C);return T.variants?function(R){return qi(R,T)}:T.style}return C},x=(...C)=>{const T=[],P=C.map(y),R=[];if(T.push(l),c&&v&&R.push(function(N){var te,se;const L=(se=(te=N.theme.components)==null?void 0:te[c])==null?void 0:se.styleOverrides;if(!L)return null;const K={};for(const I in L)K[I]=qi(N,L[I]);return v(N,K)}),c&&!w&&R.push(function(N){var K,te;const b=N.theme,L=(te=(K=b==null?void 0:b.components)==null?void 0:K[c])==null?void 0:te.variants;return L?Cm(N,L):null}),E||R.push(er),Array.isArray(P[0])){const M=P.shift(),N=new Array(T.length).fill(""),b=new Array(R.length).fill("");let L;L=[...N,...M,...b],L.raw=[...N,...M.raw,...b],T.unshift(L)}const z=[...T,...P,...R],p=m(...z);return a.muiName&&(p.muiName=a.muiName),p};return m.withConfig&&(x.withConfig=m.withConfig),x}}function SS(e,t){return void 0}function wS(e){for(const t in e)return!1;return!0}function xS(e){return typeof e=="string"&&e.charCodeAt(0)>96}function CS(e){return e&&e.charAt(0).toLowerCase()+e.slice(1)}function Rl(e,t){const n={...t};for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const o=r;if(o==="components"||o==="slots")n[o]={...e[o],...n[o]};else if(o==="componentsProps"||o==="slotProps"){const l=e[o],s=t[o];if(!s)n[o]=l||{};else if(!l)n[o]=s;else{n[o]={...s};for(const a in l)if(Object.prototype.hasOwnProperty.call(l,a)){const u=a;n[o][u]=Rl(l[u],s[u])}}}else n[o]===void 0&&(n[o]=e[o])}return n}function kS(e){const{theme:t,name:n,props:r}=e;return!t||!t.components||!t.components[n]||!t.components[n].defaultProps?r:Rl(t.components[n].defaultProps,r)}function ES({props:e,name:t,defaultTheme:n,themeId:r}){let o=Ec(n);return r&&(o=o[r]||o),kS({theme:o,name:t,props:e})}const Ml=typeof window<"u"?k.useLayoutEffect:k.useEffect;function TS(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}function Tc(e,t=0,n=1){return TS(e,t,n)}function PS(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&n[0].length===1&&(n=n.map(r=>r+r)),n?`rgb${n.length===4?"a":""}(${n.map((r,o)=>o<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3).join(", ")})`:""}function Tn(e){if(e.type)return e;if(e.charAt(0)==="#")return Tn(PS(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(qn(9,e));let r=e.substring(t+1,e.length-1),o;if(n==="color"){if(r=r.split(" "),o=r.shift(),r.length===4&&r[3].charAt(0)==="/"&&(r[3]=r[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(o))throw new Error(qn(10,o))}else r=r.split(",");return r=r.map(l=>parseFloat(l)),{type:n,values:r,colorSpace:o}}const AS=e=>{const t=Tn(e);return t.values.slice(0,3).map((n,r)=>t.type.includes("hsl")&&r!==0?`${n}%`:n).join(" ")},mo=(e,t)=>{try{return AS(e)}catch{return e}};function Ps(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.includes("rgb")?r=r.map((o,l)=>l<3?parseInt(o,10):o):t.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),t.includes("color")?r=`${n} ${r.join(" ")}`:r=`${r.join(", ")}`,`${t}(${r})`}function km(e){e=Tn(e);const{values:t}=e,n=t[0],r=t[1]/100,o=t[2]/100,l=r*Math.min(o,1-o),s=(c,f=(c+n/30)%12)=>o-l*Math.max(Math.min(f-3,9-f,1),-1);let a="rgb";const u=[Math.round(s(0)*255),Math.round(s(8)*255),Math.round(s(4)*255)];return e.type==="hsla"&&(a+="a",u.push(t[3])),Ps({type:a,values:u})}function uu(e){e=Tn(e);let t=e.type==="hsl"||e.type==="hsla"?Tn(km(e)).values:e.values;return t=t.map(n=>(e.type!=="color"&&(n/=255),n<=.03928?n/12.92:((n+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function RS(e,t){const n=uu(e),r=uu(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function MS(e,t){return e=Tn(e),t=Tc(t),(e.type==="rgb"||e.type==="hsl")&&(e.type+="a"),e.type==="color"?e.values[3]=`/${t}`:e.values[3]=t,Ps(e)}function Li(e,t,n){try{return MS(e,t)}catch{return e}}function Pc(e,t){if(e=Tn(e),t=Tc(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return Ps(e)}function ne(e,t,n){try{return Pc(e,t)}catch{return e}}function Ac(e,t){if(e=Tn(e),t=Tc(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return Ps(e)}function re(e,t,n){try{return Ac(e,t)}catch{return e}}function bS(e,t=.15){return uu(e)>.5?Pc(e,t):Ac(e,t)}function Ni(e,t,n){try{return bS(e,t)}catch{return e}}function Em(e,t=166){let n;function r(...o){const l=()=>{e.apply(this,o)};clearTimeout(n),n=setTimeout(l,t)}return r.clear=()=>{clearTimeout(n)},r}function Tm(e){return e&&e.ownerDocument||document}function Rc(e){return Tm(e).defaultView||window}let pd=0;function _S(e){const[t,n]=k.useState(e),r=t;return k.useEffect(()=>{t==null&&(pd+=1,n(`mui-${pd}`))},[t]),r}const $S={...pa},hd=$S.useId;function IS(e){return hd!==void 0?hd():_S(e)}function Vn(e){const t=k.useRef(e);return Ml(()=>{t.current=e}),k.useRef((...n)=>(0,t.current)(...n)).current}const md={};function Pm(e,t){const n=k.useRef(md);return n.current===md&&(n.current=e(t)),n}const LS=[];function NS(e){k.useEffect(e,LS)}class Mc{constructor(){Jr(this,"currentId",null);Jr(this,"clear",()=>{this.currentId!==null&&(clearTimeout(this.currentId),this.currentId=null)});Jr(this,"disposeEffect",()=>this.clear)}static create(){return new Mc}start(t,n){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,n()},t)}}function OS(){const e=Pm(Mc.create).current;return NS(e.disposeEffect),e}function gd(e){try{return e.matches(":focus-visible")}catch{}return!1}const zS=k.createContext(void 0);function DS(e){const{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;const o=t.components[n];return o.defaultProps?Rl(o.defaultProps,r):!o.styleOverrides&&!o.variants?Rl(o,r):r}function jS({props:e,name:t}){const n=k.useContext(zS);return DS({props:e,name:t,theme:{components:n}})}const yd={theme:void 0};function BS(e){let t,n;return function(o){let l=t;return(l===void 0||o.theme!==n)&&(yd.theme=o.theme,l=xm(e(yd)),t=l,n=o.theme),l}}function FS(e=""){function t(...r){if(!r.length)return"";const o=r[0];return typeof o=="string"&&!o.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, var(--${e?`${e}-`:""}${o}${t(...r.slice(1))})`:`, ${o}`}return(r,...o)=>`var(--${e?`${e}-`:""}${r}${t(...o)})`}const vd=(e,t,n,r=[])=>{let o=e;t.forEach((l,s)=>{s===t.length-1?Array.isArray(o)?o[Number(l)]=n:o&&typeof o=="object"&&(o[l]=n):o&&typeof o=="object"&&(o[l]||(o[l]=r.includes(l)?[]:{}),o=o[l])})},US=(e,t,n)=>{function r(o,l=[],s=[]){Object.entries(o).forEach(([a,u])=>{(!n||n&&!n([...l,a]))&&u!=null&&(typeof u=="object"&&Object.keys(u).length>0?r(u,[...l,a],Array.isArray(u)?[...s,a]:s):t([...l,a],u,s))})}r(e)},VS=(e,t)=>typeof t=="number"?["lineHeight","fontWeight","opacity","zIndex"].some(r=>e.includes(r))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t;function sa(e,t){const{prefix:n,shouldSkipGeneratingVar:r}=t||{},o={},l={},s={};return US(e,(a,u,c)=>{if((typeof u=="string"||typeof u=="number")&&(!r||!r(a,u))){const f=`--${n?`${n}-`:""}${a.join("-")}`,d=VS(a,u);Object.assign(o,{[f]:d}),vd(l,a,`var(${f})`,c),vd(s,a,`var(${f}, ${d})`,c)}},a=>a[0]==="vars"),{css:o,vars:l,varsWithDefaults:s}}function WS(e,t={}){const{getSelector:n=E,disableCssColorScheme:r,colorSchemeSelector:o}=t,{colorSchemes:l={},components:s,defaultColorScheme:a="light",...u}=e,{vars:c,css:f,varsWithDefaults:d}=sa(u,t);let h=d;const v={},{[a]:S,...w}=l;if(Object.entries(w||{}).forEach(([y,x])=>{const{vars:C,css:T,varsWithDefaults:P}=sa(x,t);h=it(h,P),v[y]={css:T,vars:C}}),S){const{css:y,vars:x,varsWithDefaults:C}=sa(S,t);h=it(h,C),v[a]={css:y,vars:x}}function E(y,x){var T,P;let C=o;if(o==="class"&&(C=".%s"),o==="data"&&(C="[data-%s]"),o!=null&&o.startsWith("data-")&&!o.includes("%s")&&(C=`[${o}="%s"]`),y){if(C==="media")return e.defaultColorScheme===y?":root":{[`@media (prefers-color-scheme: ${((P=(T=l[y])==null?void 0:T.palette)==null?void 0:P.mode)||y})`]:{":root":x}};if(C)return e.defaultColorScheme===y?`:root, ${C.replace("%s",String(y))}`:C.replace("%s",String(y))}return":root"}return{vars:h,generateThemeVars:()=>{let y={...c};return Object.entries(v).forEach(([,{vars:x}])=>{y=it(y,x)}),y},generateStyleSheets:()=>{var R,z;const y=[],x=e.defaultColorScheme||"light";function C(p,M){Object.keys(M).length&&y.push(typeof p=="string"?{[p]:{...M}}:p)}C(n(void 0,{...f}),f);const{[x]:T,...P}=v;if(T){const{css:p}=T,M=(z=(R=l[x])==null?void 0:R.palette)==null?void 0:z.mode,N=!r&&M?{colorScheme:M,...p}:{...p};C(n(x,{...N}),N)}return Object.entries(P).forEach(([p,{css:M}])=>{var L,K;const N=(K=(L=l[p])==null?void 0:L.palette)==null?void 0:K.mode,b=!r&&N?{colorScheme:N,...M}:{...M};C(n(p,{...b}),b)}),y}}}function HS(e){return function(n){return e==="media"?`@media (prefers-color-scheme: ${n})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${n}"] &`:e==="class"?`.${n} &`:e==="data"?`[data-${n}] &`:`${e.replace("%s",n)} &`:"&"}}const Xo={black:"#000",white:"#fff"},KS={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},ar={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},ur={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},ao={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},cr={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},fr={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},dr={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};function Am(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:Xo.white,default:Xo.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}const GS=Am();function Rm(){return{text:{primary:Xo.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:Xo.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}const Sd=Rm();function wd(e,t,n,r){const o=r.light||r,l=r.dark||r*1.5;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:t==="light"?e.light=Ac(e.main,o):t==="dark"&&(e.dark=Pc(e.main,l)))}function XS(e="light"){return e==="dark"?{main:cr[200],light:cr[50],dark:cr[400]}:{main:cr[700],light:cr[400],dark:cr[800]}}function QS(e="light"){return e==="dark"?{main:ar[200],light:ar[50],dark:ar[400]}:{main:ar[500],light:ar[300],dark:ar[700]}}function YS(e="light"){return e==="dark"?{main:ur[500],light:ur[300],dark:ur[700]}:{main:ur[700],light:ur[400],dark:ur[800]}}function ZS(e="light"){return e==="dark"?{main:fr[400],light:fr[300],dark:fr[700]}:{main:fr[700],light:fr[500],dark:fr[900]}}function JS(e="light"){return e==="dark"?{main:dr[400],light:dr[300],dark:dr[700]}:{main:dr[800],light:dr[500],dark:dr[900]}}function qS(e="light"){return e==="dark"?{main:ao[400],light:ao[300],dark:ao[700]}:{main:"#ed6c02",light:ao[500],dark:ao[900]}}function bc(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:r=.2,...o}=e,l=e.primary||XS(t),s=e.secondary||QS(t),a=e.error||YS(t),u=e.info||ZS(t),c=e.success||JS(t),f=e.warning||qS(t);function d(w){return RS(w,Sd.text.primary)>=n?Sd.text.primary:GS.text.primary}const h=({color:w,name:E,mainShade:g=500,lightShade:m=300,darkShade:y=700})=>{if(w={...w},!w.main&&w[g]&&(w.main=w[g]),!w.hasOwnProperty("main"))throw new Error(qn(11,E?` (${E})`:"",g));if(typeof w.main!="string")throw new Error(qn(12,E?` (${E})`:"",JSON.stringify(w.main)));return wd(w,"light",m,r),wd(w,"dark",y,r),w.contrastText||(w.contrastText=d(w.main)),w};let v;return t==="light"?v=Am():t==="dark"&&(v=Rm()),it({common:{...Xo},mode:t,primary:h({color:l,name:"primary"}),secondary:h({color:s,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:h({color:a,name:"error"}),warning:h({color:f,name:"warning"}),info:h({color:u,name:"info"}),success:h({color:c,name:"success"}),grey:KS,contrastThreshold:n,getContrastText:d,augmentColor:h,tonalOffset:r,...v},o)}function ew(e){const t={};return Object.entries(e).forEach(r=>{const[o,l]=r;typeof l=="object"&&(t[o]=`${l.fontStyle?`${l.fontStyle} `:""}${l.fontVariant?`${l.fontVariant} `:""}${l.fontWeight?`${l.fontWeight} `:""}${l.fontStretch?`${l.fontStretch} `:""}${l.fontSize||""}${l.lineHeight?`/${l.lineHeight} `:""}${l.fontFamily||""}`)}),t}function tw(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}function nw(e){return Math.round(e*1e5)/1e5}const xd={textTransform:"uppercase"},Cd='"Roboto", "Helvetica", "Arial", sans-serif';function rw(e,t){const{fontFamily:n=Cd,fontSize:r=14,fontWeightLight:o=300,fontWeightRegular:l=400,fontWeightMedium:s=500,fontWeightBold:a=700,htmlFontSize:u=16,allVariants:c,pxToRem:f,...d}=typeof t=="function"?t(e):t,h=r/14,v=f||(E=>`${E/u*h}rem`),S=(E,g,m,y,x)=>({fontFamily:n,fontWeight:E,fontSize:v(g),lineHeight:m,...n===Cd?{letterSpacing:`${nw(y/g)}em`}:{},...x,...c}),w={h1:S(o,96,1.167,-1.5),h2:S(o,60,1.2,-.5),h3:S(l,48,1.167,0),h4:S(l,34,1.235,.25),h5:S(l,24,1.334,0),h6:S(s,20,1.6,.15),subtitle1:S(l,16,1.75,.15),subtitle2:S(s,14,1.57,.1),body1:S(l,16,1.5,.15),body2:S(l,14,1.43,.15),button:S(s,14,1.75,.4,xd),caption:S(l,12,1.66,.4),overline:S(l,12,2.66,1,xd),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return it({htmlFontSize:u,pxToRem:v,fontFamily:n,fontSize:r,fontWeightLight:o,fontWeightRegular:l,fontWeightMedium:s,fontWeightBold:a,...w},d,{clone:!1})}const ow=.2,iw=.14,lw=.12;function ue(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${ow})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${iw})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${lw})`].join(",")}const sw=["none",ue(0,2,1,-1,0,1,1,0,0,1,3,0),ue(0,3,1,-2,0,2,2,0,0,1,5,0),ue(0,3,3,-2,0,3,4,0,0,1,8,0),ue(0,2,4,-1,0,4,5,0,0,1,10,0),ue(0,3,5,-1,0,5,8,0,0,1,14,0),ue(0,3,5,-1,0,6,10,0,0,1,18,0),ue(0,4,5,-2,0,7,10,1,0,2,16,1),ue(0,5,5,-3,0,8,10,1,0,3,14,2),ue(0,5,6,-3,0,9,12,1,0,3,16,2),ue(0,6,6,-3,0,10,14,1,0,4,18,3),ue(0,6,7,-4,0,11,15,1,0,4,20,3),ue(0,7,8,-4,0,12,17,2,0,5,22,4),ue(0,7,8,-4,0,13,19,2,0,5,24,4),ue(0,7,9,-4,0,14,21,2,0,5,26,4),ue(0,8,9,-5,0,15,22,2,0,6,28,5),ue(0,8,10,-5,0,16,24,2,0,6,30,5),ue(0,8,11,-5,0,17,26,2,0,6,32,5),ue(0,9,11,-5,0,18,28,2,0,7,34,6),ue(0,9,12,-6,0,19,29,2,0,7,36,6),ue(0,10,13,-6,0,20,31,3,0,8,38,7),ue(0,10,13,-6,0,21,33,3,0,8,40,7),ue(0,10,14,-6,0,22,35,3,0,8,42,7),ue(0,11,14,-7,0,23,36,3,0,9,44,8),ue(0,11,15,-7,0,24,38,3,0,9,46,8)],aw={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},uw={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function kd(e){return`${Math.round(e)}ms`}function cw(e){if(!e)return 0;const t=e/36;return Math.min(Math.round((4+15*t**.25+t/5)*10),3e3)}function fw(e){const t={...aw,...e.easing},n={...uw,...e.duration};return{getAutoHeightDuration:cw,create:(o=["all"],l={})=>{const{duration:s=n.standard,easing:a=t.easeInOut,delay:u=0,...c}=l;return(Array.isArray(o)?o:[o]).map(f=>`${f} ${typeof s=="string"?s:kd(s)} ${a} ${typeof u=="string"?u:kd(u)}`).join(",")},...e,easing:t,duration:n}}const dw={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function pw(e){return Bt(e)||typeof e>"u"||typeof e=="string"||typeof e=="boolean"||typeof e=="number"||Array.isArray(e)}function Mm(e={}){const t={...e};function n(r){const o=Object.entries(r);for(let l=0;lit(v,S),h),h.unstable_sxConfig={...oi,...c==null?void 0:c.unstable_sxConfig},h.unstable_sx=function(S){return er({sx:S,theme:this})},h.toRuntimeSource=Mm,h}function hw(e){let t;return e<1?t=5.11916*e**2:t=4.5*Math.log(e+1)+2,Math.round(t*10)/1e3}const mw=[...Array(25)].map((e,t)=>{if(t===0)return"none";const n=hw(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function bm(e){return{inputPlaceholder:e==="dark"?.5:.42,inputUnderline:e==="dark"?.7:.42,switchTrackDisabled:e==="dark"?.2:.12,switchTrack:e==="dark"?.3:.38}}function _m(e){return e==="dark"?mw:[]}function gw(e){const{palette:t={mode:"light"},opacity:n,overlays:r,...o}=e,l=bc(t);return{palette:l,opacity:{...bm(l.mode),...n},overlays:r||_m(l.mode),...o}}function yw(e){var t;return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||e[0]==="palette"&&!!((t=e[1])!=null&&t.match(/(mode|contrastThreshold|tonalOffset)/))}const vw=e=>[...[...Array(25)].map((t,n)=>`--${e?`${e}-`:""}overlays-${n}`),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`],Sw=e=>(t,n)=>{const r=e.rootSelector||":root",o=e.colorSchemeSelector;let l=o;if(o==="class"&&(l=".%s"),o==="data"&&(l="[data-%s]"),o!=null&&o.startsWith("data-")&&!o.includes("%s")&&(l=`[${o}="%s"]`),e.defaultColorScheme===t){if(t==="dark"){const s={};return vw(e.cssVarPrefix).forEach(a=>{s[a]=n[a],delete n[a]}),l==="media"?{[r]:n,"@media (prefers-color-scheme: dark)":{[r]:s}}:l?{[l.replace("%s",t)]:s,[`${r}, ${l.replace("%s",t)}`]:n}:{[r]:{...n,...s}}}if(l&&l!=="media")return`${r}, ${l.replace("%s",String(t))}`}else if(t){if(l==="media")return{[`@media (prefers-color-scheme: ${String(t)})`]:{[r]:n}};if(l)return l.replace("%s",String(t))}return r};function ww(e,t){t.forEach(n=>{e[n]||(e[n]={})})}function A(e,t,n){!e[t]&&n&&(e[t]=n)}function go(e){return!e||!e.startsWith("hsl")?e:km(e)}function Wt(e,t){`${t}Channel`in e||(e[`${t}Channel`]=mo(go(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color(). +To suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function xw(e){return typeof e=="number"?`${e}px`:typeof e=="string"||typeof e=="function"||Array.isArray(e)?e:"8px"}const Lt=e=>{try{return e()}catch{}},Cw=(e="mui")=>FS(e);function aa(e,t,n,r){if(!t)return;t=t===!0?{}:t;const o=r==="dark"?"dark":"light";if(!n){e[r]=gw({...t,palette:{mode:o,...t==null?void 0:t.palette}});return}const{palette:l,...s}=cu({...n,palette:{mode:o,...t==null?void 0:t.palette}});return e[r]={...t,palette:l,opacity:{...bm(o),...t==null?void 0:t.opacity},overlays:(t==null?void 0:t.overlays)||_m(o)},s}function kw(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:r,disableCssColorScheme:o=!1,cssVarPrefix:l="mui",shouldSkipGeneratingVar:s=yw,colorSchemeSelector:a=n.light&&n.dark?"media":void 0,rootSelector:u=":root",...c}=e,f=Object.keys(n)[0],d=r||(n.light&&f!=="light"?"light":f),h=Cw(l),{[d]:v,light:S,dark:w,...E}=n,g={...E};let m=v;if((d==="dark"&&!("dark"in n)||d==="light"&&!("light"in n))&&(m=!0),!m)throw new Error(qn(21,d));const y=aa(g,m,c,d);S&&!g.light&&aa(g,S,void 0,"light"),w&&!g.dark&&aa(g,w,void 0,"dark");let x={defaultColorScheme:d,...y,cssVarPrefix:l,colorSchemeSelector:a,rootSelector:u,getCssVar:h,colorSchemes:g,font:{...ew(y.typography),...y.font},spacing:xw(c.spacing)};Object.keys(x.colorSchemes).forEach(z=>{const p=x.colorSchemes[z].palette,M=N=>{const b=N.split("-"),L=b[1],K=b[2];return h(N,p[L][K])};if(p.mode==="light"&&(A(p.common,"background","#fff"),A(p.common,"onBackground","#000")),p.mode==="dark"&&(A(p.common,"background","#000"),A(p.common,"onBackground","#fff")),ww(p,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),p.mode==="light"){A(p.Alert,"errorColor",ne(p.error.light,.6)),A(p.Alert,"infoColor",ne(p.info.light,.6)),A(p.Alert,"successColor",ne(p.success.light,.6)),A(p.Alert,"warningColor",ne(p.warning.light,.6)),A(p.Alert,"errorFilledBg",M("palette-error-main")),A(p.Alert,"infoFilledBg",M("palette-info-main")),A(p.Alert,"successFilledBg",M("palette-success-main")),A(p.Alert,"warningFilledBg",M("palette-warning-main")),A(p.Alert,"errorFilledColor",Lt(()=>p.getContrastText(p.error.main))),A(p.Alert,"infoFilledColor",Lt(()=>p.getContrastText(p.info.main))),A(p.Alert,"successFilledColor",Lt(()=>p.getContrastText(p.success.main))),A(p.Alert,"warningFilledColor",Lt(()=>p.getContrastText(p.warning.main))),A(p.Alert,"errorStandardBg",re(p.error.light,.9)),A(p.Alert,"infoStandardBg",re(p.info.light,.9)),A(p.Alert,"successStandardBg",re(p.success.light,.9)),A(p.Alert,"warningStandardBg",re(p.warning.light,.9)),A(p.Alert,"errorIconColor",M("palette-error-main")),A(p.Alert,"infoIconColor",M("palette-info-main")),A(p.Alert,"successIconColor",M("palette-success-main")),A(p.Alert,"warningIconColor",M("palette-warning-main")),A(p.AppBar,"defaultBg",M("palette-grey-100")),A(p.Avatar,"defaultBg",M("palette-grey-400")),A(p.Button,"inheritContainedBg",M("palette-grey-300")),A(p.Button,"inheritContainedHoverBg",M("palette-grey-A100")),A(p.Chip,"defaultBorder",M("palette-grey-400")),A(p.Chip,"defaultAvatarColor",M("palette-grey-700")),A(p.Chip,"defaultIconColor",M("palette-grey-700")),A(p.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),A(p.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),A(p.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),A(p.LinearProgress,"primaryBg",re(p.primary.main,.62)),A(p.LinearProgress,"secondaryBg",re(p.secondary.main,.62)),A(p.LinearProgress,"errorBg",re(p.error.main,.62)),A(p.LinearProgress,"infoBg",re(p.info.main,.62)),A(p.LinearProgress,"successBg",re(p.success.main,.62)),A(p.LinearProgress,"warningBg",re(p.warning.main,.62)),A(p.Skeleton,"bg",`rgba(${M("palette-text-primaryChannel")} / 0.11)`),A(p.Slider,"primaryTrack",re(p.primary.main,.62)),A(p.Slider,"secondaryTrack",re(p.secondary.main,.62)),A(p.Slider,"errorTrack",re(p.error.main,.62)),A(p.Slider,"infoTrack",re(p.info.main,.62)),A(p.Slider,"successTrack",re(p.success.main,.62)),A(p.Slider,"warningTrack",re(p.warning.main,.62));const N=Ni(p.background.default,.8);A(p.SnackbarContent,"bg",N),A(p.SnackbarContent,"color",Lt(()=>p.getContrastText(N))),A(p.SpeedDialAction,"fabHoverBg",Ni(p.background.paper,.15)),A(p.StepConnector,"border",M("palette-grey-400")),A(p.StepContent,"border",M("palette-grey-400")),A(p.Switch,"defaultColor",M("palette-common-white")),A(p.Switch,"defaultDisabledColor",M("palette-grey-100")),A(p.Switch,"primaryDisabledColor",re(p.primary.main,.62)),A(p.Switch,"secondaryDisabledColor",re(p.secondary.main,.62)),A(p.Switch,"errorDisabledColor",re(p.error.main,.62)),A(p.Switch,"infoDisabledColor",re(p.info.main,.62)),A(p.Switch,"successDisabledColor",re(p.success.main,.62)),A(p.Switch,"warningDisabledColor",re(p.warning.main,.62)),A(p.TableCell,"border",re(Li(p.divider,1),.88)),A(p.Tooltip,"bg",Li(p.grey[700],.92))}if(p.mode==="dark"){A(p.Alert,"errorColor",re(p.error.light,.6)),A(p.Alert,"infoColor",re(p.info.light,.6)),A(p.Alert,"successColor",re(p.success.light,.6)),A(p.Alert,"warningColor",re(p.warning.light,.6)),A(p.Alert,"errorFilledBg",M("palette-error-dark")),A(p.Alert,"infoFilledBg",M("palette-info-dark")),A(p.Alert,"successFilledBg",M("palette-success-dark")),A(p.Alert,"warningFilledBg",M("palette-warning-dark")),A(p.Alert,"errorFilledColor",Lt(()=>p.getContrastText(p.error.dark))),A(p.Alert,"infoFilledColor",Lt(()=>p.getContrastText(p.info.dark))),A(p.Alert,"successFilledColor",Lt(()=>p.getContrastText(p.success.dark))),A(p.Alert,"warningFilledColor",Lt(()=>p.getContrastText(p.warning.dark))),A(p.Alert,"errorStandardBg",ne(p.error.light,.9)),A(p.Alert,"infoStandardBg",ne(p.info.light,.9)),A(p.Alert,"successStandardBg",ne(p.success.light,.9)),A(p.Alert,"warningStandardBg",ne(p.warning.light,.9)),A(p.Alert,"errorIconColor",M("palette-error-main")),A(p.Alert,"infoIconColor",M("palette-info-main")),A(p.Alert,"successIconColor",M("palette-success-main")),A(p.Alert,"warningIconColor",M("palette-warning-main")),A(p.AppBar,"defaultBg",M("palette-grey-900")),A(p.AppBar,"darkBg",M("palette-background-paper")),A(p.AppBar,"darkColor",M("palette-text-primary")),A(p.Avatar,"defaultBg",M("palette-grey-600")),A(p.Button,"inheritContainedBg",M("palette-grey-800")),A(p.Button,"inheritContainedHoverBg",M("palette-grey-700")),A(p.Chip,"defaultBorder",M("palette-grey-700")),A(p.Chip,"defaultAvatarColor",M("palette-grey-300")),A(p.Chip,"defaultIconColor",M("palette-grey-300")),A(p.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),A(p.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),A(p.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),A(p.LinearProgress,"primaryBg",ne(p.primary.main,.5)),A(p.LinearProgress,"secondaryBg",ne(p.secondary.main,.5)),A(p.LinearProgress,"errorBg",ne(p.error.main,.5)),A(p.LinearProgress,"infoBg",ne(p.info.main,.5)),A(p.LinearProgress,"successBg",ne(p.success.main,.5)),A(p.LinearProgress,"warningBg",ne(p.warning.main,.5)),A(p.Skeleton,"bg",`rgba(${M("palette-text-primaryChannel")} / 0.13)`),A(p.Slider,"primaryTrack",ne(p.primary.main,.5)),A(p.Slider,"secondaryTrack",ne(p.secondary.main,.5)),A(p.Slider,"errorTrack",ne(p.error.main,.5)),A(p.Slider,"infoTrack",ne(p.info.main,.5)),A(p.Slider,"successTrack",ne(p.success.main,.5)),A(p.Slider,"warningTrack",ne(p.warning.main,.5));const N=Ni(p.background.default,.98);A(p.SnackbarContent,"bg",N),A(p.SnackbarContent,"color",Lt(()=>p.getContrastText(N))),A(p.SpeedDialAction,"fabHoverBg",Ni(p.background.paper,.15)),A(p.StepConnector,"border",M("palette-grey-600")),A(p.StepContent,"border",M("palette-grey-600")),A(p.Switch,"defaultColor",M("palette-grey-300")),A(p.Switch,"defaultDisabledColor",M("palette-grey-600")),A(p.Switch,"primaryDisabledColor",ne(p.primary.main,.55)),A(p.Switch,"secondaryDisabledColor",ne(p.secondary.main,.55)),A(p.Switch,"errorDisabledColor",ne(p.error.main,.55)),A(p.Switch,"infoDisabledColor",ne(p.info.main,.55)),A(p.Switch,"successDisabledColor",ne(p.success.main,.55)),A(p.Switch,"warningDisabledColor",ne(p.warning.main,.55)),A(p.TableCell,"border",ne(Li(p.divider,1),.68)),A(p.Tooltip,"bg",Li(p.grey[700],.92))}Wt(p.background,"default"),Wt(p.background,"paper"),Wt(p.common,"background"),Wt(p.common,"onBackground"),Wt(p,"divider"),Object.keys(p).forEach(N=>{const b=p[N];b&&typeof b=="object"&&(b.main&&A(p[N],"mainChannel",mo(go(b.main))),b.light&&A(p[N],"lightChannel",mo(go(b.light))),b.dark&&A(p[N],"darkChannel",mo(go(b.dark))),b.contrastText&&A(p[N],"contrastTextChannel",mo(go(b.contrastText))),N==="text"&&(Wt(p[N],"primary"),Wt(p[N],"secondary")),N==="action"&&(b.active&&Wt(p[N],"active"),b.selected&&Wt(p[N],"selected")))})}),x=t.reduce((z,p)=>it(z,p),x);const C={prefix:l,disableCssColorScheme:o,shouldSkipGeneratingVar:s,getSelector:Sw(x)},{vars:T,generateThemeVars:P,generateStyleSheets:R}=WS(x,C);return x.vars=T,Object.entries(x.colorSchemes[x.defaultColorScheme]).forEach(([z,p])=>{x[z]=p}),x.generateThemeVars=P,x.generateStyleSheets=R,x.generateSpacing=function(){return Sm(c.spacing,pc(this))},x.getColorSchemeSelector=HS(a),x.spacing=x.generateSpacing(),x.shouldSkipGeneratingVar=s,x.unstable_sxConfig={...oi,...c==null?void 0:c.unstable_sxConfig},x.unstable_sx=function(p){return er({sx:p,theme:this})},x.toRuntimeSource=Mm,x}function Ed(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...n!==!0&&n,palette:bc({...n===!0?{}:n.palette,mode:t})})}function $m(e={},...t){const{palette:n,cssVariables:r=!1,colorSchemes:o=n?void 0:{light:!0},defaultColorScheme:l=n==null?void 0:n.mode,...s}=e,a=l||"light",u=o==null?void 0:o[a],c={...o,...n?{[a]:{...typeof u!="boolean"&&u,palette:n}}:void 0};if(r===!1){if(!("colorSchemes"in e))return cu(e,...t);let f=n;"palette"in e||c[a]&&(c[a]!==!0?f=c[a].palette:a==="dark"&&(f={mode:"dark"}));const d=cu({...e,palette:f},...t);return d.defaultColorScheme=a,d.colorSchemes=c,d.palette.mode==="light"&&(d.colorSchemes.light={...c.light!==!0&&c.light,palette:d.palette},Ed(d,"dark",c.dark)),d.palette.mode==="dark"&&(d.colorSchemes.dark={...c.dark!==!0&&c.dark,palette:d.palette},Ed(d,"light",c.light)),d}return!n&&!("light"in c)&&a==="light"&&(c.light=!0),kw({...s,colorSchemes:c,defaultColorScheme:a,...typeof r!="boolean"&&r},...t)}const _c=$m(),As="$$material";function Ew(){const e=Ec(_c);return e[As]||e}function Tw(e){return e!=="ownerState"&&e!=="theme"&&e!=="sx"&&e!=="as"}const Pw=e=>Tw(e)&&e!=="classes",Ke=vS({themeId:As,defaultTheme:_c,rootShouldForwardProp:Pw}),Rs=BS;function Qr(e){return jS(e)}function Aw(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function Rw(e,t,n,r={},o=()=>{}){const{ease:l=Aw,duration:s=300}=r;let a=null;const u=t[e];let c=!1;const f=()=>{c=!0},d=h=>{if(c){o(new Error("Animation cancelled"));return}a===null&&(a=h);const v=Math.min(1,(h-a)/s);if(t[e]=l(v)*(n-u)+u,v>=1){requestAnimationFrame(()=>{o(null)});return}requestAnimationFrame(d)};return u===n?(o(new Error("Element already at target position")),f):(requestAnimationFrame(d),f)}function Mw(e){return or("MuiSvgIcon",e)}Mn("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const bw=e=>{const{color:t,fontSize:n,classes:r}=e,o={root:["root",t!=="inherit"&&`color${En(t)}`,`fontSize${En(n)}`]};return Gr(o,Mw,r)},_w=Ke("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.color!=="inherit"&&t[`color${En(n.color)}`],t[`fontSize${En(n.fontSize)}`]]}})(Rs(({theme:e})=>{var t,n,r,o,l,s,a,u,c,f,d,h,v,S;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:(o=(t=e.transitions)==null?void 0:t.create)==null?void 0:o.call(t,"fill",{duration:(r=(n=(e.vars??e).transitions)==null?void 0:n.duration)==null?void 0:r.shorter}),variants:[{props:w=>!w.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:((s=(l=e.typography)==null?void 0:l.pxToRem)==null?void 0:s.call(l,20))||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:((u=(a=e.typography)==null?void 0:a.pxToRem)==null?void 0:u.call(a,24))||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:((f=(c=e.typography)==null?void 0:c.pxToRem)==null?void 0:f.call(c,35))||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,w])=>w&&w.main).map(([w])=>{var E,g;return{props:{color:w},style:{color:(g=(E=(e.vars??e).palette)==null?void 0:E[w])==null?void 0:g.main}}}),{props:{color:"action"},style:{color:(h=(d=(e.vars??e).palette)==null?void 0:d.action)==null?void 0:h.active}},{props:{color:"disabled"},style:{color:(S=(v=(e.vars??e).palette)==null?void 0:v.action)==null?void 0:S.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}})),bl=k.forwardRef(function(t,n){const r=Qr({props:t,name:"MuiSvgIcon"}),{children:o,className:l,color:s="inherit",component:a="svg",fontSize:u="medium",htmlColor:c,inheritViewBox:f=!1,titleAccess:d,viewBox:h="0 0 24 24",...v}=r,S=k.isValidElement(o)&&o.type==="svg",w={...r,color:s,component:a,fontSize:u,instanceFontSize:t.fontSize,inheritViewBox:f,viewBox:h,hasSvgAsChild:S},E={};f||(E.viewBox=h);const g=bw(w);return $.jsxs(_w,{as:a,className:de(g.root,l),focusable:"false",color:c,"aria-hidden":d?void 0:!0,role:d?"img":void 0,ref:n,...E,...v,...S&&o.props,ownerState:w,children:[S?o.props.children:o,d?$.jsx("title",{children:d}):null]})});bl&&(bl.muiName="SvgIcon");function Im(e,t){function n(r,o){return $.jsx(bl,{"data-testid":`${t}Icon`,ref:o,...r,children:e})}return n.muiName=bl.muiName,k.memo(k.forwardRef(n))}const $w={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function Iw(e){const{onChange:t,...n}=e,r=k.useRef(),o=k.useRef(null),l=()=>{r.current=o.current.offsetHeight-o.current.clientHeight};return Ml(()=>{const s=Em(()=>{const u=r.current;l(),u!==r.current&&t(r.current)}),a=Rc(o.current);return a.addEventListener("resize",s),()=>{s.clear(),a.removeEventListener("resize",s)}},[t]),k.useEffect(()=>{l(),t(r.current)},[t]),$.jsx("div",{style:$w,ref:o,...n})}const Lw=Im($.jsx("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),Nw=Im($.jsx("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");class _l{constructor(){Jr(this,"mountEffect",()=>{this.shouldMount&&!this.didMount&&this.ref.current!==null&&(this.didMount=!0,this.mounted.resolve())});this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}static create(){return new _l}static use(){const t=Pm(_l.create).current,[n,r]=k.useState(!1);return t.shouldMount=n,t.setShouldMount=r,k.useEffect(t.mountEffect,[n]),t}mount(){return this.mounted||(this.mounted=zw(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}start(...t){this.mount().then(()=>{var n;return(n=this.ref.current)==null?void 0:n.start(...t)})}stop(...t){this.mount().then(()=>{var n;return(n=this.ref.current)==null?void 0:n.stop(...t)})}pulsate(...t){this.mount().then(()=>{var n;return(n=this.ref.current)==null?void 0:n.pulsate(...t)})}}function Ow(){return _l.use()}function zw(){let e,t;const n=new Promise((r,o)=>{e=r,t=o});return n.resolve=e,n.reject=t,n}function tr(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}function fu(e,t){return fu=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,r){return n.__proto__=r,n},fu(e,t)}function Dw(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,fu(e,t)}const Td=$e.createContext(null);function jw(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function $c(e,t){var n=function(l){return t&&k.isValidElement(l)?t(l):l},r=Object.create(null);return e&&k.Children.map(e,function(o){return o}).forEach(function(o){r[o.key]=n(o)}),r}function Bw(e,t){e=e||{},t=t||{};function n(f){return f in t?t[f]:e[f]}var r=Object.create(null),o=[];for(var l in e)l in t?o.length&&(r[l]=o,o=[]):o.push(l);var s,a={};for(var u in t){if(r[u])for(s=0;s{if(!a&&u!=null){const w=setTimeout(u,c);return()=>{clearTimeout(w)}}},[u,a,c]),$.jsx("span",{className:h,style:v,children:$.jsx("span",{className:S})})}const ht=Mn("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),du=550,Kw=80,Gw=Cc` + 0% { + transform: scale(0); + opacity: 0.1; + } + + 100% { + transform: scale(1); + opacity: 0.3; + } +`,Xw=Cc` + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +`,Qw=Cc` + 0% { + transform: scale(1); + } + + 50% { + transform: scale(0.92); + } + + 100% { + transform: scale(1); + } +`,Yw=Ke("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),Zw=Ke(Hw,{name:"MuiTouchRipple",slot:"Ripple"})` + opacity: 0; + position: absolute; + + &.${ht.rippleVisible} { + opacity: 0.3; + transform: scale(1); + animation-name: ${Gw}; + animation-duration: ${du}ms; + animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut}; + } + + &.${ht.ripplePulsate} { + animation-duration: ${({theme:e})=>e.transitions.duration.shorter}ms; + } + + & .${ht.child} { + opacity: 1; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + background-color: currentColor; + } + + & .${ht.childLeaving} { + opacity: 0; + animation-name: ${Xw}; + animation-duration: ${du}ms; + animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut}; + } + + & .${ht.childPulsate} { + position: absolute; + /* @noflip */ + left: 0px; + top: 0; + animation-name: ${Qw}; + animation-duration: 2500ms; + animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut}; + animation-iteration-count: infinite; + animation-delay: 200ms; + } +`,Jw=k.forwardRef(function(t,n){const r=Qr({props:t,name:"MuiTouchRipple"}),{center:o=!1,classes:l={},className:s,...a}=r,[u,c]=k.useState([]),f=k.useRef(0),d=k.useRef(null);k.useEffect(()=>{d.current&&(d.current(),d.current=null)},[u]);const h=k.useRef(!1),v=OS(),S=k.useRef(null),w=k.useRef(null),E=k.useCallback(x=>{const{pulsate:C,rippleX:T,rippleY:P,rippleSize:R,cb:z}=x;c(p=>[...p,$.jsx(Zw,{classes:{ripple:de(l.ripple,ht.ripple),rippleVisible:de(l.rippleVisible,ht.rippleVisible),ripplePulsate:de(l.ripplePulsate,ht.ripplePulsate),child:de(l.child,ht.child),childLeaving:de(l.childLeaving,ht.childLeaving),childPulsate:de(l.childPulsate,ht.childPulsate)},timeout:du,pulsate:C,rippleX:T,rippleY:P,rippleSize:R},f.current)]),f.current+=1,d.current=z},[l]),g=k.useCallback((x={},C={},T=()=>{})=>{const{pulsate:P=!1,center:R=o||C.pulsate,fakeElement:z=!1}=C;if((x==null?void 0:x.type)==="mousedown"&&h.current){h.current=!1;return}(x==null?void 0:x.type)==="touchstart"&&(h.current=!0);const p=z?null:w.current,M=p?p.getBoundingClientRect():{width:0,height:0,left:0,top:0};let N,b,L;if(R||x===void 0||x.clientX===0&&x.clientY===0||!x.clientX&&!x.touches)N=Math.round(M.width/2),b=Math.round(M.height/2);else{const{clientX:K,clientY:te}=x.touches&&x.touches.length>0?x.touches[0]:x;N=Math.round(K-M.left),b=Math.round(te-M.top)}if(R)L=Math.sqrt((2*M.width**2+M.height**2)/3),L%2===0&&(L+=1);else{const K=Math.max(Math.abs((p?p.clientWidth:0)-N),N)*2+2,te=Math.max(Math.abs((p?p.clientHeight:0)-b),b)*2+2;L=Math.sqrt(K**2+te**2)}x!=null&&x.touches?S.current===null&&(S.current=()=>{E({pulsate:P,rippleX:N,rippleY:b,rippleSize:L,cb:T})},v.start(Kw,()=>{S.current&&(S.current(),S.current=null)})):E({pulsate:P,rippleX:N,rippleY:b,rippleSize:L,cb:T})},[o,E,v]),m=k.useCallback(()=>{g({},{pulsate:!0})},[g]),y=k.useCallback((x,C)=>{if(v.clear(),(x==null?void 0:x.type)==="touchend"&&S.current){S.current(),S.current=null,v.start(0,()=>{y(x,C)});return}S.current=null,c(T=>T.length>0?T.slice(1):T),d.current=C},[v]);return k.useImperativeHandle(n,()=>({pulsate:m,start:g,stop:y}),[m,g,y]),$.jsx(Yw,{className:de(ht.root,l.root,s),ref:w,...a,children:$.jsx(Ic,{component:null,exit:!0,children:u})})});function qw(e){return or("MuiButtonBase",e)}const ex=Mn("MuiButtonBase",["root","disabled","focusVisible"]),tx=e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:o}=e,s=Gr({root:["root",t&&"disabled",n&&"focusVisible"]},qw,o);return n&&r&&(s.root+=` ${r}`),s},nx=Ke("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${ex.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),Lm=k.forwardRef(function(t,n){const r=Qr({props:t,name:"MuiButtonBase"}),{action:o,centerRipple:l=!1,children:s,className:a,component:u="button",disabled:c=!1,disableRipple:f=!1,disableTouchRipple:d=!1,focusRipple:h=!1,focusVisibleClassName:v,LinkComponent:S="a",onBlur:w,onClick:E,onContextMenu:g,onDragLeave:m,onFocus:y,onFocusVisible:x,onKeyDown:C,onKeyUp:T,onMouseDown:P,onMouseLeave:R,onMouseUp:z,onTouchEnd:p,onTouchMove:M,onTouchStart:N,tabIndex:b=0,TouchRippleProps:L,touchRippleRef:K,type:te,...se}=r,I=k.useRef(null),D=Ow(),F=El(D.ref,K),[V,Y]=k.useState(!1);c&&V&&Y(!1),k.useImperativeHandle(o,()=>({focusVisible:()=>{Y(!0),I.current.focus()}}),[]);const ft=D.shouldMount&&!f&&!c;k.useEffect(()=>{V&&h&&!f&&D.pulsate()},[f,h,V,D]);function ae(U,ci,bs=d){return Vn(fi=>(ci&&ci(fi),bs||D[U](fi),!0))}const Me=ae("start",P),Se=ae("stop",g),et=ae("stop",m),nn=ae("stop",z),bn=ae("stop",U=>{V&&U.preventDefault(),R&&R(U)}),_n=ae("start",N),ir=ae("stop",p),li=ae("stop",M),Ms=ae("stop",U=>{gd(U.target)||Y(!1),w&&w(U)},!1),si=Vn(U=>{I.current||(I.current=U.currentTarget),gd(U.target)&&(Y(!0),x&&x(U)),y&&y(U)}),Yr=()=>{const U=I.current;return u&&u!=="button"&&!(U.tagName==="A"&&U.href)},ai=Vn(U=>{h&&!U.repeat&&V&&U.key===" "&&D.stop(U,()=>{D.start(U)}),U.target===U.currentTarget&&Yr()&&U.key===" "&&U.preventDefault(),C&&C(U),U.target===U.currentTarget&&Yr()&&U.key==="Enter"&&!c&&(U.preventDefault(),E&&E(U))}),Et=Vn(U=>{h&&U.key===" "&&V&&!U.defaultPrevented&&D.stop(U,()=>{D.pulsate(U)}),T&&T(U),E&&U.target===U.currentTarget&&Yr()&&U.key===" "&&!U.defaultPrevented&&E(U)});let dt=u;dt==="button"&&(se.href||se.to)&&(dt=S);const rn={};dt==="button"?(rn.type=te===void 0?"button":te,rn.disabled=c):(!se.href&&!se.to&&(rn.role="button"),c&&(rn["aria-disabled"]=c));const $n=El(n,I),lr={...r,centerRipple:l,component:u,disabled:c,disableRipple:f,disableTouchRipple:d,focusRipple:h,tabIndex:b,focusVisible:V},ui=tx(lr);return $.jsxs(nx,{as:dt,className:de(ui.root,a),ownerState:lr,onBlur:Ms,onClick:E,onContextMenu:Se,onFocus:si,onKeyDown:ai,onKeyUp:Et,onMouseDown:Me,onMouseLeave:bn,onMouseUp:nn,onDragLeave:et,onTouchEnd:ir,onTouchMove:li,onTouchStart:_n,ref:$n,tabIndex:c?-1:b,type:te,...rn,...se,children:[s,ft?$.jsx(Jw,{ref:F,center:l,...L}):null]})});function rx(e){return or("MuiTabScrollButton",e)}const ox=Mn("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),ix=e=>{const{classes:t,orientation:n,disabled:r}=e;return Gr({root:["root",n,r&&"disabled"]},rx,t)},lx=Ke(Lm,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${ox.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),sx=k.forwardRef(function(t,n){const r=Qr({props:t,name:"MuiTabScrollButton"}),{className:o,slots:l={},slotProps:s={},direction:a,orientation:u,disabled:c,...f}=r,d=qh(),h={isRtl:d,...r},v=ix(h),S=l.StartScrollButtonIcon??Lw,w=l.EndScrollButtonIcon??Nw,E=Tl({elementType:S,externalSlotProps:s.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:h}),g=Tl({elementType:w,externalSlotProps:s.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:h});return $.jsx(lx,{component:"div",className:de(v.root,o),ref:n,role:null,ownerState:h,tabIndex:null,...f,style:{...f.style,...u==="vertical"&&{"--TabScrollButton-svgRotate":`rotate(${d?-90:90}deg)`}},children:a==="left"?$.jsx(S,{...E}):$.jsx(w,{...g})})});function ax(e){return or("MuiTabs",e)}const ua=Mn("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),Pd=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,Ad=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,Oi=(e,t,n)=>{let r=!1,o=n(e,t);for(;o;){if(o===e.firstChild){if(r)return;r=!0}const l=o.disabled||o.getAttribute("aria-disabled")==="true";if(!o.hasAttribute("tabindex")||l)o=n(e,o);else{o.focus();return}}},ux=e=>{const{vertical:t,fixed:n,hideScrollbar:r,scrollableX:o,scrollableY:l,centered:s,scrollButtonsHideMobile:a,classes:u}=e;return Gr({root:["root",t&&"vertical"],scroller:["scroller",n&&"fixed",r&&"hideScrollbar",o&&"scrollableX",l&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",s&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",a&&"scrollButtonsHideMobile"],scrollableX:[o&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]},ax,u)},cx=Ke("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${ua.scrollButtons}`]:t.scrollButtons},{[`& .${ua.scrollButtons}`]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(Rs(({theme:e})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:t})=>t.vertical,style:{flexDirection:"column"}},{props:({ownerState:t})=>t.scrollButtonsHideMobile,style:{[`& .${ua.scrollButtons}`]:{[e.breakpoints.down("sm")]:{display:"none"}}}}]}))),fx=Ke("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),dx=Ke("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})({display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.centered,style:{justifyContent:"center"}}]}),px=Ke("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})(Rs(({theme:e})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:e.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:t})=>t.vertical,style:{height:"100%",width:2,right:0}}]}))),hx=Ke(Iw)({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),Rd={},mx=k.forwardRef(function(t,n){const r=Qr({props:t,name:"MuiTabs"}),o=Ew(),l=qh(),{"aria-label":s,"aria-labelledby":a,action:u,centered:c=!1,children:f,className:d,component:h="div",allowScrollButtonsMobile:v=!1,indicatorColor:S="primary",onChange:w,orientation:E="horizontal",ScrollButtonComponent:g=sx,scrollButtons:m="auto",selectionFollowsFocus:y,slots:x={},slotProps:C={},TabIndicatorProps:T={},TabScrollButtonProps:P={},textColor:R="primary",value:z,variant:p="standard",visibleScrollbar:M=!1,...N}=r,b=p==="scrollable",L=E==="vertical",K=L?"scrollTop":"scrollLeft",te=L?"top":"left",se=L?"bottom":"right",I=L?"clientHeight":"clientWidth",D=L?"height":"width",F={...r,component:h,allowScrollButtonsMobile:v,indicatorColor:S,orientation:E,vertical:L,scrollButtons:m,textColor:R,variant:p,visibleScrollbar:M,fixed:!b,hideScrollbar:b&&!M,scrollableX:b&&!L,scrollableY:b&&L,centered:c&&!b,scrollButtonsHideMobile:!v},V=ux(F),Y=Tl({elementType:x.StartScrollButtonIcon,externalSlotProps:C.startScrollButtonIcon,ownerState:F}),ft=Tl({elementType:x.EndScrollButtonIcon,externalSlotProps:C.endScrollButtonIcon,ownerState:F}),[ae,Me]=k.useState(!1),[Se,et]=k.useState(Rd),[nn,bn]=k.useState(!1),[_n,ir]=k.useState(!1),[li,Ms]=k.useState(!1),[si,Yr]=k.useState({overflow:"hidden",scrollbarWidth:0}),ai=new Map,Et=k.useRef(null),dt=k.useRef(null),rn=()=>{const j=Et.current;let B;if(j){const G=j.getBoundingClientRect();B={clientWidth:j.clientWidth,scrollLeft:j.scrollLeft,scrollTop:j.scrollTop,scrollWidth:j.scrollWidth,top:G.top,bottom:G.bottom,left:G.left,right:G.right}}let Z;if(j&&z!==!1){const G=dt.current.children;if(G.length>0){const me=G[ai.get(z)];Z=me?me.getBoundingClientRect():null}}return{tabsMeta:B,tabMeta:Z}},$n=Vn(()=>{const{tabsMeta:j,tabMeta:B}=rn();let Z=0,G;L?(G="top",B&&j&&(Z=B.top-j.top+j.scrollTop)):(G=l?"right":"left",B&&j&&(Z=(l?-1:1)*(B[G]-j[G]+j.scrollLeft)));const me={[G]:Z,[D]:B?B[D]:0};if(typeof Se[G]!="number"||typeof Se[D]!="number")et(me);else{const $t=Math.abs(Se[G]-me[G]),In=Math.abs(Se[D]-me[D]);($t>=1||In>=1)&&et(me)}}),lr=(j,{animation:B=!0}={})=>{B?Rw(K,Et.current,j,{duration:o.transitions.duration.standard}):Et.current[K]=j},ui=j=>{let B=Et.current[K];L?B+=j:B+=j*(l?-1:1),lr(B)},U=()=>{const j=Et.current[I];let B=0;const Z=Array.from(dt.current.children);for(let G=0;Gj){G===0&&(B=j);break}B+=me[I]}return B},ci=()=>{ui(-1*U())},bs=()=>{ui(U())},fi=k.useCallback(j=>{Yr({overflow:null,scrollbarWidth:j})},[]),Oc=()=>{const j={};j.scrollbarSizeListener=b?$.jsx(hx,{onChange:fi,className:de(V.scrollableX,V.hideScrollbar)}):null;const Z=b&&(m==="auto"&&(nn||_n)||m===!0);return j.scrollButtonStart=Z?$.jsx(g,{slots:{StartScrollButtonIcon:x.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:Y},orientation:E,direction:l?"right":"left",onClick:ci,disabled:!nn,...P,className:de(V.scrollButtons,P.className)}):null,j.scrollButtonEnd=Z?$.jsx(g,{slots:{EndScrollButtonIcon:x.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:ft},orientation:E,direction:l?"left":"right",onClick:bs,disabled:!_n,...P,className:de(V.scrollButtons,P.className)}):null,j},zc=Vn(j=>{const{tabsMeta:B,tabMeta:Z}=rn();if(!(!Z||!B)){if(Z[te]B[se]){const G=B[K]+(Z[se]-B[se]);lr(G,{animation:j})}}}),di=Vn(()=>{b&&m!==!1&&Ms(!li)});k.useEffect(()=>{const j=Em(()=>{Et.current&&$n()});let B;const Z=$t=>{$t.forEach(In=>{In.removedNodes.forEach(Zr=>{B==null||B.unobserve(Zr)}),In.addedNodes.forEach(Zr=>{B==null||B.observe(Zr)})}),j(),di()},G=Rc(Et.current);G.addEventListener("resize",j);let me;return typeof ResizeObserver<"u"&&(B=new ResizeObserver(j),Array.from(dt.current.children).forEach($t=>{B.observe($t)})),typeof MutationObserver<"u"&&(me=new MutationObserver(Z),me.observe(dt.current,{childList:!0})),()=>{j.clear(),G.removeEventListener("resize",j),me==null||me.disconnect(),B==null||B.disconnect()}},[$n,di]),k.useEffect(()=>{const j=Array.from(dt.current.children),B=j.length;if(typeof IntersectionObserver<"u"&&B>0&&b&&m!==!1){const Z=j[0],G=j[B-1],me={root:Et.current,threshold:.99},$t=$s=>{bn(!$s[0].isIntersecting)},In=new IntersectionObserver($t,me);In.observe(Z);const Zr=$s=>{ir(!$s[0].isIntersecting)},jc=new IntersectionObserver(Zr,me);return jc.observe(G),()=>{In.disconnect(),jc.disconnect()}}},[b,m,li,f==null?void 0:f.length]),k.useEffect(()=>{Me(!0)},[]),k.useEffect(()=>{$n()}),k.useEffect(()=>{zc(Rd!==Se)},[zc,Se]),k.useImperativeHandle(u,()=>({updateIndicator:$n,updateScrollButtons:di}),[$n,di]);const Dc=$.jsx(px,{...T,className:de(V.indicator,T.className),ownerState:F,style:{...Se,...T.style}});let pi=0;const Wm=k.Children.map(f,j=>{if(!k.isValidElement(j))return null;const B=j.props.value===void 0?pi:j.props.value;ai.set(B,pi);const Z=B===z;return pi+=1,k.cloneElement(j,{fullWidth:p==="fullWidth",indicator:Z&&!ae&&Dc,selected:Z,selectionFollowsFocus:y,onChange:w,textColor:R,value:B,...pi===1&&z===!1&&!j.props.tabIndex?{tabIndex:0}:{}})}),Hm=j=>{const B=dt.current,Z=Tm(B).activeElement;if(Z.getAttribute("role")!=="tab")return;let me=E==="horizontal"?"ArrowLeft":"ArrowUp",$t=E==="horizontal"?"ArrowRight":"ArrowDown";switch(E==="horizontal"&&l&&(me="ArrowRight",$t="ArrowLeft"),j.key){case me:j.preventDefault(),Oi(B,Z,Ad);break;case $t:j.preventDefault(),Oi(B,Z,Pd);break;case"Home":j.preventDefault(),Oi(B,null,Pd);break;case"End":j.preventDefault(),Oi(B,null,Ad);break}},_s=Oc();return $.jsxs(cx,{className:de(V.root,d),ownerState:F,ref:n,as:h,...N,children:[_s.scrollButtonStart,_s.scrollbarSizeListener,$.jsxs(fx,{className:V.scroller,ownerState:F,style:{overflow:si.overflow,[L?`margin${l?"Left":"Right"}`:"marginBottom"]:M?void 0:-si.scrollbarWidth},ref:Et,children:[$.jsx(dx,{"aria-label":s,"aria-labelledby":a,"aria-orientation":E==="vertical"?"vertical":null,className:V.flexContainer,ownerState:F,onKeyDown:Hm,ref:dt,role:"tablist",children:Wm}),ae&&Dc]}),_s.scrollButtonEnd]})});function gx(e){return or("MuiTab",e)}const pt=Mn("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper","icon"]),yx=e=>{const{classes:t,textColor:n,fullWidth:r,wrapped:o,icon:l,label:s,selected:a,disabled:u}=e,c={root:["root",l&&s&&"labelIcon",`textColor${En(n)}`,r&&"fullWidth",o&&"wrapped",a&&"selected",u&&"disabled"],icon:["iconWrapper","icon"]};return Gr(c,gx,t)},vx=Ke(Lm,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t[`textColor${En(n.textColor)}`],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped,{[`& .${pt.iconWrapper}`]:t.iconWrapper},{[`& .${pt.icon}`]:t.icon}]}})(Rs(({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:t})=>t.label&&(t.iconPosition==="top"||t.iconPosition==="bottom"),style:{flexDirection:"column"}},{props:({ownerState:t})=>t.label&&t.iconPosition!=="top"&&t.iconPosition!=="bottom",style:{flexDirection:"row"}},{props:({ownerState:t})=>t.icon&&t.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:t,iconPosition:n})=>t.icon&&t.label&&n==="top",style:{[`& > .${pt.icon}`]:{marginBottom:6}}},{props:({ownerState:t,iconPosition:n})=>t.icon&&t.label&&n==="bottom",style:{[`& > .${pt.icon}`]:{marginTop:6}}},{props:({ownerState:t,iconPosition:n})=>t.icon&&t.label&&n==="start",style:{[`& > .${pt.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:t,iconPosition:n})=>t.icon&&t.label&&n==="end",style:{[`& > .${pt.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${pt.selected}`]:{opacity:1},[`&.${pt.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${pt.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${pt.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${pt.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${pt.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:t})=>t.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:t})=>t.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]}))),Md=k.forwardRef(function(t,n){const r=Qr({props:t,name:"MuiTab"}),{className:o,disabled:l=!1,disableFocusRipple:s=!1,fullWidth:a,icon:u,iconPosition:c="top",indicator:f,label:d,onChange:h,onClick:v,onFocus:S,selected:w,selectionFollowsFocus:E,textColor:g="inherit",value:m,wrapped:y=!1,...x}=r,C={...r,disabled:l,disableFocusRipple:s,selected:w,icon:!!u,iconPosition:c,label:!!d,fullWidth:a,textColor:g,wrapped:y},T=yx(C),P=u&&d&&k.isValidElement(u)?k.cloneElement(u,{className:de(T.icon,u.props.className)}):u,R=p=>{!w&&h&&h(p,m),v&&v(p)},z=p=>{E&&!w&&h&&h(p,m),S&&S(p)};return $.jsxs(vx,{focusRipple:!s,className:de(T.root,o),ref:n,role:"tab","aria-selected":w,disabled:l,onClick:R,onFocus:z,ownerState:C,tabIndex:w?0:-1,...x,children:[c==="top"||c==="start"?$.jsxs(k.Fragment,{children:[P,d]}):$.jsxs(k.Fragment,{children:[d,P]}),f]})});function Sx({props:e,name:t}){return ES({props:e,name:t,defaultTheme:_c,themeId:As})}const wx=(e,t,n)=>{const r=k.useRef({displayError:!1,initialCompute:!0,computeRun:0}),o=k.useRef(null),[l,s]=k.useState(0),[a,u]=k.useState(0),c=k.useCallback(()=>{const f=o==null?void 0:o.current;if(!f)return{};const h=Rc(f).getComputedStyle(f),v=Math.floor(parseFloat(h.height))||0,S=Math.floor(parseFloat(h.width))||0;return s(S),u(v),{width:S,height:v}},[]);return k.useEffect(()=>{r.current.displayError=!0},[]),Ml(()=>{},[l,a,c,n]),Ml(()=>{if(e!==void 0&&t!==void 0)return()=>{};c();const f=o.current;if(typeof ResizeObserver>"u")return()=>{};let d;const h=new ResizeObserver(()=>{d=requestAnimationFrame(()=>{c()})});return f&&h.observe(f),()=>{d&&cancelAnimationFrame(d),f&&h.unobserve(f)}},[c,t,e]),{containerRef:o,width:e??l,height:t??a}},xx=k.createContext({item:null,axis:{x:null,y:null},useVoronoiInteraction:!1,dispatch:()=>null});function Cx(e){return e.bandwidth!==void 0}const kx={top:50,bottom:50,left:50,right:50},Ex=(e,t,n)=>{const r=Ne({},kx,n);return k.useMemo(()=>({left:r.left,top:r.top,right:r.right,bottom:r.bottom,width:Math.max(0,e-r.left-r.right),height:Math.max(0,t-r.top-r.bottom)}),[e,t,r.top,r.bottom,r.left,r.right])},Nm=k.createContext({top:0,left:0,bottom:0,right:0,height:300,width:400,chartId:"",isPointInside:()=>!1}),Om=k.createContext({isInitialized:!1,data:{current:null}});function Tx(e){const{width:t,height:n,margin:r,svgRef:o,children:l}=e,s=Ex(t,n,r),a=IS(),u=k.useCallback(({x:d,y:h},v)=>{if(v!=null&&v.targetElement&&(v!=null&&v.targetElement.closest("[data-drawing-container]")))return!0;const S=d>=s.left-1&&d<=s.left+s.width,w=h>=s.top-1&&h<=s.top+s.height;return(v==null?void 0:v.direction)==="x"?S:((v==null?void 0:v.direction)==="y"||S)&&w},[s]),c=k.useMemo(()=>Ne({chartId:a??""},s,{isPointInside:u}),[a,s,u]),f=k.useMemo(()=>({isInitialized:!0,data:o}),[o]);return $.jsx(Om.Provider,{value:f,children:$.jsx(Nm.Provider,{value:c,children:l})})}function zm(){const{left:e,top:t,width:n,height:r,bottom:o,right:l,isPointInside:s}=k.useContext(Nm);return k.useMemo(()=>({left:e,top:t,width:n,height:r,bottom:o,right:l,isPointInside:s}),[r,e,t,n,o,l,s])}function ln(e){return function(){return e}}const bd=Math.abs,De=Math.atan2,Ln=Math.cos,Px=Math.max,ca=Math.min,Nt=Math.sin,Ar=Math.sqrt,Ge=1e-12,Qo=Math.PI,$l=Qo/2,Ax=2*Qo;function Rx(e){return e>1?0:e<-1?Qo:Math.acos(e)}function _d(e){return e>=1?$l:e<=-1?-$l:Math.asin(e)}const pu=Math.PI,hu=2*pu,Dn=1e-6,Mx=hu-Dn;function Dm(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Dm;const n=10**t;return function(r){this._+=r[0];for(let o=1,l=r.length;oDn)if(!(Math.abs(d*u-c*f)>Dn)||!l)this._append`L${this._x1=t},${this._y1=n}`;else{let v=r-s,S=o-a,w=u*u+c*c,E=v*v+S*S,g=Math.sqrt(w),m=Math.sqrt(h),y=l*Math.tan((pu-Math.acos((w+h-E)/(2*g*m)))/2),x=y/m,C=y/g;Math.abs(x-1)>Dn&&this._append`L${t+x*f},${n+x*d}`,this._append`A${l},${l},0,0,${+(d*v>f*S)},${this._x1=t+C*u},${this._y1=n+C*c}`}}arc(t,n,r,o,l,s){if(t=+t,n=+n,r=+r,s=!!s,r<0)throw new Error(`negative radius: ${r}`);let a=r*Math.cos(o),u=r*Math.sin(o),c=t+a,f=n+u,d=1^s,h=s?o-l:l-o;this._x1===null?this._append`M${c},${f}`:(Math.abs(this._x1-c)>Dn||Math.abs(this._y1-f)>Dn)&&this._append`L${c},${f}`,r&&(h<0&&(h=h%hu+hu),h>Mx?this._append`A${r},${r},0,1,${d},${t-a},${n-u}A${r},${r},0,1,${d},${this._x1=c},${this._y1=f}`:h>Dn&&this._append`A${r},${r},0,${+(h>=pu)},${d},${this._x1=t+r*Math.cos(l)},${this._y1=n+r*Math.sin(l)}`)}rect(t,n,r,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${r=+r}v${+o}h${-r}Z`}toString(){return this._}}function $x(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{const r=Math.floor(n);if(!(r>=0))throw new RangeError(`invalid digits: ${n}`);t=r}return e},()=>new _x(t)}function Ix(e){return e.innerRadius}function Lx(e){return e.outerRadius}function Nx(e){return e.startAngle}function Ox(e){return e.endAngle}function zx(e){return e&&e.padAngle}function Dx(e,t,n,r,o,l,s,a){var u=n-e,c=r-t,f=s-o,d=a-l,h=d*u-f*c;if(!(h*hL*L+K*K&&(R=p,z=M),{cx:R,cy:z,x01:-f,y01:-d,x11:R*(o/C-1),y11:z*(o/C-1)}}function jm(){var e=Ix,t=Lx,n=ln(0),r=null,o=Nx,l=Ox,s=zx,a=null,u=$x(c);function c(){var f,d,h=+e.apply(this,arguments),v=+t.apply(this,arguments),S=o.apply(this,arguments)-$l,w=l.apply(this,arguments)-$l,E=bd(w-S),g=w>S;if(a||(a=f=u()),vGe))a.moveTo(0,0);else if(E>Ax-Ge)a.moveTo(v*Ln(S),v*Nt(S)),a.arc(0,0,v,S,w,!g),h>Ge&&(a.moveTo(h*Ln(w),h*Nt(w)),a.arc(0,0,h,w,S,g));else{var m=S,y=w,x=S,C=w,T=E,P=E,R=s.apply(this,arguments)/2,z=R>Ge&&(r?+r.apply(this,arguments):Ar(h*h+v*v)),p=ca(bd(v-h)/2,+n.apply(this,arguments)),M=p,N=p,b,L;if(z>Ge){var K=_d(z/h*Nt(R)),te=_d(z/v*Nt(R));(T-=K*2)>Ge?(K*=g?1:-1,x+=K,C-=K):(T=0,x=C=(S+w)/2),(P-=te*2)>Ge?(te*=g?1:-1,m+=te,y-=te):(P=0,m=y=(S+w)/2)}var se=v*Ln(m),I=v*Nt(m),D=h*Ln(C),F=h*Nt(C);if(p>Ge){var V=v*Ln(y),Y=v*Nt(y),ft=h*Ln(x),ae=h*Nt(x),Me;if(EGe?N>Ge?(b=zi(ft,ae,se,I,v,N,g),L=zi(V,Y,D,F,v,N,g),a.moveTo(b.cx+b.x01,b.cy+b.y01),NGe)||!(T>Ge)?a.lineTo(D,F):M>Ge?(b=zi(D,F,V,Y,h,-M,g),L=zi(se,I,ft,ae,h,-M,g),a.lineTo(b.cx+b.x01,b.cy+b.y01),M{const{data:e}=k.useContext(jx);return e};function Fx(e,t){const n=e.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,n.matrixTransform(e.getScreenCTM().inverse())}function Ux(){const{isInitialized:e,data:t}=k.useContext(Om);if(!e)throw new Error(["MUI X: Could not find the svg ref context.","It looks like you rendered your component outside of a ChartsContainer parent component."].join(` +`));return t}function pr(e){return e instanceof Date?e.getTime():e}const Vx=e=>{const t=Ux(),n=zm(),{xAxis:r,yAxis:o,xAxisIds:l,yAxisIds:s}=Bx(),{dispatch:a}=k.useContext(xx),u=l[0],c=s[0],f=k.useRef({isInChart:!1,x:-1,y:-1});k.useEffect(()=>{const d=t.current;if(d===null||e)return()=>{};function h(E,g){const{scale:m,data:y,reverse:x}=E;if(!Cx(m)){const T=m.invert(g);if(y===void 0)return{value:T,index:-1};const P=pr(T),R=y==null?void 0:y.findIndex((z,p)=>{const M=pr(z);return M>P&&(p===0||Math.abs(P-M)<=Math.abs(P-pr(y[p-1])))||M<=P&&(p===y.length-1||Math.abs(pr(T)-M)=0?y[R]:T,index:R}}const C=m.bandwidth()===0?Math.floor((g-Math.min(...m.range())+m.step()/2)/m.step()):Math.floor((g-Math.min(...m.range()))/m.step());if(C<0||C>=y.length)return null;if(x){const T=y.length-1-C;return{index:T,value:y[T]}}return{index:C,value:y[C]}}const v=()=>{f.current={isInChart:!1,x:-1,y:-1},a({type:"exitChart"})},S=E=>{const g="targetTouches"in E?E.targetTouches[0]:E,m=Fx(d,g);if(f.current.x=m.x,f.current.y=m.y,!n.isPointInside(m,{targetElement:E.target})){f.current.isInChart&&(a({type:"exitChart"}),f.current.isInChart=!1);return}f.current.isInChart=!0;const y=h(r[u],m.x),x=h(o[c],m.y);a({type:"updateAxis",data:{x:y,y:x}})},w=E=>{const g=E.currentTarget;g&&g.hasPointerCapture(E.pointerId)&&g.releasePointerCapture(E.pointerId)};return d.addEventListener("pointerdown",w),d.addEventListener("pointermove",S),d.addEventListener("pointerout",v),d.addEventListener("pointercancel",v),d.addEventListener("pointerleave",v),()=>{d.removeEventListener("pointerdown",w),d.removeEventListener("pointermove",S),d.removeEventListener("pointerout",v),d.removeEventListener("pointercancel",v),d.removeEventListener("pointerleave",v)}},[t,a,c,o,u,r,e,n])},Wx=["children","width","height","viewBox","disableAxisListener","className","title","desc"],Hx=Ke("svg",{name:"MuiChartsSurface",slot:"Root"})(()=>({touchAction:"none"})),Kx=k.forwardRef(function(t,n){const r=Sx({props:t,name:"MuiChartsSurface"}),{children:o,width:l,height:s,viewBox:a,disableAxisListener:u=!1,className:c,title:f,desc:d}=r,h=tr(r,Wx),v=Ne({width:l,height:s,x:0,y:0},a);return Vx(u),$.jsxs(Hx,Ne({width:l,height:s,viewBox:`${v.x} ${v.y} ${v.width} ${v.height}`,ref:n,className:c},h,{children:[$.jsx("title",{children:f}),$.jsx("desc",{children:d}),o]}))});function uo(e,t){if(typeof e=="number")return e;if(e==="100%")return t;if(e.endsWith("%")){const n=Number.parseFloat(e.slice(0,e.length-1));if(!Number.isNaN(n))return n*t/100}if(e.endsWith("px")){const n=Number.parseFloat(e.slice(0,e.length-2));if(!Number.isNaN(n))return n}throw new Error(`MUI X: Received an unknown value "${e}". It should be a number, or a string with a percentage value.`)}function Gx(e){return Math.PI*e/180}function fa(e){const t=Gx(e);return[Math.sin(t),-Math.cos(t)]}function Xx(e,t){const n=[[0,0],fa(e),fa(t)],r=Math.min(e,t),o=Math.max(e,t),l=Math.floor(r/90)*90;for(let f=1;f<=4;f+=1){const d=l+f*90;df)),a=Math.max(...n.map(([f])=>f)),u=Math.min(...n.map(([,f])=>f)),c=Math.max(...n.map(([,f])=>f));return{cx:-s/(a-s),cy:-u/(c-u),minX:s,maxX:a,minY:u,maxY:c}}function Qx(e,t,n,r,{minX:o,maxX:l,minY:s,maxY:a}){return Math.min(...[{ratio:Math.abs(o),space:e},{ratio:Math.abs(l),space:n-e},{ratio:Math.abs(s),space:t},{ratio:Math.abs(a),space:r-t}].map(({ratio:u,space:c})=>u<1e-5?1/0:c/u))}const Bm=k.createContext({value:null,valueMin:0,valueMax:0,startAngle:0,endAngle:0,innerRadius:0,outerRadius:0,cornerRadius:0,cx:0,cy:0,maxRadius:0,valueAngle:null});function Yx(e){const{value:t=null,valueMin:n=0,valueMax:r=100,startAngle:o=0,endAngle:l=360,outerRadius:s,innerRadius:a,cornerRadius:u,cx:c,cy:f,children:d}=e,{left:h,top:v,width:S,height:w}=zm(),E=Xx(o,l),g=c?uo(c,S):E.cx*S,m=f?uo(f,w):E.cy*w;let y=h+g,x=v+m;const C=Qx(g,m,S,w,E);if(c===void 0){const p=C*(E.maxX-E.minX);y=h+(S-p)/2+E.cx*p}if(f===void 0){const p=C*(E.maxY-E.minY);x=v+(w-p)/2+E.cy*p}const T=uo(s??C,C),P=uo(a??"80%",C),R=uo(u??0,T-P),z=k.useMemo(()=>{const p=Math.PI*o/180,M=Math.PI*l/180;return{value:t,valueMin:n,valueMax:r,startAngle:p,endAngle:M,outerRadius:T,innerRadius:P,cornerRadius:R,cx:y,cy:x,maxRadius:C,valueAngle:t===null?null:p+(M-p)*(t-n)/(r-n)}},[t,n,r,o,l,T,P,R,y,x,C]);return $.jsx(Bm.Provider,{value:z,children:d})}function Lc(){return k.useContext(Bm)}const Zx=["width","height","margin","title","desc","value","valueMin","valueMax","startAngle","endAngle","outerRadius","innerRadius","cornerRadius","cx","cy","children"],Jx=Ke("div",{name:"MuiGauge",slot:"Container"})(({ownerState:e,theme:t})=>({width:e.width??"100%",height:e.height??"100%",display:"flex",position:"relative",flexGrow:1,flexDirection:"column",alignItems:"center",justifyContent:"center",overflow:"hidden","&>svg":{width:"100%",height:"100%"},"& text":{fill:(t.vars||t).palette.text.primary}})),qx=k.forwardRef(function(t,n){const{width:r,height:o,margin:l,title:s,desc:a,value:u,valueMin:c=0,valueMax:f=100,startAngle:d,endAngle:h,outerRadius:v,innerRadius:S,cornerRadius:w,cx:E,cy:g,children:m}=t,y=tr(t,Zx),{containerRef:x,width:C,height:T}=wx(r,o),P=k.useRef(null),R=El(n,P);return $.jsx(Jx,Ne({ref:x,ownerState:{width:r,height:o},role:"meter","aria-valuenow":u===null?void 0:u,"aria-valuemin":c,"aria-valuemax":f},y,{children:C&&T?$.jsx(Tx,{width:C,height:T,margin:Ne({left:10,right:10,top:10,bottom:10},l),svgRef:P,children:$.jsx(Yx,{value:u,valueMin:c,valueMax:f,startAngle:d,endAngle:h,outerRadius:v,innerRadius:S,cornerRadius:w,cx:E,cy:g,children:$.jsx(Kx,{width:C,height:T,ref:R,title:s,desc:a,disableAxisListener:!0,"aria-hidden":"true",children:m})})}):null}))}),eC=Ke("path",{name:"MuiGauge",slot:"ReferenceArc",overridesResolver:(e,t)=>t.referenceArc})(({theme:e})=>({fill:(e.vars||e).palette.primary.main}));function tC(e){const{value:t,valueMin:n,valueMax:r,startAngle:o,endAngle:l,outerRadius:s,innerRadius:a,cornerRadius:u,cx:c,cy:f}=Lc();if(t===null)return null;const d=o+(t-n)/(r-n)*(l-o);return $.jsx(eC,Ne({transform:`translate(${c}, ${f})`,d:jm().cornerRadius(u)({startAngle:o,endAngle:d,innerRadius:a,outerRadius:s})},e))}const nC=Ke("path",{name:"MuiGauge",slot:"ReferenceArc",overridesResolver:(e,t)=>t.referenceArc})(({theme:e})=>({fill:(e.vars||e).palette.divider}));function rC(e){const{startAngle:t,endAngle:n,outerRadius:r,innerRadius:o,cornerRadius:l,cx:s,cy:a}=Lc();return $.jsx(nC,Ne({transform:`translate(${s}, ${a})`,d:jm().cornerRadius(l)({startAngle:t,endAngle:n,innerRadius:o,outerRadius:r})},e))}function oC(e){return or("MuiGauge",e)}const $d=Mn("MuiGauge",["root","valueArc","referenceArc","valueText"]);function iC(){return typeof window>"u"}const Nn={widthCache:{},cacheCount:0},lC=2e3,sC={position:"absolute",top:"-20000px",left:0,padding:0,margin:0,border:"none",whiteSpace:"pre"},aC=["minWidth","maxWidth","width","minHeight","maxHeight","height","top","left","fontSize","padding","margin","paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom"],Id="mui_measurement_span";function Fm(e,t){return aC.indexOf(e)>=0&&t===+t?`${t}px`:t}function Um(e){return e.split("").reduce((r,o)=>o===o.toUpperCase()?[...r,"-",o.toLowerCase()]:[...r,o],[]).join("")}const uC=e=>Object.keys(e).sort().reduce((t,n)=>`${t}${Um(n)}:${Fm(n,e[n])};`,"");let da;const cC=(e,t={})=>{if(e==null||iC())return{width:0,height:0};const n=`${e}`,r=uC(t),o=`${n}-${r}`;if(Nn.widthCache[o])return Nn.widthCache[o];try{let l=document.getElementById(Id);l===null&&(l=document.createElement("span"),l.setAttribute("id",Id),l.setAttribute("aria-hidden","true"),document.body.appendChild(l));const s=Ne({},sC,t);Object.keys(s).map(c=>(l.style[Um(c)]=Fm(c,s[c]),c)),l.textContent=n;const a=l.getBoundingClientRect(),u={width:a.width,height:a.height};return Nn.widthCache[o]=u,Nn.cacheCount+1>lC?(Nn.cacheCount=0,Nn.widthCache={}):Nn.cacheCount+=1,da&&clearTimeout(da),da=setTimeout(()=>{l.textContent=""},0),u}catch{return{width:0,height:0}}};function fC({style:e,needsComputation:t,text:n}){return n.split(` +`).map(r=>Ne({text:r},t?cC(r,e):{width:0,height:0}))}const dC=["x","y","style","text","ownerState"],pC=["angle","textAnchor","dominantBaseline"];function hC(e){const{x:t,y:n,style:r,text:o}=e,l=tr(e,dC),s=r??{},{angle:a,textAnchor:u,dominantBaseline:c}=s,f=tr(s,pC),d=k.useMemo(()=>fC({style:f,needsComputation:o.includes(` +`),text:o}),[f,o]);let h;switch(c){case"hanging":h=0;break;case"central":h=(d.length-1)/2*-d[0].height;break;default:h=(d.length-1)*-d[0].height;break}const v=[];return a&&v.push(`rotate(${a}, ${t}, ${n})`),$.jsx("text",Ne({},l,{transform:v.length>0?v.join(" "):void 0,x:t,y:n,textAnchor:u,dominantBaseline:c,style:f,children:d.map((S,w)=>$.jsx("tspan",{x:t,dy:`${w===0?h:d[0].height}px`,dominantBaseline:c,children:S.text},w))}))}const mC=["text","className"];function gC({value:e}){return e===null?null:e.toLocaleString()}function yC(e){const{text:t=gC,className:n}=e,r=tr(e,mC),{value:o,valueMin:l,valueMax:s,cx:a,cy:u}=Lc(),c=typeof t=="function"?t({value:o,valueMin:l,valueMax:s}):t;return c===null?null:$.jsx("g",{className:n,children:$.jsx(hC,Ne({x:a,y:u,text:c,style:{textAnchor:"middle",dominantBaseline:"central"}},r))})}const vC=["text","children","classes","className"],SC=e=>{const{classes:t}=e;return Gr({root:["root"],valueArc:["valueArc"],referenceArc:["referenceArc"],valueText:["valueText"]},oC,t)},wC=k.forwardRef(function(t,n){const{text:r,children:o,className:l}=t,s=tr(t,vC),a=SC(t);return $.jsxs(qx,Ne({},s,{className:de(a.root,l),ref:n,children:[$.jsx(rC,{className:a.referenceArc}),$.jsx(tC,{className:a.valueArc}),$.jsx(yC,{className:a.valueText,text:r}),o]}))});function xC({percent:e}){return $.jsx(wC,{value:e,startAngle:0,endAngle:360,width:100,height:100,sx:{[`& .${$d.valueText}`]:{fontSize:15,transform:"translate(0px, 0px)"},[`& .${$d.valueArc}`]:{fill:e>80?"red":e>50?"orange":"green"}},text:({value:t,valueMax:n})=>`${e}%`})}const CC="data:image/png;base64,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";function kC({precipitation:e,expectedFloods:t,graph:n}){return $.jsxs("div",{className:"flex items-start h-[40%] justify-start",children:[$.jsxs("div",{className:"flex flex-col w-[60%]",children:[$.jsxs("div",{className:"text-black",children:[" Average Precipitation: ",e,"mm"]}),$.jsx("div",{className:"text-black",children:" Canadian Average: CONST"}),$.jsx("div",{className:"text-black",children:" Expected number of floods per year:"}),$.jsxs("div",{className:"flex flex-col items-align justify-center",children:["Projected number of floods:",$.jsx("img",{src:CC,className:""})]})]}),$.jsxs("div",{className:"flex flex-col w-[40%]",children:[$.jsx("div",{className:"text-black font-bold",children:" Danger Level:"}),$.jsx(xC,{percent:80})]})]})}const EC=Mn("MuiBox",["root"]),TC=$m(),Vm=pS({themeId:As,defaultTheme:TC,defaultClassName:EC.root,generateClassName:wm.generate});function Ld(e){const{children:t,value:n,index:r,...o}=e;return $.jsx("div",{role:"tabpanel",hidden:n!==r,id:`simple-tabpanel-${r}`,"aria-labelledby":`simple-tab-${r}`,...o,children:n===r&&$.jsx(Vm,{sx:{p:3},children:t})})}function Nd(e){return{id:`simple-tab-${e}`,"aria-controls":`simple-tabpanel-${e}`}}function PC({precipitation:e,danger:t,name:n}){const[r,o]=$e.useState(0),l=(s,a)=>{o(a)};return $.jsxs("div",{className:"flex flex-col items-center border-black border-2 bg-white rounded-lg",children:[$.jsxs("div",{className:" m-6 text-lg font-bold",children:["Flood Report for ",n]}),$.jsx("div",{className:"w-full h-[1px] bg-black"}),$.jsx(Vm,{sx:{borderBottom:1,borderColor:"divider"},children:$.jsxs(mx,{value:r,onChange:l,"aria-label":"basic tabs example",children:[$.jsx(Md,{label:"Present",...Nd(0)}),$.jsx(Md,{label:"Future (Predicted)",...Nd(1)})]})}),$.jsx(Ld,{value:r,index:0,children:$.jsx(kC,{precipitation:e,danger:t})}),$.jsx(Ld,{value:r,index:1,children:"Item Two"})]})}const Nc=k.createContext(),AC=({children:e})=>{const[t,n]=k.useState(!1),[r,o]=k.useState(0);return $.jsx(Nc.Provider,{value:{reportView:t,setReportView:n,activeReport:r,setActiveReport:o},children:e})};async function RC(e){}const MC=[{featureType:"all",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:"road",elementType:"geometry",stylers:[{visibility:"on"}]},{featureType:"road",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"transit",elementType:"geometry",stylers:[{visibility:"off"}]},{featureType:"administrative.locality",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"poi",elementType:"geometry",stylers:[{visibility:"off"}]},{featureType:"water",elementType:"geometry",stylers:[{visibility:"on"}]}];function bC(){let e=0;const t=k.useContext(Nc),n=t.reportView,r=t.setReportView,o=t.setActiveReport;t.activeReport;const l=k.useRef(null),[s,a]=k.useState(""),u=k.useRef(null),[c,f]=k.useState(null),[d,h]=k.useState(null),v=w=>{a(w.target.value)},S=()=>{window.google&&window.google.maps&&s&&new window.google.maps.Geocoder().geocode({address:s},(E,g)=>{if(g==="OK"&&E[0]){console.log(E[0]);const m=E[0].geometry.location,y=E[0].formatted_address;if(mapInstance){c.panTo(m),c.setZoom(15),d&&d.setMap(null);const x=new window.google.maps.Marker({position:m,map:c,label:{text:y,color:"black",fontSize:"16px",fontWeight:"bold"}});h(x)}}else console.error("Geocode was not successful for the following reason: "+g)})};return k.useEffect(()=>{new jn({apiKey:"AIzaSyD7nKTP-BuFskqfyroaasPKelA5k71LcsQ",version:"weekly",libraries:["places"]}).load().then(()=>{if(u.current){const E=new window.google.maps.Map(u.current,{center:{lat:43.6532,lng:-79.3832},zoom:13,mapTypeId:"hybrid",mapTypeControl:!1,styles:MC});f(E);const g=new window.google.maps.places.Autocomplete(l.current);g.bindTo("bounds",E),g.addListener("place_changed",()=>{const m=g.getPlace();if(!m.geometry||!m.geometry.location){console.log("No details available for input: "+m.name);return}const y=m.geometry.location;r(!0),RC();const x=m.formatted_address;if(a(x),E){console.log("test"),E.panTo(y),E.setZoom(15),d&&d.setMap(null);const C=new window.google.maps.Marker({id:e,position:y,map:E,label:{text:x,className:"map-label",fontSize:"16px",fontWeight:"bold"}});i+=1,h(C),C.addListener("click",()=>{o(C.id)})}})}}).catch(E=>{console.error("Error loading Google Maps API:",E)})},[u]),$.jsxs($.Fragment,{children:[$.jsxs("div",{className:"bg-white backdrop-blur-sm px-5 pb-5 m-5 rounded-lg border-black border-[1px]",children:[$.jsx("input",{className:"m-4 p-2 z-10 relative bg-slate-500 border-black border-2 text-black",ref:l,type:"text",placeholder:"Type in an address!",onChange:v}),$.jsx("button",{className:"relative border-black border-1",onClick:S,children:" Search! "}),$.jsx("div",{ref:u,style:{width:"60vw",height:"80vh"}})]}),n&&$.jsx("div",{className:"flex w-full h-full justify-center items-center",children:$.jsx(PC,{name:s,precipitation:33})})]})}function _C(){const e="AIzaSyD7nKTP-BuFskqfyroaasPKelA5k71LcsQ";return k.useEffect(()=>{console.log("API Key:",e)},[e]),$.jsx("div",{id:"app",className:"w-[100vw] bg-slate-300 ",children:$.jsx(AC,{children:$.jsxs(_y,{apiKey:e,onLoad:()=>console.log("Maps API has loaded."),children:[$.jsx(Cy,{}),$.jsxs("div",{className:"flex items-center w-[100%] relative justify-center",children:[$.jsx(bC,{}),$.jsx($C,{})]})]})})})}const $C=()=>{const{reportView:e}=$e.useContext(Nc);return!e&&$.jsx("div",{className:"relative text-white w-[200px] p-6 rounded-xl bg-purple-950 font-bold border-black border-4",children:"Welcome to Flood Fill! Enter a location to generate a report of its expected flood risk in the future!"})};Qh(document.getElementById("root")).render($.jsx(k.StrictMode,{children:$.jsx(_C,{})})); diff --git a/flood-fill-favicon-color.png b/flood-fill-favicon-color.png new file mode 100644 index 0000000000000000000000000000000000000000..ae9555bbe090abcee2f74ce90745e0b3c44dd320 GIT binary patch literal 1106 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&SqAuoxcX!k9yoB|FN4K@28)AW z@Snl*AA=>3d8KzIkOYbYWg$|?+{+c5SAm8Imjw9*GeqBZ*LG3;w@s)pd`r`mC3zDr zRB?3s7X%zx=^N|_U8|Du8EfkoeA6r{h1CBNAqeBw7dM&8J&OS|?Rx8JH0WE}Kp z`ww?VZhOVzs&0l;vs8l*ullOXLl+E(vewH(Z8xC2` zmHWQW=zDu^m!aS6ncJ+^o~|!lGbf9!Vbz&6o>Ehz^=CZZCHYy^K|T6*vPpRMoNc-D zALTK%S+-7(6&9N~E234xD1GG&3Biwg4>m3iK43NNkcjBEcakN&#tt#ZUZO6e99kytjI34FJ-0T;E1T{NFMOFnVYVypPbZ=5Z-|tO2 z-EmCMcEozgCGDDY+}URH)8H-@HSHRw%p1k}-44k+(;rT3`K+2?c|IlT@Xnj2aZJm8 zOlmkXMN3_ibE2`j!STI(U$6B%-?4I)ZM^yi0fF$nEO-1K2u|03(9&w0u6IQxvvtu{ zlS4;l{hTagQJ#D362<0MJMTK-Fy`1@Ww-;)AiC?o_Qe$Mck)FKYRc21=}=< z_Q!uGs>CZ!n4##sdBv|D9NBe9f5F#14eoaYC!46K{8&2E`WJNMNc z9hPB&nPNq&LRYE0=1$3XH=py^PMY!1rS=8+LI<{0=5Th;nEGVPtX}rNZxtWNY&>@M zbF6wmPX8&7`Yk`)SvUOst#e|fVME#Jn5>PBE20+*J>T)}_rCV`Vho;3iuPB}kNhT` z>9eeOPEWr0fsEaz<uC5neiJOY|J>duz33)`c*nu}<2`{ON`3GRF(i(1YxMjK9OQjZf!>ECOa= N22WQ%mvv4FO#lcp0}TKG literal 0 HcmV?d00001 diff --git a/flood-fill/.gitignore b/flood-fill/.gitignore new file mode 100644 index 0000000..438657a --- /dev/null +++ b/flood-fill/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local +.env + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/index.html b/index.html new file mode 100644 index 0000000..7624049 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + Flood Fill + + + + +
+ + diff --git a/logo - Copy.png b/logo - Copy.png new file mode 100644 index 0000000000000000000000000000000000000000..5ebbe803bd04b98ee977098427b106b9cdb5c91f GIT binary patch literal 109344 zcmeFZWmuJ6*EWiZfGC23bScuMq%<|ia1 zc$%2dO9fkvjj2113PTrgc;_dUsExbGZ&=!%-cV@AgPt}|&3UN6ZVL+uef3EcMi$bM zjm{>2gp8d11Q)9b(+&zb-81JYNXf4_f-RdMT|@5yic_t#fj z@!vi9V-f!~h<`lezXtJNgFyPPH~iNdkdXcx3jP}k{u>JZi3I=khJQBVzq#T6&$;2C ziSZKe&jzTw38L7)`hEYO?f8O>y!FqwNN)uHzxcIV`9i82O^6uI)yE{B;cK16(s6tx z?a8}mS9k~MBVGHa_BY$C3VuP_d1Ky(x380Lv2Um$(r;K7YV+3{QYY@R>fSV+>%Il`Ta!IxD`y+A5g}L=#L%Zuu(D* z*QM}b)vf3?i%KC3#H*8Buf5vHU>!51%Z=8O{=TC3pASX7_My+3o8IRVI0ee6!wUsE z4Q^S6Jj8CYtcNwRGCS@ba{gIZ@5{dnBbV7ZZPYKG?GmUvI;#Gkf5-YV7@BHqBqFUS zf_LEA_n{S!2aiFS62TrIp^+f7^kUz%S-G=pgT&9%N2dEBzAHS;q@!I@Od6-hJ+;56 z-Fsl^f4NQSS9t<{C`=LS;nnFJ?68eZQY%PI!m8)R9H`= zB!lKE-!6Wx#y}}89vxKPhmrj7{j&wvuI$YTIc;1R&lU5&GgpcAxui;0^J{HI>ZFEB zA@t{Tfz0-~vV4@%E!n1ARHUcUa?NqXe)d+f#|1~*2 z1w(PUGIk1TdhHJ`s*1W*j699Rk0|5szPs;PT(g&0o0?ov;y81|!Q4Q&xtNF1vjwl}E5eg4NnS0304x%u)j%j=xzdyzbjpAC+%kWBejUKO>a5?!- zgSZiLA*^45GH8=Y)Uh*PpB)TbKD)JN+%5v;uXPY~!G~7Zf$k%+gO2kM=GP0-;QMB;2e6w&ImTR&DCJzO}!t zbhc4Jjct3=^W>dR-60atu~MZg$HhWN`;0@I zXP>?&%W81!auv^4DgV*`a>>019$iG?t?!eCr%J1G1^hVHHQz@L^Sr|$A*Nx7-}@z> z{QW6Ar5G30;h}#r3gRQ7*EVaX(5gOn0AKlNoYLn$@%?3gZRbVc zp_@>e5L$}bo-e#HUD5GzVdmpMCsUi;@P=zHTVVnZ60ZE+`C9auov&}xE+FKW#F2BC z2K!ItNAP?vJx6G^t#-g!T~6^aI$3J^Q;g1H9X*|ePdfL0b(HBIuoB8>q#a#AH{RD7 zx?Y{?Pv*ZSOYS&nc9;f}!e{hBdO_U1*Y0{0JTE^2+ygH{QGq!3VUK%82NU=9EGm^( zLx_8aqRZ*nNb(9fKmV|9*RQhli6R!%1szyVSD8>uvt``b^-%SH-#Qc}u4u(ODtSlL z_RzDBd_>pDd6!q#c5f*hHd1>jeOA_n6BRWLYqjOm7L1n~d$S!gd>N`4t*T;LX=F$q zXNcJ06}-Q0jz)H8*W5HuozACwXowS>Nm+yf4sOJluf%5BquC)43u!`D;aD`EC3sVL% zzjrRF5*f5FGBj{5V}FgKzUZx|aXhzfDs**1brir^e?=XlAbqg{2CdZ*0^DPj5yB}d zeAv@P>b!d*@|yGfxVu!xhY|5nNWFJ-K{lyKM0X4Gwh1IQpL&$Mv#@ohOTz7_fWs$i zDBk~*SM{?ZB5o?`+UIu}vIzSuS4{>me`b1LB!1-(zj>}%x1xup<7Fr9yzs2pWkZ4K*hKCqfY?B6LE6{s?b0COTTv z?qibecnIURbIEC#)Kxq~B75*R2%1^8=8gE1Si92jR=O-D>yIOfUUS6BSeK)y zebP!9oOlL}%FkyRnqE)z|3wZHN}QVsF(kMbAKU3Mx0q>|=xCXlXyMK-vxU*zAmqoN zbag%!;1R|l85|s*y6o`$W19R={^pTcD%RSbj*f(f?$j~xt7BW2$cx*b9mFb&WaSiBEh?J^_+xl4kBAB?C9mTBW6f_4 z2rD{%;b8H|aI1z_n}k8X!}xsFcyQ)(Zu(%j2u zgzuBPVn&#iqJBd!2AFXR)abAB`p)fZ*7TYpzglZ{c1FD;w9sQ3LGi^m~X+g`+4up5|tZuVF4Llg-wy1 z?hngkayypvY8W!pnkKYps3?vtnRzWY)Vl+V8tps-nWaG|N8n<^=n9v7QM$IbB>*Vv zsIpoVv7j6wHguwhwNq9WxaQF4sDh$-W@@e$041_wcCzMK?dbU*A77c@P*n-Ea`D2t z07~&^n|=NQRJY(rd|&ny(=vALD=-*uRQ$&v-;IKd@l&78L<2hc5Q1xs3SwLs)GY1K zfz$sDg}qLGBHD_&P-CMiMtX`XRNT`p$%+5!g3qp`D!rm)QbVq=;Ag&ZXs99^z>drI z`8qN^{MLf`G~8e#4)V`*{~*qqYmTFyDYHGO76alBYioE^NSHy_3f`&H==v3;0|6hz zfJNxtjWj8#t~o9~JF~sf91l!vVN{dyv+!!N!Q~)CmPov2PAji+BKSUbZBYAsU$Clb zr=#1Xd?e8QQDB-Zy&|>2>0C0&hEtu@vHw^Wz@Vl1o{bX|=+#mMN&ed8%B$jx8Hc{x zdfrdiVh71uG}NZYhpFNlWn%e{2WOT9o}$Yr=1(7IU<&*JH<^em^-mR}z7n8XK*Y0# zB5UOd46w-OHKop@v-_jI;_bdZ5`ja5-ph$}kNLMi&;k~pz<+MFxaR-In5_R=K;qrF zeD=+7=bvN>1}vDV6k2=~>;Zy)tIo)i4BBJOJk=H7pn zo~O*EiSrTw(nNd1E!WpQ_zXVxqoY+#2zbKQ3BcYVIbN%#s=hyN_+i($2l83wtpQ+a z@70dxtI`*RDHlPmF10?K<3g@?drl!TZ52ktOJD=vaD6BGCmPaSbA%C~kxAui* zF;5$jnb;}Y!oz}$idB+RG#$>=cQbpKs#j_}$s$4I*u%>|H(X}=bMNTa?!A;WmiH)o zwoxc)E%ox5@KF(m=WAY6GNC9*f>kG!g)!sdgNUr6qv3EiRRFgsuPsT=%2MVSX%7#_G&o0{0UOs#Kw-Gqy#0lYgt4&~+EjF({I6~!T`P|F8J>G)(n-5(Tp518>& z7P|cMQRIU!`#inwDk`c4wR>}jGv(3OH$GjTfj>sCWg+yxI6WYB9RDKW8D}}g%v1~F z+ct^K#G#V9eLa^R9VV#kvWW%BhKAYCFFN9qccR#9w+UXO0QlfqzXM~2m!H1(&qTPN zAlL>g*PkTZjVB~4D!{~Ir#Yo?NQ7circVYmg_4MNcMEUr8{@@WE`>#0I4(#jNyVF; zF>LiHp;#F-6euww1ce>l=A)AYr;Uu`E$v^!fAft^(fWju9m#%^7`WMrNiw8YbEqr4Isc-%n2VXY=yw%teAC zw&KE)m(Z!_b*tf;&@55G*?Avz0zj*Ae^M63wJ1Wu#0%?e)t#nBmjQTbvfC8q^&}GP zTu~kYmomYvGf-g-K*k7`GHG^W6Lk46J3%bjDZ=7W);H`irR%E8u z@O|9gm}@Fk(%{vZ!w1Ec{$+9Xks~vDLe}V2k*7~HuWbnBY>e1hsjvU z;Vs!;*x1^Ix(8ilx_}THE9$p|45tbi&^zX<)$YoWIn$vhT%7i4#@P(J_$FhE<`^A4 z8ugWE2X)uk-3>~eu(h1-_#I7GY2||^Nl=y>ZpNt2OfaD*@LldW;l)~}({SsX7}PH2 zXYp@6Mx0LE^}DIRmgmXfn;pXR!(OlG7d6}7Y=`I-FMZM*FJjrVC;}BddX0;OUYXNQ z+dkAq9fzNY^K?m;A|KbCdSIFNVyf@h79)6u4N2Y@lC6E?iCITYFBjr<8yVyBK$ z5QOJS>_A|o}v5#D*y3x?c( z*vEr6fbIN}D31v#&La>>nGpyKeuy0(&*=n^WkJQkx33qFXz*480@NM9;rIMMc#a$e zTL4#Qq?d0rXZqn#`6h95{Er%i?;*lVR|Z{mLugr8YYS)`KWDD#YiozlRH+#oOR8++ z$R6jW<`#jNf)kI7uYs5CF(0mPX|D+nH+~nYL~Lkc@W>qyDp$S{i(p>SxC@F?Eg{aH zWm{-A=20pc(I1LW$k?jYm<~TL+i@vtNrXHZBG^L5n5`HI5FF5}0BNMH#qcNN3C^HR-avY3lbfD@ z`aX|_w@^pNi_yilYxkC{yy`NbMrOqVfCKa2Q9pCr?JpAdY@|h(DRDAC{5kdE*=X+S z^>JXKrxP>T+h$)xvmkS4ldO1$Ly#uaG=`DLiox_AU8g;gEL? z5_d@n7qQMGRN-0gvb#k5R>=KzJy)wac#1fn{6x}mLnDcYZzQ5XU;t3F)LyFf-7 z;kkoYEBMkE1>3xWUav19r!->*7zLbcKnubg%i);YPBo509#Me;miuw?Et6+vppHlQ zB4DS02?S1Q`zYLU0w+yT8%X1rzVV}IB6;WO&!6f}3H~A}9tAF7AJfaE!AV#Avk?5N zg?wN>>aU(m&#J9Bbu;&D$HM!!U>>o&)daP9sjaK z<%UtIwYRCCV=asGJkb7-M@YTTL8cH?qG3AZ^*wh}lbS89RbXu8 zjC#^Re}8y*$ah>uqj7zbJolxcH-}N=3zu)0cy~%l%$2qku*t|`hCz*bwbv{7z=9L$ z0SZ?n<$eNCmc>F(jUsZt#`)W!zLpj$S=(Uk0gIrYMno{dVX4Eap7FX0m=R`)`4tBF z@{N;1sU%HjiA+2_z(#*JLcTdgPszljh{InTp;$3xf_N)zftOARfCXnG zUY-lK$YAwqy@I1(;=dw3Ubv=PWCV+?ysR`#NzuCj8v+@Yd7BVs`V8OVd}cX4eaZFR z+LU!sQ#jSyS#Gac>;!RuPy1`c!Oh=8Y=K}8!tYj|xYw`V%AZc6WUVy~ZF`Cizn!Hc z^-|V*bT1V&8bC!va~>KUj6*`g=p(Jq(|tR;bu7A%`TPI<9*d7W0aJ!B=1v_-8B z?0>A~JYzauI4SSKw^j&}fPwNl-;~Qav@Lbx=Zz(mUzIauFJuPg(@<=Y7b8vfj!l-~H=A1eCa{45bM49z0PvgjqhS$!r<7{2S zMHJ`K;Xl;^@FPZXNhzYX6&rpx#+|PNd`waxz)P?B9-mnuoJ1X_l*nye08~| zGACq1B+?JZ8Nymt{7RM{%vXD6L9WU#TwarBwMzS{5WxwAUNN{LXt zz4c{E4takmbH8%td3l?%_Rh9AM^&GgHbpBz)Pf?4NTPO1`wF+QRRn&Vr{9C-AZZ=r z4Nk7Gmkpyx4UZ5NX*dgrn)9U>zJawJF71mJVWEnEEJjj|8+`|@c+wHgROYy3oiIPI z?HW-=&t?^7E?VKMzClT&MjCrPNLgcf8uE|!+=y5vbSiys+yiJf>dL7Ac8DeQ}b) z?iM-upk0C^eJt0{UxwG;e}7z3uEk^TQD}jsPR>cUuI1V2s5#qe(`Y1Ye)N~Mh))j+ z5_#yeM$mn`{VuT@FdGm@gCJmQo0~SAH7BC7$Hpxe^Z6AAH)U-t)+-DUIDSX|FJo#v zi7*`y?d@&iJ`4=&>VX!rmVlMb+}wYXU>mol6OF(=Kl#fS4OFay!FbXgl>$Xz_@h-4@@yU z0+!gCXvmV$Bz0BTNk|)_y9{cQ+1G;Sm9uI4NKhi$>HP9xDHHrGB8m3&F#0&Tk+xvC zNpnW4?0dIZ*b>X+h^?dX27ho(D$~*U4grxe(|i+E$5OOge;hb~dLme$+x6~Kq zFYPE2R-e(PNZ9f87@{aHV8F>;x&OqY`;nDh3jPRFR0!tgqrBMwwRY}c|imc{yd#UrwM%s?` zxo)f8ZXR-6*sjNi_R&$77k08vqk;aas>z%qPjN`alvVI}+zKBk_N%odlnYNy5nl*7 z`R$>=Pxa*%XG3MOvBM%PUdfm2NmIL^Vx1z;k9zi7>+q63{m!yel5x_UtemWOMkJ)a z?c*tR42$=qu9~L6i2Bx|t4>j5kwu4QQ{bbOMgzl`xOwkc7lSeYgWuj{u#d~2d^kR_ z?R+%EITv!?H#q2c{HBzK_l}v93X15#Nv>OTcH~qlKMW= zz}rLCn)ByC|z(H+k+9*YnVGp5SKkjE{b z-QWn>lVd9Im7iYqbncu<$P7FYmQdg=p#Ab)2-9Z8d#^Dv{G*@^59GsE|LtNxl?5-4 zI32VtgQfiKrvidabvu5E-x+tOTc7PnYCQ}h)zjVntF0aXdjzCwC4-kH{^-+e(NKc( zQ7J%obv>8aS1kn4fCHTgJX*5mwEFi@HkaX0kX@MoHFnh!%kFrjZ)4!bV_$*#h;MSX zK%O{AKAIsVy6bW2u+EMGzB;{D%t#a4!0c4c%l1+I5w~Rap=5< zY~6Szz00h)>~ZHhe*)+$-6!FfQ$uJ2OyJKom}zr1!o3&pG;NP^4X}YR$op#c4i}*C z-TCV9_CZA>o|sAFYmD%-7zXaB%E>77ly&clbR}&Srgx4L7Lus@r z>Q*r%WblcQx2VlUDg;=0%A!=uMathHpJQY9U+XgW?yQTtSWhd%8GY^>8m^nb7XiME z8j)rPMgPp;q*h1!O3bi?j&m&s=yds2Yi?@7GK-x)SE{w+F@Ppjs3I*SvVdNLjBOU3t#@8CeU+psIJ@`iX4V@=2^w8IwO*gbMH;0 zs_5DZHDkNr(8%wx3$U4cNB!vKs*Jk`rfvB?Uo9Xu`T?1hFr5V&RG^a0tjKi=w|8=y z2gM2$9zl{bT*tM)t7k&O326welwq>}2&hL#(3w68-op}`cmy~I0389;rjD_ezmYf* zJLh$t$^B7Gox$Kt2E#mZS|I$mdc5K(NzW>2vY)@U_uVyZu?d$oNzc`kwWc)d!ra<1 z3Sklad}H>40`D1@7s7U7Jz5+9ZgPol$m-~qilO90*#jL`! z#Xx}LNqV*kna>C$7Jz^(%Ai^Laou48)OngG8clj`q<~*gQ3Um@1q2jny%>^P^PEhM z8gaIy-oex!US8EPDR8@|tEaf|aD&ww3|n4yhtCr%wq>b93!fLZ?HvX!XqE_hd-l#h zt;T52IUiYT0ufh~BPI-+3JLiUqNvJw^oMsaK!|}2cxq*p<)$Z4g zGeqoeM!N}H7oHLjomzd4F@QkMw9gBtzb=#6ig(oY>K!6yd3!6zPr`2@2Hrtynl5wY7*zE%T+um5dDYFbz{ z?;AI>Nsoi+UIU~@tTJS5bEotz0aY(~7cdKK9**kI-$zn!mohfJ=GSG-szU_i^@humzgPccBxnH~MdxQ!@`%S} zJy}}VE4z~d-Kt1fHxcEI4qhDfzp>fy>|1hOv5rnn#Z%DOkiQ}dXEfg$Gt<&D<-K_O zK6fL}mg%YR|K2A6oo!R%eR`KbOGEMgmIz!BWCdzqyS_# z+}yeEG>+OV!ga+T)AnYP!|P|w!j(uTHQ%Z!$Z4p_U0z%^01ePw<@Zl)glFl8?U&D0 zd#-1>tq*{4Tk}n{KWN!bkP_cG*shv_U(N<;GUML1^8U$}34})Yb6%4c43DRpFWMj0 zkW8^~6(+T&8tautaSSzOJm>gi+t|;-l~n&=PuumUdN>H8eQqs`eUJH~sQj+Ap}#*r z@T-^Ua(ass&s%!z-cxrfg2V4HJEm!5Bsu^<5>Q&CR+MPDe4WyeLo@^5o$}nM@ojEx z9nU2IZGbUlg0bO)%gV8EeF2ki8b3Y_0quoPgPu%JjC0HPm&q%M`E|2py92^E)SsAP z(%rOC>nA)^ky1;J5qcL5jhZl#$j-rpLviv=pF<^mA7}Bil}`sLkj;%~qfIW#Nuv$S z5xG3e%6oB}@$Y7@tb*31hN1nHWm%f`3{)KPx_SEgH>m>h7B^@5SWPlhw`4Ni zM1*XBYVdl4{j(W>ZH?89pStY)!aYUYSeg+>g$vO{30oQ0!L}(H_1`+-;6+@QNj$gF zC18+`dhRF#(M>cK8L;-xj)j)>!S4Xv$&4u=wQ21FJCjwJR+3wkn)_tqwDI1CDNrDd z7WEGSvCYnjK%JdM-(B!(W)I954!c}XUm0Io@<693&{r_8lH~eWr0%|N>Fzl{(bJho z;*m5rqa|n4kj1g8_bnpd9Z41|_$xU+vD(~(k&hW!NWaOQ=~A#!{=122megG)q>*|O zQeqE#E;1;43eHwSdW0Wj|J6r?hLgn}|DFeTQTbY?CxJc9N!1gyDghK>|Jbeu_~Fn? zt{%o%3ZR4er>gsMi3Kp$*J_igK`rMrs(_P@myhNu4fR?$gatJ5T7RKsgCiGtI^?cv zN^leQ+km42uZbNv)MqjoY%Ki0*rP!T2>Be2);iWA1WFgD0u`Y}VmL`_mzn`}m)R1+ zeP25ks{ki{$zdxdEshTeXVB7gKk5g92Si`-K||=s!F080M@J#xz_TS!Fdr_ynBg{2 zk(V#dbkg?b0KFA89X99la%Q}|_kVX(ekEhG6h+DZadOvh#TM5_ELl@CPQppZg9n9M zUYTSzJYzaPgz)XFLou~!;Nq9wm5@)FOWCCUCIQY_9H|3G+9)=0EcnjEM2sF@>2PAA zpa&1`z&SZyIp&QB2$u(l+>MV!TOQ!tQp|sDb6RY1Q&B~WPWStIe(puNnXfQqc7;AN6+R)5}Y*m5ZheEww z)VuGUtz+Y=!z+k|Xlg}Z>(;Hs}n?H_g%#Y3W=%;a}hJ zE0hS-4`04Wi<$IrBb)gx`{2RHs!UV&K6d`X%k8CSkzLqT*UXc$4(8dHc=~>m1Y6JN zi2?>c zTpN6H{7<*Hpx#DmILkAectG{!fX~(Z;ACXYZ3}}q$1h(dWt^Xr2O3~Fu`c7h7I8y* zeheZDAHcN}QynB1O|>nFVem4N;}?36?eXFXTrO_3c2~!pg`*RaAj(x2U;)tQn__5~ zP5oHFui|k@0nD$3yYC(6i$;4-$DTenBa2gjGLA!uBrk@Xl_}dGZ$1-*!MB!KMq`5v zm|lByL~gR(w-Ql##U5nJUP0z(I*B###PHbnKRx3Ble9|EA5Ph}qiIq?_V+F{c3$Li zO&TcIdC%6uRsRsuU6d{gAW$g`b@zME7JdZ!ApN<^^YpwWVqK6`j!WVj>^L&=;sC^K1sP2cV0b6UML1vW{ zk8%-fiPLn)Gwg@!oXX!~cu`()36UvL>spIq;x7JnO!MBEM3Ai{b?XX?Be0e!^7gvV*K!_8~Ka6N93eBt*f0??E zA+c^09-jOq2Jbdg8>Av_%u&?xz)ro6MX0#m$v_-3qG`P2-b}K4S!nW}QCl-ro&di< zMdg;M@uL?y#(stYq*KOQr}MoZ%rGUgE*^hs5s^Wk6nPD#N*kE z6KqTVBTaTp_uFBoA7Wyx`BzG`a__6d3WXWwUEejWZKEQuC&!^myA+n|+ghq+F%wO% zlRkYJIL;C27+qS)_nSBp=Jre*cKeWfqy;&T>r&?oc}+mHEnHrQHLy4GotOw9Q+Yzh z6xB}k%IHYpdNZmku zUM~5WK}`%)iAO2~kkdME7$R`s4QWae}z|d&!e8O4xD)?xZq=y9CEB`0cpse zqM4k%<<8op(0^;^W8did_v0WLNPC96s{); zd4ZeXNMRT#Fs>~2BdlL>7!N#PIrA>lxCf?o1#Ks0j@tSh-*=m%0)7cwo2&Q2pyMn2 z)M@DxJmc%UW~L+41Ms?*6{h%|y0g~KTA$9TYa&WpEr8|^SHp~o$BP1BONtyUr)lmg zE|CF%Z~#;k0QwJ0sj<^L^8lIS^Bu6okg*>PpVkgWv}pa!LH8VpOHHH|%StulyRvJV z#JnvosdiV23+fOS0Zx{rT!ZuTAO?`pTt>;@j03?L^&*-v0?R1404hx)UXvPx{C_m+ zKqAqlS!2|LnfwK4*%0UdmLrMQ-cCK1=367dtTTU^u$`~_8`L#HK;7~|`8h^eRpGiO z)l`*4_LFg+3{!MoI_1)Q1K!@#!oloiWZ`x)`b-F)RNpUt1Pgm39q!^|LK3!cg4@XS z`nU79y{ehXhwQcW7U>i#5vtP1EejRgY2oY&wFoVpkVx|(Zp;@_GiOmDAvLuP+6#zY z-1Fl-U*?L7a3d;zGV2ZuB@L_kG5CdM2GA@##Gb?O_)bIvrZ!4yEWmit<>g{G7*|k% zw~!$u*Fh<*9&rU6)Ti)^b<{;LDe!&4qLQiVckV)}kgUybGj4dz#WrAfD90Tyx%AW= zXU90zoW`b7OfMJX%GE5Jg_q+FXI!OMX9`TCDXRv`=H-B13_|Ak1U;d-wV9TO0bSt28^7j(v?ti5uk&UUxAXmOCze@_hX}pKx3yxoZt#$(x;*Q;@Y;c2);Ez~Ssb zhm*r=Tal#}*)=CuI=0(x-u-5q0zCnYX(*8J)1k{W%mrg2xdni(oOZP9XqA(& z@jgb|Az#tRk4CKL%ykBiT28Nf35hAI0t;FI^y38CHa+}-4UN^sN0d5M-)ZDz# zRffpyaIujp5bCrW5@X~j6pl}d`{M=Yq9YEWljm}dyT4_E|cJ5A3 zEg8jQab5xx8pS}Uk+%(**`K;hr%JHLtyart847q_`SC%8Lrg{iB;4v{P|N3KIeoO& zFo8Q8*&!E}kQ-gNuyOd*5?uJEyL|)^gp&s83xCw)1BrDlS2l@Zg4y`+-e){@eXT=f zje}GY>+fhw-@T0KYl8Kj>E%z^@aC^2oTKhy+nvW*M^?clg zm)5>aEiHg_&`ce?y=pJ{$!)fL>N&^n6c-V$Zkasg2NT4D5&`YBbIny1Tbq2h$%V|G zAYt`8kCW-1G*oUIzaNta)PZ~=p$(ybOQ)Z6GTOU$o;hI@U`*xP0}a%M&Cg22xpJmU zAsMtaiZgny^@)&&_SHVFp0(`c{Utrq!{%xJJV?h43jvW+SfLuo-Dt2WF^m`nLxG$2 zkz|tHIdX=sY%zx*?(C>k+k%bm)W0WQ9jxo>pdfdVkTM~ZcdJ^en;yK%if<`-ICD0y z)8xK-mw>c2l%3X#lbZ$@Uumg%J1xnVZiIr$$|*{C&(YBtX;}>7 z?-K=n{-IUmjHxFIPJXk;40>+)0;1*Wp(@oAI8E*;02v&X$hB?$9@We#-k}jVBcsi!^0Zg5gM<{ME|A+{ECmvh4RRDNa ze`dyOLnXqQ(JbbjpdSoW+@XyQ9qRH!dU`gW{ty(eZvh>WvWA_R%S&@vvC2I<(B!h+ zIAPu03IZb*ul^k*ykwjN3=?d4JPqIippH798|M_7g#uJqJ=cF%sPAjpd~S{J%-9dP zMe)&p=c0Q30TJF4-nVqjY3}bk_szCTuIF#R**Z{7zmOg{-3+l*JI1Tu`TLxG@G^*~|S*26#$qe1`HaS5(>P|h)hc;P@ z84XsqJ`{Qo*(Y{5VP)nmZKs!4;0-Ne_qzK)GfwTy#u7{W;>X{yrfo$JwAawOTFaum z$}&k+MUnVT+d5JLf;HF}nAUkTE^(#1@7Qck1JeYTRKfK}VBtUjo4oSj-yxcti8YQ+ z{c@H?tbs10EMPj%6wJHWGJOCLVATm*1axd@19=y%sjNkF5*+%Y`;>6v20q_j^pRkW zG>5+clpv6Pfr^qIJpl+Cz=T;a4fkm2@);;eAGyOt)NGoYszrh37*&t)cvdh7u#64G zP{qoiO{ipew}Ez=@8Cg&XK0~RAM>E~X^L8Ld5UTaCA-(Ff^I`rCo_inx$tw& zpLK7R;Ro59-yZ2_aH!xSC$S!{MJ}!0F~qny_#Hf)$;iH|JElEP6r%m!Fps7R{cAM} z6>Qgey_^%(=*F`}26JaaDb|xl83dL4BxTOtS4t4`1=J>~qGDA3bfTMEduI_(6X>!> zB!N0R52&+u-SyxwmpH?Y_BWD#oP@8p4ngEjTMVl{ItTi18g_Zev6Dkj&&ASjd$@=P*!+g%{#pSXuLeE1EQ!mR9uOJ377M? zIG6I5+kgVl#EIXym=y#fFmMvZ@@F|EDc*s;Q$?GNSdR1LnJw(1dhL;cCs~!7mb#v| zTYr?%EWXD1s{C+dvSC~4>xq+k%>ivEKnt>M)_GMf2JIB;p8i`oIz8H(iyW5|3+LT9 zlL;nNHcipv$EoB`8*HeDc&r3Ce4eOFd7!PTj|`}{6eJV72dUe`jR5|-FIK;+E3uCG zl63TOgO1m+ww3C)3A21Z+M6V_dUqDp%Um_Jr5l*<_4>a}P(>$KiwrR~$QGEu6S0S>|sUUfP;)r9Z0Q-4Msn+ zTPN%F=S|oMi3np$nI4r(qa_pA$jY1F+a$9SLoDrCjy6F(Tx7?Y6PZUemvzqfbcJ-}`bMPMR^2EhcJi_vC3NEC7$h{|Y8 zco}2ER9>0Auo?^F^)vnCKSf=<<2jXE$E;L$9+D6OgpXJYHdWxmtywuLp zwmTRu=+eulzA7mq9H>SHibzR*KS{oz%2LVaciDqwOX0K5WmRIb;oN z#j7Ga7PDWxKSXp$fZ_~1B!S(0yvA$;Osao0kFpmCci1K^HQ3y}d=}CYSarJh5un%) z-r+k&31wrwak2>++uGW(Aqu42$#o5R;+{5|IFE8Ri!HtnoSoK+i<^s84$wm7yY8$N zUzSc)m>s{dR<9jTcC_$BM>=>4HTDSz9q%g}Ux_CvfVs=@jYBM$!lzzn3Hfq$J<28G zPNOcP6d5^xQOg{<)(4Q>vNolR8R?L5__QNg{rodx=n2IeP81;3doEU&c#HfVs65_Y zcC#Kxty^#P4v0=U9&W6{@>QbY-8u9Ln!Jcfa=)6@>?FN=TVc@*{OqA12ReZV6@a5= zb}(-|;F6gE!^L;xm-s7J+%Zfq&B0?MBs%CC3jx2x$e6cw@%{;gt3`Ii1hr5tW<^8z zqD^n^y)Rdw>EQ?J(+?#=rj{@0=nz9rg12l;SywFCx)PNHa4dK(ZwUq_o!{h8Il@`x zGWQ=6Nhaxu_l5)$WkyYTn7>>>OZ`znVFC%~t#$hRiUM-Mvma9-Qt7WVH|fC>9XUcQ z9ct6Ml3JzWdJZK+<)#oVL*6yPM@sVkNzz-5u<)}mo%MJZZcuHS+e|uw(L6Ar^$n*F zCAl;YGIQe$JTjsVJfVO~hKU4-0?XlhNnZM0r0;V&dH~;FevXf5?40M74CjW{p z9{_e#>&&*64m$?yGr;`!_eq=~Bip!$6iR*mw+akpysIM_Hj;ivtJ0P9kF_)$Luj7f=^qu`*$A}qmoY|bdDJ0F$RKHf zdfF;N0F7*vBY1C3y?OEuh!XCJ11FbX*ue4t*r!zd4#TLXF%J?m}GJ*pQ>TcB0 zT2v(ar!i3c#|3j4`^1np#5iu8hVbIS9 zJx4OoQ^yo|_Hn5HJda4JuHq?z@JCD&B(chmK7?!m!4A$1Bg+?H&>J8!wU}`7_fBOM z4Y)rEQ`;jM{t;nUIk1;~xYpmd@Zk(NuA=^87& zz4dwM^AUPgJJL@vASQ`PV~VJvO4qS5BgBF|3v6X?Q|CM67{iX5pL(EF+D=T=)5?Y? zz8TRk-{ox@%5(Qbk!ASV(^}};>L`q)7tI)gJHWr~m)V2vp#UJSrcwtK7et(p4$TS+ zpv0kQm5DhyX6;adjGj&(@y%?S8U_m#le2-&`u)Gzpjn204+I0wx)K`TD|fU-)IRrt z2kG4NF8-A^z_DJ#Dx6*12T_hffk%Yx+w;+K{s>=L(-cV2jP^Lg930VlSK>L6MJoo7 znbiP$V}>+gj$drodPD&jBPHO{7SRycI8TZe4JZp|Z#RDnecDo$g=F@ylJB(&#+J^@ z$gnYriw_ocj~FeV?B{jqR(3rxF@CPPkXJtT!K~ne@v&}s+X-qGr{E;hq4aGlf8Ezj zO-(3zZVR~2Zp8&fys7<;Lf!;QJ^N*VDRDpxz7mMYsib-|fl4696e3Sr0C-UTf{gW1 zGTni39gv_tfjq^jVL1k#Q(~nAp4w5;#l0--66Jck~Aeo{W`Z z0Y9MSl-yw-HmE9<6<6N!xN4A*~f8Gx1+_dJXYB`$AjWAU>aZ^l6Xsz~cdXjyT`BW#OVM89m zGsj}5oig^mUZOd=j+knv; zC-fgm;0Yg-;7JI&0)+?7rKab0X93$skFuE=#zMfnwC?`tA~Um#VYikOoz4i6I6@MefJXg+I@QVg-jB@li%K23+V-uA;BSz zh9+AWrJGH6 z$ELe}YkSUp&U3%dGsgR`!=d|IYt41d>-x;BXbqB^O3m%DbyM}WEvRy$yq?uPWw8QI zq_F67XlC!zRA2&xBMX#z-5z5JlSQ@*FF_v|gr%*vFjnm9zT=5I#j#mTXE%I~GF)A7 zKKJeksxj(_2NKo2!}+`(>%H}+6Ch4-Xd4Dg=B5*CBuhATf>cdLO?<`vWanD|{~81Jl}kaGMdu;duE_HckiTMy;q* z+&JtweLBA{l?}+lIwG8Bus>A&lo^8N-SE?kew|VHO~hOTO|L#rfy_FPBL#7Rb#7l` zs&{80n_n8>FhC>|5AZgC3nUUKp%S+rQTDR#w22hr9j#2Ap|>PH0M5D z>@z(DFM;}m-R%=c{Z-fMl11-5ZtV}pSAnr?{$jTZ+ScN?tEn(8ZPRIau8XQMkW9Bk z@71E8m+@n-QR>QuM@H~J={=nLq+}-*pm3yIKwz|k zu?YgYo=7e~W93=dsie$KHF*p9`@jK;IxJ-jY@GXUf|-w@+eBt$uR>JruRTGwD@HZH zk`sl|ia{YMx@2gmEW4`s4$zjUzY4tI1OZ5o>zkAvZI=xIwfVuQ52e$~kxeN-sKsNy zIlP6n4BojW^8>S8!1ia4TB3V+QrDyzT#ABUKFqC+65Goub&7gc%?y@KeL-Q(g`?t5e3h>R=<^r17us3r(>d*}`i%V*fSKY) zU&S`QlhV6Wf#qNKpb<${tBrH8AOmbArpqFjrN>I956t$Dh28psMLG5KOzn1(B!bcQ zMA^kkibJqPT0lescWm60!8pYE{KrD|duJA|Ja>ZFLwDd-q~=I`V@;#iai2M{X_saC zkE6(C<6kp#G4BF@{Cy#HtJ0si69_tifB^dMUMQf(d}W@H8yTBbR98_`R8jcHtJh*! zXnFuDFR+i22cm}(@;Yo}iV0(ug0il9f*!;}6RO-x4OW2vb{A9^B+N(7|8Z!e2Q2ef zh9#c)XuaUa7ajPMtxaE$QKy{ewQ09k^>3A%W3{oUGq}h+%mCS2&{LQ?o^w}76$2f5 z(8!!Kn)&G?MN#?VdCG_80JT1NPvw7r9O#|a+1O}e!pWefT|d~C;j zAX+`PjK_DqO`!jZvh!2_W`cRY5ea9`$)JRUtl2$b{~1xKToS7eNF@XQ6LU^5o^Srp z3(kM}3(*DacUx_8B3{HHf0Q*xJRzU7LRyKQ&)q8C-1Uz3yv?(Z4YXuti|B09EB>_O z$LX!myO!+*J09AB*Z-&`5xK%#Gt&U32@6zi5I zs)-Gx%bk>q5{sFDj8(2wd0*wKlCV`0Dah-LCSh$Er7xjXNc{kN*E70>ce05yl4Xd- z{N0Ly_e}nv)Te)Z80Q08piNqyEd#=KVf`K!Kur}Mp4-G2jRqP$oeqa8PI5!(`YC_Y zeE{_X++gHW(F|))7tC>pyI;0wp89HVGyO%g(jSxyPIN=u?OCLurAJ$f$Z+>=1y=Mw zNRxlwYJCu^Da!of_)atG=p~9#G?eAeid?NH1!(}O`p99(b?}!@_U4+sP5igP0835c z-fm|3hl!n*VdOz%jA)M?4fajMhVF1EtT5OD_*rJOk`=G@-;4MC*ir=76D6MlkCJMN z^Ov!E?Q=j8J)S<(R2dTt{RMakpo8_7%+`zhUosoguZp=XJ7vPcE0c|4U`(LV_R~5w$U_= zuYuwa$4C{1;9$m^SfT4m(Ez;_?9Ojbu3u^SM%Z+UCeDyryR+2IUzafm{#Gx77x+zP zg=nP-T;y$OXQ=wJF@5sNTK|71r>T&}rY7q_$Lsrp`7Ut!_yGi2d#-$nIbcObehRu`zuk8>RfE@l3B*5>Mmq;7Z?{7P5XW@}L9cLWp6We#SKS zM7=k|Kz0Y@%{rD3ikm8?R=1;>%~KJ-4)L50PX-?#^~*)Eu;m9A&qdO|T*NM~aGWB2 zaBg*0)ScB(F8s3X5&BoTm0A#_&yjp#r8~mGR4+WIPh?Sgv*PA#zNYf!`*#b0>hmnIGq)$7Y zjm^efC15nBQ8pJ6vyX=p?Oy~9k17K1lbG*3z1il5Je;SP7eX0-W!o;2whKz*rMkAB zpMb&J``FB%Ka;lhj$EHn?CB;`?xR1p<8}189y}^;qNXGjrlNpZ z=(BU6ecjgnA-yB#TW~TcIug=9Rr0;;k&1z(yWvgEO<$LA0RB(~MU_ZCiW+#LFxEgS&{D)9~LWy$C=Ansd)tCI~Kj!KCAxF?>;r2h#=Je~;)_rK#=u$v_Mj)&+J#PqmVpEXqvPP7 zm%iA!t2>xwCP{Eg0q7H*nxlfGdaxt@W5P5tGpjp=8beq14f%nOt>NydJRK>%lz_7* z0Y-&2GrelLV_WMt?v>;}L?3rZ%#h9o&-RCO(%tPr_2B*G$w;iQS8|Yuk`PHywnGpz zQ3Q9WLtR;gj)iow9$C5YH9A#J@9+B8!Np#UAYDzuZ^;T;D+)MXwY0To`-(Zs+i@>j zh393*vQp2Tn|udc#rJBrL(1DTsjIxO5J)p=xNW3hzW`yf3#+mr2S4g~~(Dfrix5_wfbQZ*IIg6Cn6z3VO2 zE2%%fvf9V@^^4M<3rGj@bPbP+Ve{(0TcGkOG`ei5V*%U{84dmq;Altf{`pVa^Y*Rw z;PY@pB{o4@kBbO7{16y1PQu{+YKq^zepg=s zVfUtdF!9{~2Kn?qA%US)Bm4fQ2QEN0zIsIkD-`7C(_XNdIyJKV9XJti z@c+X}q88f)P}}XB7);*3EMIe<{x*i3)Dj-O|P;J(E3wl>Z3G(1Wj&MJv*ayd^ieZODmYVH( zMmuNa4fGa*Q9kv8_c(K0w0YV%;qRQZzN?CXFM~YmEajJ)n^#Mt>F+wm31}~M*BVV_ z`VjIzb#guX;Eln0cuEpk;DNBm57M}Q_yRp2N#35ptEn=5Wl6jHPqWnSY3Qr25&#AS zv;`1GC8}mwaPnG={DU|MY~XHI6}`#J7xm%WVUEEV~z? z3Ig9=f?7U~ch|xP#t&)6BFxbw%jSU=(@#oO;zYaO%c zx%KTc?0tL~B&8^CChi}m9W^a|{eId4=rw{z1sYH@O?x)A=qg0}Z*W9!KYn*K0)Z2F zCpL3nRvmIkygre2Tl4h=WSri5k|KBgC~&cuH3hG%AarV$Xyy_0??239Dl6wH-pLQ) zI(fLU7>8$!QgpfDHHfQLg9Kw_8x45r4xAmZYaG$mWbzx7MP3T2>~C)`+Py$g__r#% z2Rw`K=KZh)?BqgBbR6LP#YTDElpI6rni{>8z(0oe zjh@%nn0ugyues78PtrEu(qS*@cvVp$)sM_dRcx_XGyvyNZP@0Z-q1G1fQ zHSAF))?fQgeQV0y0T#&jSIXU$9_*vs3QTGx1Cf*2PQPmJJ;8e?-oONb?vBMb-Z5N0 z?fj45-z{ZfW%-k>`z|*iZvDN;>O~CEFy(GyWT?56V}>!DpUE|UXs|KAuG$B?6kAh; zIH*Yf_B022f;7(oko!O*qnr6?k76x-b9kb;l(EP$pSmuwYNg?#TkLTPo4~)!PcP!Y z7A+!>R3R#od|OX(!{qF4(r=-q&!Qzb5g;XmXCK9#uC5s9C|aU-{YvO6w9$%u=gwP| zt|$uId*owEOJnaYZ(<_FN{?p!PUOzr_I)JAN6@~40o!?pM=x(Pq1Yf71$vf%@@Svl z+jaM#zA;mC3h9=f)LQ3$8aYR}M zo-=K3Icc${@qJ$#jJE+DB9Y;>3Zji`56-Kr0@$e&Bm?||40#E>>bV{`x`9*QdzJ25 z&-j`8I!RS6q&lBM^lN-vL226;C={%8Td@um$vjeQYD8!JEY+dnlvWs)Gocik)A$sD zo?FF;I4}S-xPp<4!F?bZ@0n7q6NYJmBKI~})EF}F?E@@201KMoN?lTMwD96~#MPrV z+S?VFR#-K=<#m**w-1Kvp$Xt0qxjDOCW1SSZxZ-g0ZI7x@83Y<#>2QYo83$h3#n1Z z(UP69ZaV7;%8@1n2_l&EI5X!W;+5?G=eh7@afe)of_fjW=&_?o{J_N24wf9G3xo?X zMc`1#l5)=TF?}r`bA&APJSPC59ntBx3IfS%_SV?(*eqe)c-9OZVZ~6i5`M zFWam&?`+>%Smnvlf(1H`!(7`~Eep^eoNo4jQXL1WhNC=;vDA&e-`q>_x*z@7;1x!!L@bHwU)&7M?`_EfG*X za75sMNq_K!dB>08a}pz~X7C}%xx_};>lbSsOkeqddh`$6JJT>}f#h!rBc?NWkiZ_B zs4p|v&F4--vEOC9OIusch8j~ieb^xjbc}z=vj9ek#$3aF{Ez;zDw~TT4~#K%I~PTd zdv?a%;rj^JmQ+UniSJV$c^^gVXht%iIDKc=bLvQIT`p64ybAi96vTT1GuEMhMOmUL zwE3@Ak3sYd`;jx*14nxV=+()w$|zzNxlg{17$^N{xgN6X+rM4Q4^o$KeL$Yqyg1^Z zcYdMI96~<&Q>N(}KLc-E>N$b3sH%lkaSUdSW1Jtsn`Vn}tN-Kr8;fbDI$%o*1c=}N z084f&ylSQJ`oNa^TGjFf9J+zt_;;EB?Aa&Cr%l|(UOs=|l-KyFvu+E8LVjU^t?WIz z7j2yjanfG&5`oTH3m!n>!`||I(UEB9~Gqi)OWB! zR%0HJ83*t0>_I{HpY8k$nWLbaA=p#^+)s1nkN|x;=jZv(sKy#;F6dhQsqmM|7wDXM z7^tLhnhqPiqaf}(phhhrxgB>hysZYXI&;(d%K^liwJgL}e|8JGGC}3JM=V+*pFr-t zzHT~2*}RKQq?zkzO`$b z5r*Q@mlc0LbES_hSk@g^<#sfmzWTKsZAvxxyZP^qQpKl`BmW}~jMrNHUP_1=#!ARj5|)Y^mD+>b1#0o}>V$GcY_)HMn0&^|~{= zTs3A`)}DQ}9gyBn$mTRxHJULj@oU|}*&q5#8IW}Hn+FYq(Tz8*&<->Y*ZU|fmnKy; zhL_@9wL`@YUx63`aNvNBwCP=#a^9~wj}(fZQPJBHU~%uR9A5cA@0Em#)q8@>kPwdL zPDY3w4|5D<;33=zDC`7kxKxx>-QIj4;sM;;{}1yFthT^koA5vV#))}(@U#^!5}e-o zmg)@V@0y)C5)z6iy7r|djD4>dLAKhz2o69RKq$lo*m+@t2n^ksj{&fjy-2GHY>c4$ zo5jNcJl-}X{;QKLkDxGaB{uUqy_tvK-+I8w4pF|Vb+yJG1EP7XVZ-``Q+(4KIG++D zexb>Mr}>X1$}e<~dETt1(@H9Sg|u}1SUf0r7tZAYbrqnFbnzAp&P+jt6MX8${j_tJ z!bVWzPe1hTaG^=F+*%4aS-?hSw0dF8OyaQ)`cDl2TL664a_naVCtFF*VB;%i8Wq_q z|3lL9E;EW`2o}w#GVTR!?p1a^J~l8~00&-4RLe;pU~Gra=)lFo!T^Akad(>0tPVU? z>#E5bb-HK3Q&rNuJpz1a6fd>aup2xGvo5 zeIRhbBoW^|NoMa(A!`&Bt3q&_yhLwkR`HhYYlg`DWa^B1O_a-Hbh{8rxR+q>N7B>Y zXml3#c;5f%(;HAk!t^GfTJZB)UV+oz89;bw`E$jsOYqT zkYi^tS1UlrJ-)ve2>B^InC!lvi>aCdsF8>u5BKnomayPql2>i0u=*HRyTHS3Ey$E( z0Fe2{8O9`P-@(JR`im$^j<&y9Uo^tLf9=)$GQRKy6pQN9N)F+&2Lo8x7ZG5 zV$b9t*l!id9}SU91@XfF^4qYNXBT>WT#7mEjb%vWw(Yq94D;RKm)?1{AB zAceA)TN~8l{s0C{wx_ZwtK2O==X>d1yq72ImiG1HVp6*?5`?UQ)uD%55J!uiX~YN+ zoKaE$0;H&E5PkqxH6?_YfFKGcf$%8}(CV*6rymGI<>7}yHp3TRsd+eJ=06T-pW(c1 zte`IlV+JWp^7&iR0v-OkAf;^zIc$CbpbWq+!ohMh;WLEy?6s|F1NOW49PiWVZcUX`z<*c45e_@Mx0I;axwOuL=kY|PW^8?6{~yat7h#6 zo6}D4>zAW=x`*u|QZow`FY#c&IEI-Qr-18d9?R7*Fp5EI&JLfuZ|mvhVjUNomJ6ts zfn#U2e}m}Y1Q3HG1(gv3Ufs-m<1nJZCd4wVF|9Fu`jSF%JJGI|XbIj2=Yb<>@RZc+ zF;(sg;e?%S0%5QFF)&XCkPK)DVD=>-Z+*|{Q)r@h%A(^Mn^0T_$K(J90VTtJa2E5D z7(E8|r_*hXneSa-Oik_mz9k)ln;?rwE?6jQ-qRt(&itrnA z84f+x)|fDIQ3JhKT}FgSWJCdfs|dV{PLb#M)8uDY;Wc;pI-iTMJ)?f;hoTKUT#|vV zu>kioAVh($H$FZdLxl*WaNkIMX$6A{csLF7B|*CD$z$*Sd*# z@f-$g-0eUEj8Wd@;ygX5+l4T9D$s__LuEH+bGwpy&Jz+d*MR%13|Ja66sF~3KyYH4 z{j(8jN#lBNe642j$WiJE{W;eZKP3CMUwiws^N|do=p`WlQeo=rva9p%?MGozA6B!* zP56~~BPu6pVDCz?8O@<6iXCdLjIPncM<=>qP5q)I$6sE!g*7_J_{pE~zYSL~UrFz` zXH-{hiT3Lrc>udF+U9dOQC0N^L6`~3S}^2g2*B){U@^@<2Bg+(O8#tVrzGNH^T_%u z#l}B8Tpb03J|N%avds@WNOYTi*{cUYexUf)g8+LBPqPJ3k*k5;A(pT4virl~D4-{*)65T~k zJ}8Nf#Le&bD7!P zvE0UBJQFlD0T!~;Q2EwPZfy~W$R-o;*~^4%s$Nx+RHk^`rJ1^-BMJQfXrJ@##k8r$ zOuy)(2KA1)ytU8Ht6i&idj!DzhrnM>-0$Hq=JNs!8-Q^#3v{MV0J3+VTh}sWrnqU) zxKRo4>qM5A^>e}JA?qNpRC#4)_tz5UI0Qpl@u>iSP|YL6%@-e7#>LDd74dPWP_Y7< zX{!A1PooQ~u==bpuma5MlPaDf+YT%02zW3I{FnVc@wA5X(ZBehuM`DQ#Hb z;dy{xroC{Jb830>4hNn9panoB2*d)ApN25%xq%yb4yxEdS&pP)Py~XB7{K5E`rhZS z!4FQB$X0vNcye(ZfT_sCV|mzoc1MbmQsnV5ttaWle-fWJ?Az-FU31puV6$>aOi5YdbQ62Co%S(v-G zwX|e5q27O7=EgdfD?Wb?r#m9>P6MXQw^>|33hmz0(pno#Se~csjpS-(=ya^$%64)V z%%CP6JebJkCmfx3J<0*4*JHh;J{aO8y239bYP(vbz+P;uHllwWU;}}f!Eb#6v)h>~ z<-A?s@#YieS+9fj%3&Y(I&#F4x77?4{kRMjh*>*Q^#JE{gi;y9I=zlZ0$b^^N@ibf zRASUr?F+h90PiXwDlfQhd6Hma=%m6|R-xGL`Jjqu?2p?f|0w1uJc zorzjT)8NmaZ^64H4FBcGEz?%Y&UEm4^Q?ksE?ss+KLDrL0zoXY;nd^SoIsJvIK~u3 z>N%oVe&)l1hQ43oGsDqXt8>uQaQh8x&!+(A?NePA=&h~7{iJYMxEjP5St^nl=n78i z9vdH!w|9Yk1CY8z-f1f1?5$d%-{VpzAk>6OX16> z-U+7GM%lz_ePfKTU}DSP)@Q|aQkgSLM?gV#Yn+zZoK`(d^!IO^LUz{E>}b7G;UU3DN%(q9>(_q1%|W}izxW+nHQKKF=one+K~9> z=Nj|c{@eQP-W+rFLu5W_42VtQxQi3Plg9}lA;*+^Z#(@h5QDkoAO1nkBf;4kCdh(B&kcFsV~82&-QdV3OE_7JqY{}+bc709;$Xw447 z*KlKEgpLzz{KS>}}k))dj2NT3p3^ zp0%}m$;QO=M0QiSfM@J?IMQIkDBKzXx=e?6;Y)!y8eW|19=Xna)KqpmJ8TGLsi<60 z6kC#_tXn1*Qc?Idrhl#wY<-i*@$M$3&x_PtZ-6WMZ!>t;bz7lMlfl{z7}Ew?K-R!+ zO~bt+wQxZC=vNY_y4LadfELWt@MUcp2x^v%*T2Bm%b@<#0N}Zr!Os4n|1gFUpgp(U z1S|H+&m}hDS!#kmF(%TG!$x| zb250QrOV$hgHr1Im=52cy#dS}Y{fnry@7a-{{tv3o1mNPx5B3_ z#UT-~y`6*tdyeu=5s`|Zi8nnlcA6$u+t)G&tz2+^I&s`5zONS=h~<0VfZm}Sd=TvJ z#_9)YbjcDH69eq`Uy~cZ#WMh%ff~+-3X7bC^T|kE&xa(Nbx@)gMjE^YR~hX!{KnYq zci^`}rLs=Z%1qT4bK+21d`)k7XGVA8hadOP<=3H&hGc1Y(Us~{g#gy7%Kvsr?kYpCZAjK?rN^-D~PPR&RlGjr+lab?mdtB zCcOpt`YXbN6h%u)3((!UBq4H^F?hJ^SA2I0<7n;$`d?Kd)=HhyE_`(+u?j)+f3MRI z=khjMl@LYr8t>FiMKm>R$zD1*%Pnph8`90zaG|j#LkBFyot4^+tj;K_#DJR4pd3lb z++$+pg)I%(FcJ#(wb`n*l8QJ9y_4bn%Q0+umrqCI+H|tV62wE9$iXosr3<{gb<=58 zPI-H9}Al`da)9Dm;f=wJJRp;4Igdl2=3M$AI}9-uC3({uya zzVH(NX^m3al00N$ykK9Elp#fs7a)B?rkk3sD*eC!xz$Vr1%$%dtW(`_FcmL-k2v%% z^0`2$YeJiXx;Cs$a7uq(H%Q#JgS|sN>oju;re&#DvfQ^bb+~I$jXDUR1O|fiVTFA@ zyr-3&ykgZ6vq4R7jBNvRQzBszhhlGm>xYra=f5YzWjHg-uqMc4^d6?Y>d+Ve&fS)j z@YiW<6M0NX*}S~tS(t3SAqd&RK=)vzO{|vPJZO?e?RhweiS@~mNq*6JM5{snP$^CVM8oQVaXbRt zQr3ILS%-XY{$+B4)$poR@qp~jS$bo$o4$98^i#%1=*EEB_@g&sx~!XSpZ1OC)AoH6 z0lCFWx`3+WY5g_C4i(3tnDl&x8zaW&58`As)K&84soG-_TkSt(O^E&XoM&8Bz-CE9fx8f2@U{q1naUTXp zdl%4&0S@`#`jvIq5S2^%&stPLVPP^mNg&Yg)cD9RhDo4CZ}|PfGpQaG^6WMv$M^=* z=hNUZ1%8qPtt2EydECYs z2o|fKX1b{~>%RnA1sj_v&bw6el<|FT2^opVNlzpJh+a4Q!ZS$}G^3z{jgO18)p$^R%lvE}Ov+ zDaq*=V`cuMc$c@8$L^Nzo}O_|Rx}oFpC?gQB&EWU?*5MNF!T54CG+_ znV4$?%(ej#$N)B2Aq|r55O$S6Np~>r^^+9#sq$+y*jchfM^SyrChxW>i?e|ZKLoTJ zz?dW9y@2&cvg0}Gh?CBDdl$%uY!6O z%(U&mPWnAOhB({n18s2*0&(5IB3UDG1@I$51_J=#7n%+J%B;Y;Rftq!T7P9$Jeoh< zfv^LfoTH$|QNer$nA-(|00er{2>q;(-urD@Pq_qEvri@CKR213y z*sER`3uB$w2{JQ82T~3^Iel<4PLLovI9^OI?ja$Z+yR%6kdWch>9l15g`blntGeS6 zB@R$$z>-IeElLKH9oBy;xt|_HfpLXLVEADP&s{SZOgFgWQ&p)wo&(p_)pfR&M2m9& zEKhbv#VE0=Fuo6mOQEn^c7(ir!|M6(cX;ep}@!~W#Mfp$EZT#RPkj=n9 z$2H=B*=lNujTUvQ3<|)iLTNPY?dY~*Vg%FrRokyud^xAG%Ay(6FjRV$shQc;`8nbp zkb!`F|DF$UoQ;f(cw95pagt94yMb4x^(pV{?U5xg%M3aQ8~>1k4;zSaJQX~CW8n94 z*)vlDI(thR(cY5u0=fi!;zy&nt#%FvZbb%&F7W!CpD4}X=#Iy%!Q8a7AP5XNA!Pt; z03(;dpH0A6HxXyMhBa~9K)1~J_DzYm#2I$@d<2Q5*`%p$yWf(!-qy8DaQB! zf{@O{-4(AgFzL1Q*e{gGzD;sd#o7ZZet)M`NkDR&)g%G*j*b zfk(JaYf!}K>f@eq0+>z)R869PW_|mxV z=?2D#z0w}19}Um=l5kR;J^(8c-)jRc3@9c@9J~P|bpY zUy9e})Y>I4F2vn@dd&q8;L>&%C^^&emq%16nWTV&s;VdV`b%#9?dk11ZJ~|Vs~zpm z2DbQ!k|t09me_x#g=V`Ug*F>~USIVn2Hpo1wn$LZ)18+cWOv3vv|D%5m&?F^J9)WB zd>Vt9q!5Mj*Oszfn zl|%dLovX=4SyB9a^gR7wu91lam^JrDZU+%Mkfei!>Ky0TcMc!*Ld<5~fCzXH0Zph0WkF`h8He_Y}noL$nm2G95ttaH~W@s$UG+R5KzaVewXbQ9A5?5^l zCM!}$d!M9P(7XT{1_6v=FxiO@Pg#S|>7Pj}Od6VL^Um`|ECvQA*uI0)grVRt4jb+P z=1w(#Xd`!At5gCbPu|CG;1$Se3~a_`FF8vXg1qw>Z0pB1XDEP>UbM%`$Viyzggg8d zW&I4yr=}_cfJ&*~_j|`L3D`j6)0WbGCqnPF&n^*iMwP8gw}B-M-KIMIR0SV z9mQgRfYUena3rgrQh-h}2b@RPw;y4QcQBm%7_Zp%w8$K=SMnO>#`e9Dld&w%lR)Zh zDd;zZ;q;sTKDmq;OFbH-QoO#jNDkMrot17xaD4Eg)KGr#h%=YQ?6(5oj1F+@Og zoD`^zy8Cv;C23B<495#w0c~^rAb(4n7ea1Wb)aE9UtLXovr#E0t{s|E##)&O;KgG|58ikcu9kYdc>({a{e+J zQ9HU&TXU^O*eoF78NBnl-6Fg3E)#H&bp-YuIxra*7)KR(wlPYgZr4B}Bo_2QGrsXH zYI`s0j#~MDcS{CG`@fC67GREc$W?ur4hbDZ3ijeqT7FugFjugPMsBC;9}%oD$#Ai3 ziB)`HCV8x+S~;RjNy^?`AFuq$Zt7M22Ck5J1e7J2qSEX7o|!X&)AsKljF8701UcYp z(S8cjd*W__HV=QunuZ4E^Vod==V@@a+^OCz0yi$eS$LGXbp=cf0r54@tk7M56l7(! zRjkE9@&tJJK{NsIUSQ>?6VVcz%zYwc7|?3wqwlA$y|3cYUgnCQu8lf0BEYo{qnB5- z%5Ck;{JK28IQ6WUIKckV;9U77vJ5PK3dq7ua55efg`pZU}bNDVzXRn^k*?GPH~j=Q?Rj@BAMHF#J25&$K;H;o+x9k;Wcmz1k8#myTlTzet%rUKtb`b%{zyIH@|nc0WAmVc$|3 zagi%N;M{PRbLuF+V`RoHc6J%7h=^M6Dv_D3yx*)1f)rM3P+Bj7+D7tYQzjp6bX{pK z0$!*5PO=<6f`+%G)+sf`-q?O@$-)%@e}~zbD_@;wY8c!VX{yeJnr*nnq=5N`HWy0~2#(b4=y?q;@o#qWH7w9)DFk0{R`otnH##h2!BN5Luu zQTl6%&30~(yNp9qY%$sR`*}p$lv6(miRk=-%}Z61Ji9XAOPqBnq^IojX>3`-To34S zMz_|S9`xXU*JJaO)?fBx zHQ3(>h54aD`4`8DFM|3MG!<1;WbJewRmyR}!Lf*X4B@wgDE%USZm^??Ejr4k5Yaly zo0TVV&UsbWL(1~FYj;>okEA$*PPefO(v#-pqIdQ)avgQo39$$lA4F0g5E?G5U%Z5q zNrp#rx+%@WXRF~qTpo=>RppoHZ}IIGZRECEE%mBlH0W$qrpZ&({L$SlVYNELz?tYg z*uP~P+dSKZfk)|LDo~P#ExOqH!v!OS88%JhzpLZ5IlahQk9JE?HUyEyq7erQ^f;fviKqnQ03VebMXjisgz zwMOyGc3*whlf)cfC{O&|uwwVyiX&RO#a61ZCt^|}x0|NWX7yabW~+~^B}Tg*G+7(j zBbXL}*er9!!w9K^dNvXDo=taxzu(99xXCKl=n~)}Fv0OWd_4&ve9)oiO;q3Yy!E z%BOWoK|36kx5bp5wP$a+dtnX9KJDF*N#HmNap%=j7skrjL+Zek{gS99EGUP;t_cT+ zkKunrEpN4He5uv@t0nG1&}=_u(HdGhgSnWyeJWk*n?-z!DeS%O&$ww`%+b)(S{V&) zy0Fd)BF;xk_Ils=_)fC-Hu--HeL{kZ`SY=MNOsq-NQIJ&x3$Vg*I|Qf+A7i(fuldwvjg!SGG)2ea8tp_3HEe8FuItS3>#yp?Jm&rw*$$2pH&HJ=Mv zF3R$}54VzhSGv{j`m{*Jujy`Ne8#1TAGev!dR8pxTWIlAxWjFXmS1Q}ll2Cl7Qx8K z@4>DDCC%M~YQ#73yvEm^7kbxN!}~!S(!`u*q|SUTgMN#+*cq)t9TyRtOrOcS;?zSi z;NU`rC9cTSKY#5R7Q)zhEW@fwlX|EdZH0E?@R@H*+>n@Eg5v3~!XMqZBX&D-beyUl zv2rsf$fa-X6p{oTm9h!WU^k%Z&ke{*Efr29txJnmCyaYFNHyS^=Qd-Q>GL)*s%3bv z3l)!2s4FeC^f?||*OC?WE}WXWiZ%b1wUh4yNC<*8!TC_QF23cf-+cq)CINSIf^-X1 z$$8F8-@HGr7|6z9HyezqB8DZ^S#P*&zl%sSs6_GR;6zR*BX@Ilh-12IWbHK|xmXY4 z)qu1!B(gzot6l8O888v!%MKadnp}@cc3a4&#;iPq6VS7p{TbhR{{;yxajG(%!Fc`8hj(!z9ziV%D5+R zyRdn-GJ(GaNc+i9O7iGP$9GQSe1c}_G-FM&_+A>&X=Eq)D3VP*$1LH(Bo7r7mI8f+n2!RKD5&~Qx)o9o0XHZ zahywJ$nsts|LMJK!t{9ozHeB;Q94K?P$8UGT3w! zNtTDn(9u&%Q?=tM?(c6ub`BKoVc6cR)`GS4#Ux2~Ov~`c;av%CwhoeeXfy7aUm7Vn zM|i8XimI`V4XV}0Cyi+SaBx-dA=1>`(x$eCUS7wwUk5Cn%Z$9nzh*bmYEA4M9iEZP zo(QX;x52~bNEw-?$&$cVTsyF-U(j2xO`C=;Ns5lExAjlopF%C zUz^A9C{*Tf(DFw>^KU}MGKb5tb*XJ3SM^7s=w9$mHH>kRS?&`gkNG>kC@YUMbW{na za1)on-zkNPMsWNl!CNOyek{Zv%9|2~3McRiJ|SDtK{!>xc9X|dsDMysqD8qv+tqu{ z*_WB#$fkvhR|p-Ig-e}aB1D0^YE*q%z8D$%`L2rc5D(kgFZFd%R4sA80%PcW=&sjG zc(?>mL<%VBWsNTze=g|gH(wc8vw3*qT4!f;e#dP|pU8^IuYrMbJA^r{T4P#SR}tKI z99z6U?Qt@ytP`4i)Qwt@7B}U7JM}FtrSIy%7mc~zF#r`A-L;C8D|kflWcG$^nf~>O z1LP&qQsg4sO|HbNJraHMvFu;|h6tCg#J-nUpsva6;rO-!o`u*w=Yrx(oE98$UR>&= zbYrxn;fT9mTwX5l5Uco!BBkNUNp#Y^(E{DL5Aw(QGPh|6Filk;)Bh+p%q zjp}l~K5BL-@tq2&c-reZ9zVW7A?$CuXAd%4;(6=+D?CBx3vexf7gxRBY2!QRp|_~} z&Ed_no$6gKyPK0F7YSbxiVLYYVRD<$5aY86Pwi34(3?+dRANoHN8rws*zJfne5Aa( zzjAh2ZvC7|2Y`V}=Z_SRXehYuIZSPBu-Ys9&8B!BK-NizPhQ?@#Z}DNuf7ol3`KuOPyg}Hg(fW)bB$dI{gR6 zZ^FK_Fc|VJeW2UG+|zjY+|;-Ag_gMWyA%XNR(AwAUBu9GOWT{Lo|J5HH=;7-0WX!>X*|)yW~a<>D0Z0JXG@^Kf3TmKooEHide!rA#E8% zY!>aVc=TGSe?PFvO|N0Aw;){T74|zBnjD>DR@o4J+yTqBq|4aKUyWfGX(7?Q)o19jV5qZwV3>d`pxOi75s;i z?eNQ~aCS{lUUBUTSL{2osK()vjf#L*)*o#lmiM=p9(O^gQID>!UCZ^K(Fb#aCsKSX zW(|*Dgi29NlyAIgdRQx8tBrIoP#M?}ExU|wRuEH>oo|nmvK~$y5+h}7QN<$k z`m(-2}7rE z_t0C;o4r`sug;K&xdz+&^2&f3xDZ?fXdj{%x2%8MM_$NFcQTt@Gp%=tS!tyt zwaO9s5$aewIi3Vf^&Y1JIkZr}WZnH+%3a^B(nQ*47enZ(fVV)5u9gr6ax=*)^dX#q;3gL~b=Ln}!SE z5GO0{HlNeny6m-c8_=n1a_^gpr4cx_2R z7Ew;l!APr#rC9FCOG@^p{X|6^?82bg=7l~5umK6J=4gk^>8D#s!sf^>sZxZSs8N&G7U9XMjz(2fsEQh$>Wm7?v4aU zP`YvjUE7+^64KCoZoB_0!_0}8URw0Zyht+deM+*QO*C}VHWdX?cjU?6N@ zG}(KMvQNcZ>$-O~m^0vU-F8@VPQ+(@^?>WsJ&$uBJ?fy``-^KQM+M8i z>$0L|!V|Rh-&V-<+XDRP&U*ME&-RB9*%)Q_o(qdPe;H1@qOIsC4TX-M!4{VCZZ$N{ zuM`!8+=$+DuUV2p4Fykl(ulh9(d6)b&&F>odqrI9?$P91S*7ijjS6{=3OF1DALbCu z>AhNBIHQSG^RRal(Ysf!4VOBfq+Zkr$0xKs0;=-q}sja>f1w{ z9d&P7jq9;gZ);3Puhx!DV!f&@rh-$88fbF&-UW(sxWC89Qj9*?q`AU@6`%7X_WQvJ zr@u}pUbCBBL%Xn5EoS?>=}3P#N%ofZ+*M@eFh~pDZ-JVV^17!sKT+tO%X3Te*OR(x zWOL1UV<*2J;Rml-{Kc&lY0R()%nRa%(miOdmL;jCU3OXMiz*xTdwqCb`*<)SPHi5b zIq1X&IU5y5R^=Sq%_J>q^TJIc!K$>>zBinQM|<*;PBCv@=fJD_y42Ly)vHw}pa`wv z;i^*8g59IC-g&u|a6~#CCwd-%M9C~?BV>EZ8>U@Z8rzGS+h{m4aG|u}&S$w*=R58;wKu}xZt^WIH(9Btq*UzURo@nLDIpdf825OzWs*V0IJrlIhgLOh_%T@=8JiKV6dT6w ze78+2BWnRqADmVd69bmKuwT028_zz}yK#naI3&XHr_d8kWA1WFc-kSCD*O5=z92UC z=`M-QsSon6I?MZy9_6Ei@^x-b(`4oJzF6mK^zI%isrd}3KRyvc&gYxb=1a|LxmkTL zKEIyL(_gN{LD7Hr@hyFDg#SY@yX5I$KWR*ZA*`5ddYUg)R2m+qXL!DVVz{F(5&SH5 zCHaj#rp8NiF*eQu^YVtq39hvK5fnXd!>%bUde@>J+5+b|>GT!i*Y?Pz1CtkF^59}$ zkugmY(c1o;e|A)pu^#-YLIS}v3s%z^lUcA};w%~t=9ImBVtkKMM~&07ajpA=h}*Wc zf`aXOl;$Z)5;&Zrf2q9wezu!10}DLDL!$< z(qWhEX2(o&P0m0%cb3vVl~0$93StRTj8bVWSuB}YtHluVGku%3E|!0fi|OF*_YB-| zdguSg)?3F_*==2*TTzgfkVd3Clx`{M?gr^@P>_&rRJujFOS+Vl?rsn^-JN%Beb4)y zbMJlr=BMjf&suYiIp!F1OT=#|biTCyK7jKR4St};q;=SOi-hcw(FRTL} zAuNf<09dyo-dP*$pZ46gmIdMPM8;gAtZJVc0vQUHz8}$!o7u|x;#54+5CuN27HLX> zvDo_a;+Pgh>gA!bgn}o1^qKiZ=HIV zoERBw)4SXXt-}5|=yEF_a!p|@W{JIcUIfkxk^a)g5_B~H83HjtW$&_0ln6ksci7pP zp!eUVPq~zJ_x)W(ckM(uv4!IcaLqYKJErO5F57@1Eu&0V0n@tHe2b`vpQ>oN(mKV% zqb(CI9=qs(CwTc3Z)Yg>;9Y)L5c~dM{gOgc2Yx3UqzE2H7bx>+zLhSH;I+6i9Yek~ z3=B_v={Rx&iqM8L5`MQsEvbU8YUsET)_@17(W3*pL3Ku=EYAsCyio88^d z+#2xmgkzm5_1fY`K3WfroF9f9<|BkF5`L&S3X>QXq z!aF%tL@%aF+rBZMb#)}Pcuf=PKCKNq(@NbK)GGh?HPP#FO;vZT;a)l1Qn@6(qPBrl zTpS>bnIPqQnvi9Td-0^E8dghFGC};Bik9`697NQG3(=gp)dhd58s^oRLLgHB$3T*D zh~78XOZg!i2~(Z(lv49E6+*uTIT>#VE*;2QsSTc!Esz2LyC8wuCxwTW{I;sCb8T*yMDzY+=NN~DP4 z7lRY@=Qm?&1AjIcTrQwI!(W+gYYS03N58qniec^*jFz*?0 z)99*f3Gp9!N{BbmB7L1DfD{2p4v~%4D;*r@?g)4}cIBLDmwee0HfMDmr_=QQ{JO2B zXrb0Ht8 z?%9qv%G;8%K3btkZxSR53fb(U($0#|2b&PqiOp65p9lMoT)kZxACh}0PGX1tXTOlD z9-lft-s4Hti;H#I+}h<|B++iRo%Oen4vb8D>2atv!i{+Iizq8>h;iCaMOl||u)hne zxtV+OLkQ(QKA>BxjGLK;dpsONPv?}gOJs8be*K^eO75_=(|8XZd{}bFY6!RQ{Vu-r zx~IEdmaf&M(TS2Nj6V6-6rOKqAiG;f5hZj>o&97A@<R;Qkgek&Z}>Etqchw+NX%HrtWg&y%-Cts>+%(8|O2uby-8SI@84v*Rc zE@jLQ?yxlboc%~w1o5c@l5zT%9b-AR!2=SS?w%Gh;jaQQ4W7*!~>-&Zj} z7jekqrFD2Y*Vp<4+y~AahtW;Qw%OOcOiRKl{2xfG#fQew@@+?=rV*PtWRC`5PP(e; zJ+W2=Xk~J(waJ9cic>+@=xvg8b}KwL6H9vXN7fdlgRj4cQ7yLFvE3IQ2#uSXna=m2 zLdV7xk zaw3$s3uQIkYL!>_th2gTJTV4kakC9#uzIbs)q1qPLihqY07esnTlg!R_yXy;*h@jk zPEVr_UVD?wdaFEu_>hhfHAt2q6>`Mok8AY`YOh?m)Umvt{B@`Li*u@93F(f>kubZu z!<(TQ%RG|j)rwuCxwVW-m90^t*6#Nk=?+_P&92z0Bkv!I$a3C$blC3a=b!tt&AU>c z;)~PoH9+!0CXOc5xddsQ?~6vJ;jtX6n7CBrKdRk-?-SBK(;qZ6$di~0AW!T z;ndKGQQqBQzKpfA%}#~e5^)dC>z91$Z9jz0wU;R-(lwA$Za;p-*Z>fxnVMkwca$&Z zGRw*qWvov**J|w3{NAYwU_O^x?Sc-hERYt|cq3eu-Kzw2+ zxC@!Mr_9%ih7?A{ek*>yCJ10PQg1*;aaE3uL=T;Fi$iX6;n;Hhwv0zr`>Mq7mt)3m zl4t`#Z666CncqB$i7fP!%`@Th;yBhqtIj}S)Ccr%Y@WxDbIaqq_?IB>}4M$~{{WjGDnF6OzB_qn%K@uMZ z>a|kd<=Jx)Nt;d%nTcmp&3uc{YH^{xL`5oVC5HU4)QX(fP!CA4YIp`G3};rabddLJ z*C5f{AQsN4y5IWT&Mi2GEb0_#wj;l4C7@uoZ}$EvkQbI9X`jWE5)(>x*e=F~=oMC& z4NRHq_b;BIk{_cSDtw=y`1qK_wMkFDktKb`V}O~Vy7LXFw}xV{?NL{CpK+K^ z-SVXoLnG*dNP0wR#r6OUyEfl>j2c5;HE{$0i0!im-MboI|J{b957a{xEH3vV-1340 zs)nnqs|HIbC5~K5>tAm6eb3d|P~#c}2?@PpYUNZAtw(h>-t(r8>GNVRibL3h+ZdF( zh&9%Hab0w_utPaw&5E-@-=SWV?RftE&aKd4G&=f+!%z-r2S3GiLd3u?!cW0HE3zRG?BY$ zST!5GJrQhYw8{fbeA~YMRR=%68wbN?HVYgFD{M>J0z_nJ{)gGCr$MWr=YY+z&=&{A zaQlXy@qPAyRjGA+gNZC7H;520JUo)GZ5|1T+#DVrAAXyt2)vlpx=4Ef;lL_@25!D% zxTmbp+PTQ}b1ji>V+%POcFHYyBp6#Sfz01bk0q3QWiHeX$8$Zr);hi5+#rC`z=Jo_ED>#a;0!G1UjLv2{51VsD=HGi(cdtMt zOnsY5=S;eSY(15d3aOWB+)`u;`c4cnKF-P^JzC{ryp#A{p6uK#PTJ3q(9Y z{wYQbn)@V!`X7;xPj|;%2E$C3<1KjLYv5j|% zTDF9YEz0bIUxjcB1){sh&kq=^u=&X_>HM)&B5TbR)`)J2J?3?r&m8)H3<<7pGFZ5i zznTij`1mm}C~j7-*E{5;5qU)J_NJn3FZf~icYp$ursdzxi{!N&8Vp8GnwoV;+tuH? z^sXrY)Fv5Rm+qhgr~Qx-f~oOFPQ#J{e=F)$b#jR3M-&5A5Q~$`_OBK|XAzK9_J(}} zcId>nYYa^09czxa9~y;4eA_65GDw9CNrhk+;f%K!km%OGvo32{H0?j#5A^psD7GMp znbfn<>n5c#^~Uv7WNA9a_GA^AZQkVT@>aKr5!1Ph4-K=Tm@Z)MZSP+0a(qj;8#){X z*zq&Z-D-6wD1; zU~-Kn=!>(rK7JWd+!#B=&cK#l&WeJ>_gEM&eWG)f?p_{uV zuRWA-$BO~$bTq+pHV!q$>13Ku1VcQ%cO2Iql~Ttq$tbsqm4=JmdpEzNduHdtmA#vQ z&hvx_oqtkYzw*Pv{h~g~O#}B8##LQBHRqSJIdf|wdZ*27p`b(uDQ>v-ox z)fr%`-69K(un@R76#!Fc7aC26KQ|!)>XA|V!28zF_r^kU76ZsEPRzi?0E&i8`q6Yr z_Y-IE@%AIrZzXSVVI`W=-Vr$QSfj4~wXvZfCav^+Tejc?*++|&$a1h7EfQTR^Oa6XUiJ%e>Co0CyX zU|IjVQOD+9E_PKV)&M|i$AD4G04L#qr?)d_`}>6SDZ|kllg`-&F*6zIof)asraxc7 z`Nca%-r3ZIc7CZQH@6PAFRUGCOx4A3gF}djcut_))#+i`Wo88DjZ6hB%TLHhT@9pT ziP|(cJIFAyb|DZ<81jx$Rii@=ld?CI2~K#+X(^CSje+30kIA_;|M3txcUMZs#eTB$ zzI`zDzW{iu4G+@sBOpj(4Kw$X``sBRA;E;r7R0_;FHBZy<5RCDO^Zr?C}Z%7hAevNr% zt?MT+3~R!OPo8bCMha|RNFxSF<~5q-yR1J4m5QX2)6RlJX>G?ZovQA<-*^iy%5%2X z2%1033Agkd;?a%TLVLKcYUZA~k=mHmV5jXpi#p1T6m8&t0C~*_17a(|qw*nK!85JL zn#!Hli+C;X27Z5TgLe%L%btixeP#KQ=&)i9V1H>UL^KQbZ*9>1^j&Anl972c|0-oF8bz|LXyDyz>90;Yn3m}&;x~X{`C7+zUgKDWX>WD7NesL zq0;k63ye*QuTziWW*pS=$KF2{t7YkIrKJRP=v!=}22$H+=r7c(BBde?^RzqC(ISox z;v7&!=IE6+Y@1LmGs<7KHy!r3LkRG9c3intUCtS-L~B|=ar*})H~^IJWBBJ_kksra zwhHIL0t!- zZZ5CynYxPij#Pwx8F2(UAduh5d&zi;KM2SZ{fyxd{p5@$$m4~1kbtw_+_FfQ+?{2rr0tuI>--a*coh>M7+*>fvug&X1??sgTR+0(U0#*^$Ri3HfyIXU{_lsU(OhV zJGU(6pyou!?etefnj8K^zQFCXVA8v397MzQsmIsdf@-*?%KjK`Btv5PI7N4Dv(f&r&~ARbwYJM;A9%(>d5f0yc*HIks`K^V)-W zek@M@TzHO4B^~|6+QX{5-~)xo8)q3n{>MtC>T84}8!_+=Fqe&_JUYC6`X72M>PA`8 zf}rT*K5vHe>ch>9uWsKVkk_MMm!?pi3b|h7wX&D}fNQP>D~z5-taP;|3VJ^3Tx+7w z%8_;yy!Yaf?9}6+t$6-kXakL*Auq%S#Bgx5jT5=sBdGE^j5{bzo`p*3Oo4+z`U4i< zME2{78Xw|zYSfC5AC|=OJy*B(+INhVl5N~&T;uv;)P;C(JZu?)v!mcK_{1U9(h%+h z_fw?3RZ(Mg8CDZtse-Q93A3Rkr#9OT8(viu`X(yUNhA(9zpp@XjIK)$1c4zrYY!6j ziP>-Y>3+-7D~cHz#U#J2Qh03ChS^2T4maP6Tx*X#y}_h^o#W8~P6EPEIWgq*GZ@fy z$cms6&OcKm)lIUDTlrD}0GBt8ow>%FkKO2ZXGN-Fm~lh zXwv#5_mzr7P))n<3ysoAGfXrw%YE+DgEDQxswnwLzVvr{q%k9mToA|)%v5pJr^=L|v5UqK+q zLO?h(D&82#M)PAaZLlkVd*oH#c_|HjX(Md zdt315WqY*mPxp@pw8AG3J{8ZC$a~gmMg1`|ss@26jojWDB>xit^Zt*QZ1do-(gov%!w7RA33NRks7h|>98B_a-uu~lEeE1*H}7)Z<_02vPQUVxadZduBHRLp zc~N3a^LmdM!KJn-7Qd82@A)ROpLHQos0z6Cp^*;C&Ib%4Bt$pZ5Qqi@#MwtyWK2p-h5OlIr<-H_|qyt|e;H&IlwOO?ur6 ztUymi-%_TLp#W5`2MRB}jM0=^t^Pk%Bqy_A1t+QD?iZjVAv`i&bS)o_QI7$kJFB-1 zhy$;l-a7z}QJ+L!CjkX@hKPH(_3}U=%y((-M)>9zo+YTekC9X@>CcW;=~Q7d(W}{x z_S9=Aqb{d$U$_GaW2k;|Ei}jow{)(jk1El=0R3?D`0NNYl^h;`Q-end0wFqxs6e6vUV2e#8}{=$rMgn@FST44LbAfHbOq7uU3<=ryL882|`a z2-`;>!p@OTlKkSOq;1PUiR`;SC#}`w&;=B#05QJ&%efNqJDly^{$Ba=>gL($==Ny^ z!?(aOz@dCF9V%h2Zm2w@AE-`x}kC7#` z^A&c6gx~${ze=mR{jjhx=`_>+d0Qae&HUWdIp@IY^y@)B+Z4Wp;7-oyrlo*ie96MX z@ohP1BCHB%u{rPb0aYpG-rW7R9WGFn7W2x#L3LoJLJNYknF9=3Oq@}TL>AG8-seug z$hK2D=!RLX%D2q1_M~boWv89>1{#Dqbz?`(6XoPWf2)KIE$(*R2ePx84^!8-&t@*a z^_Z8A(3T)=jH5xm62k(9XI2Pf)roQvB`03+os^b>%7@FD)FP1QCWuZ+y=H+r1|$IR zbv@-*I7MtKd(478+CARaHvla(3%

h-StB5koQ(J9(u2MCWFIt%rIfBWiRL30tp& zvYX*WLEa-n+gYHr1=<1J!Nf)*<(rK8WDbzdZB~A9UY%OcS0qY^HXA3;u;Fb6rTPeG z$he=Jo(7s7&SHurXi*7&}h<__9&)ypPKRjp6T!nlb7L6w-l$LndCvvry5EBzp*FB_`| z1>%<+P`ZS-4BX?w{ znqPVWdWJj*6>JLHZ5dJIbWN_3POLn~!}MWG7jqp@!~RFw|AEVG>OvFr$Yz_bf8;MR zQ}eq^eHi|Vv1!|e<3$G!gX&mH()=qA_ZWR&;`=*!Ds{mH)tBwMKMMkOT{6ncWwN$b z6(2Avr%6IL-_+3tHk5l>v%R;BT=o??ef#-{amg)Uu?<@HOU)A$BG0bIT@)&6x(x z

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 literal 0 HcmV?d00001 diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..192f26f54e4d25415aafb874436512f8b7fddafb GIT binary patch literal 44558 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 IkDtH#Ki+fAM*si- literal 0 HcmV?d00001 diff --git a/three.r134.min.js b/three.r134.min.js new file mode 100644 index 0000000..63e198b --- /dev/null +++ b/three.r134.min.js @@ -0,0 +1,6 @@ +/** + * @license + * Copyright 2010-2021 Three.js Authors + * SPDX-License-Identifier: MIT + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).THREE={})}(this,(function(t){"use strict";const e="134",n=100,i=300,r=301,s=302,a=303,o=304,l=306,c=307,h=1e3,u=1001,d=1002,p=1003,m=1004,f=1005,g=1006,v=1007,y=1008,x=1009,_=1012,M=1014,b=1015,w=1016,S=1020,T=1022,E=1023,A=1026,L=1027,R=33776,C=33777,P=33778,I=33779,D=35840,N=35841,z=35842,B=35843,F=37492,O=37496,U=2300,H=2301,G=2302,k=2400,V=2401,W=2402,j=2500,q=2501,X=3e3,Y=3001,J=3007,Z=3002,Q=3004,K=3005,$=3006,tt=7680,et=35044,nt=35048,it="300 es";class rt{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(void 0!==n){const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);for(let e=0,i=n.length;e>8&255]+lt[t>>16&255]+lt[t>>24&255]+"-"+lt[255&e]+lt[e>>8&255]+"-"+lt[e>>16&15|64]+lt[e>>24&255]+"-"+lt[63&n|128]+lt[n>>8&255]+"-"+lt[n>>16&255]+lt[n>>24&255]+lt[255&i]+lt[i>>8&255]+lt[i>>16&255]+lt[i>>24&255]).toUpperCase()}function ut(t,e,n){return Math.max(e,Math.min(n,t))}function dt(t,e){return(t%e+e)%e}function pt(t,e,n){return(1-n)*t+n*e}function mt(t){return 0==(t&t-1)&&0!==t}function ft(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function gt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}var vt=Object.freeze({__proto__:null,DEG2RAD:at,RAD2DEG:ot,generateUUID:ht,clamp:ut,euclideanModulo:dt,mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},inverseLerp:function(t,e,n){return t!==e?(n-t)/(e-t):0},lerp:pt,damp:function(t,e,n,i){return pt(t,e,1-Math.exp(-n*i))},pingpong:function(t,e=1){return e-Math.abs(dt(t,2*e)-e)},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){return void 0!==t&&(st=t%2147483647),st=16807*st%2147483647,(st-1)/2147483646},degToRad:function(t){return t*at},radToDeg:function(t){return t*ot},isPowerOfTwo:mt,ceilPowerOfTwo:ft,floorPowerOfTwo:gt,setQuaternionFromProperEuler:function(t,e,n,i,r){const s=Math.cos,a=Math.sin,o=s(n/2),l=a(n/2),c=s((e+i)/2),h=a((e+i)/2),u=s((e-i)/2),d=a((e-i)/2),p=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":t.set(o*h,l*u,l*d,o*c);break;case"YZY":t.set(l*d,o*h,l*u,o*c);break;case"ZXZ":t.set(l*u,l*d,o*h,o*c);break;case"XZX":t.set(o*h,l*m,l*p,o*c);break;case"YXY":t.set(l*p,o*h,l*m,o*c);break;case"ZYZ":t.set(l*m,l*p,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}});class yt{constructor(t=0,e=0){this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this)}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this)}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,s=this.y-t.y;return this.x=r*n-s*i+t.x,this.y=r*i+s*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}yt.prototype.isVector2=!0;class xt{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(t,e,n,i,r,s,a,o,l){const c=this.elements;return c[0]=t,c[1]=i,c[2]=a,c[3]=e,c[4]=r,c[5]=o,c[6]=n,c[7]=s,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],a=n[3],o=n[6],l=n[1],c=n[4],h=n[7],u=n[2],d=n[5],p=n[8],m=i[0],f=i[3],g=i[6],v=i[1],y=i[4],x=i[7],_=i[2],M=i[5],b=i[8];return r[0]=s*m+a*v+o*_,r[3]=s*f+a*y+o*M,r[6]=s*g+a*x+o*b,r[1]=l*m+c*v+h*_,r[4]=l*f+c*y+h*M,r[7]=l*g+c*x+h*b,r[2]=u*m+d*v+p*_,r[5]=u*f+d*y+p*M,r[8]=u*g+d*x+p*b,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8];return e*s*c-e*a*l-n*r*c+n*a*o+i*r*l-i*s*o}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8],h=c*s-a*l,u=a*o-c*r,d=l*r-s*o,p=e*h+n*u+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return t[0]=h*m,t[1]=(i*l-c*n)*m,t[2]=(a*n-i*s)*m,t[3]=u*m,t[4]=(c*e-i*o)*m,t[5]=(i*r-a*e)*m,t[6]=d*m,t[7]=(n*o-l*e)*m,t[8]=(s*e-n*r)*m,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*s+l*a)+s+t,-i*l,i*o,-i*(-l*s+o*a)+a+e,0,0,1),this}scale(t,e){const n=this.elements;return n[0]*=t,n[3]*=t,n[6]*=t,n[1]*=e,n[4]*=e,n[7]*=e,this}rotate(t){const e=Math.cos(t),n=Math.sin(t),i=this.elements,r=i[0],s=i[3],a=i[6],o=i[1],l=i[4],c=i[7];return i[0]=e*r+n*o,i[3]=e*s+n*l,i[6]=e*a+n*c,i[1]=-n*r+e*o,i[4]=-n*s+e*l,i[7]=-n*a+e*c,this}translate(t,e){const n=this.elements;return n[0]+=t*n[2],n[3]+=t*n[5],n[6]+=t*n[8],n[1]+=e*n[2],n[4]+=e*n[5],n[7]+=e*n[8],this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<9;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}function _t(t){if(0===t.length)return-1/0;let e=t[0];for(let n=1,i=t.length;ne&&(e=t[n]);return e}xt.prototype.isMatrix3=!0;const Mt={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function bt(t,e){return new Mt[t](e)}function wt(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function St(t,e=0){let n=3735928559^e,i=1103547991^e;for(let e,r=0;r>>16,2246822507)^Math.imul(i^i>>>13,3266489909),i=Math.imul(i^i>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),4294967296*(2097151&i)+(n>>>0)}let Tt;class Et{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===Tt&&(Tt=wt("canvas")),Tt.width=t.width,Tt.height=t.height;const n=Tt.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Tt}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}}let At=0;class Lt extends rt{constructor(t=Lt.DEFAULT_IMAGE,e=Lt.DEFAULT_MAPPING,n=1001,i=1001,r=1006,s=1008,a=1023,o=1009,l=1,c=3e3){super(),Object.defineProperty(this,"id",{value:At++}),this.uuid=ht(),this.name="",this.image=t,this.mipmaps=[],this.mapping=e,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=a,this.internalFormat=null,this.type=o,this.offset=new yt(0,0),this.repeat=new yt(1,1),this.center=new yt(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new xt,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=c,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(t){return this.name=t.name,this.image=t.image,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this.userData=JSON.parse(JSON.stringify(t.userData)),this}toJSON(t){const e=void 0===t||"string"==typeof t;if(!e&&void 0!==t.textures[this.uuid])return t.textures[this.uuid];const n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){const i=this.image;if(void 0===i.uuid&&(i.uuid=ht()),!e&&void 0===t.images[i.uuid]){let e;if(Array.isArray(i)){e=[];for(let t=0,n=i.length;t1)switch(this.wrapS){case h:t.x=t.x-Math.floor(t.x);break;case u:t.x=t.x<0?0:1;break;case d:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case h:t.y=t.y-Math.floor(t.y);break;case u:t.y=t.y<0?0:1;break;case d:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&this.version++}}function Rt(t){return"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?Et.getDataURL(t):t.data?{data:Array.prototype.slice.call(t.data),width:t.width,height:t.height,type:t.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}Lt.DEFAULT_IMAGE=void 0,Lt.DEFAULT_MAPPING=i,Lt.prototype.isTexture=!0;class Ct{constructor(t=0,e=0,n=0,i=1){this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=this.w,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i+s[12]*r,this.y=s[1]*e+s[5]*n+s[9]*i+s[13]*r,this.z=s[2]*e+s[6]*n+s[10]*i+s[14]*r,this.w=s[3]*e+s[7]*n+s[11]*i+s[15]*r,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,r;const s=.01,a=.1,o=t.elements,l=o[0],c=o[4],h=o[8],u=o[1],d=o[5],p=o[9],m=o[2],f=o[6],g=o[10];if(Math.abs(c-u)o&&t>v?tv?o=0?1:-1,i=1-e*e;if(i>Number.EPSILON){const r=Math.sqrt(i),s=Math.atan2(r,e*n);t=Math.sin(t*s)/r,a=Math.sin(a*s)/r}const r=a*n;if(o=o*t+u*r,l=l*t+d*r,c=c*t+p*r,h=h*t+m*r,t===1-a){const t=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=t,l*=t,c*=t,h*=t}}t[e]=o,t[e+1]=l,t[e+2]=c,t[e+3]=h}static multiplyQuaternionsFlat(t,e,n,i,r,s){const a=n[i],o=n[i+1],l=n[i+2],c=n[i+3],h=r[s],u=r[s+1],d=r[s+2],p=r[s+3];return t[e]=a*p+c*h+o*d-l*u,t[e+1]=o*p+c*u+l*h-a*d,t[e+2]=l*p+c*d+a*u-o*h,t[e+3]=c*p-a*h-o*u-l*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){if(!t||!t.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const n=t._x,i=t._y,r=t._z,s=t._order,a=Math.cos,o=Math.sin,l=a(n/2),c=a(i/2),h=a(r/2),u=o(n/2),d=o(i/2),p=o(r/2);switch(s){case"XYZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"YXZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"ZXY":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"ZYX":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"YZX":this._x=u*c*h+l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h-u*d*p;break;case"XZY":this._x=u*c*h-l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],i=e[4],r=e[8],s=e[1],a=e[5],o=e[9],l=e[2],c=e[6],h=e[10],u=n+a+h;if(u>0){const t=.5/Math.sqrt(u+1);this._w=.25/t,this._x=(c-o)*t,this._y=(r-l)*t,this._z=(s-i)*t}else if(n>a&&n>h){const t=2*Math.sqrt(1+n-a-h);this._w=(c-o)/t,this._x=.25*t,this._y=(i+s)/t,this._z=(r+l)/t}else if(a>h){const t=2*Math.sqrt(1+a-n-h);this._w=(r-l)/t,this._x=(i+s)/t,this._y=.25*t,this._z=(o+c)/t}else{const t=2*Math.sqrt(1+h-n-a);this._w=(s-i)/t,this._x=(r+l)/t,this._y=(o+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(ut(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(0===n)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t,e){return void 0!==e?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(t,e)):this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,i=t._y,r=t._z,s=t._w,a=e._x,o=e._y,l=e._z,c=e._w;return this._x=n*c+s*a+i*l-r*o,this._y=i*c+s*o+r*a-n*l,this._z=r*c+s*l+n*o-i*a,this._w=s*c-n*a-i*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const n=this._x,i=this._y,r=this._z,s=this._w;let a=s*t._w+n*t._x+i*t._y+r*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=s,this._x=n,this._y=i,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const t=1-e;return this._w=t*s+e*this._w,this._x=t*n+e*this._x,this._y=t*i+e*this._y,this._z=t*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,a),h=Math.sin((1-e)*c)/l,u=Math.sin(e*c)/l;return this._w=s*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){this.copy(t).slerp(e,n)}random(){const t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(r),n*Math.cos(r),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}}Nt.prototype.isQuaternion=!0;class zt{constructor(t=0,e=0,n=0){this.x=t,this.y=e,this.z=n}set(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Ft.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Ft.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=t.elements,s=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*s,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*s,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*s,this}applyQuaternion(t){const e=this.x,n=this.y,i=this.z,r=t.x,s=t.y,a=t.z,o=t.w,l=o*e+s*i-a*n,c=o*n+a*e-r*i,h=o*i+r*n-s*e,u=-r*e-s*n-a*i;return this.x=l*o+u*-r+c*-a-h*-s,this.y=c*o+u*-s+h*-r-l*-a,this.z=h*o+u*-a+l*-s-c*-r,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t,e){return void 0!==e?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e)):this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,i=t.y,r=t.z,s=e.x,a=e.y,o=e.z;return this.x=i*o-r*a,this.y=r*s-n*o,this.z=n*a-i*s,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return Bt.copy(this).projectOnVector(t),this.sub(Bt)}reflect(t){return this.sub(Bt.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(ut(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=2*(Math.random()-.5),e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}zt.prototype.isVector3=!0;const Bt=new zt,Ft=new Nt;class Ot{constructor(t=new zt(1/0,1/0,1/0),e=new zt(-1/0,-1/0,-1/0)){this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,n=1/0,i=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=t.length;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(e,n,i),this.max.set(r,s,a),this}setFromBufferAttribute(t){let e=1/0,n=1/0,i=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=t.count;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(e,n,i),this.max.set(r,s,a),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,Ht),Ht.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(Yt),Jt.subVectors(this.max,Yt),kt.subVectors(t.a,Yt),Vt.subVectors(t.b,Yt),Wt.subVectors(t.c,Yt),jt.subVectors(Vt,kt),qt.subVectors(Wt,Vt),Xt.subVectors(kt,Wt);let e=[0,-jt.z,jt.y,0,-qt.z,qt.y,0,-Xt.z,Xt.y,jt.z,0,-jt.x,qt.z,0,-qt.x,Xt.z,0,-Xt.x,-jt.y,jt.x,0,-qt.y,qt.x,0,-Xt.y,Xt.x,0];return!!Kt(e,kt,Vt,Wt,Jt)&&(e=[1,0,0,0,1,0,0,0,1],!!Kt(e,kt,Vt,Wt,Jt)&&(Zt.crossVectors(jt,qt),e=[Zt.x,Zt.y,Zt.z],Kt(e,kt,Vt,Wt,Jt)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return Ht.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=.5*this.getSize(Ht).length(),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||(Ut[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ut[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ut[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ut[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ut[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ut[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ut[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ut[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ut)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}Ot.prototype.isBox3=!0;const Ut=[new zt,new zt,new zt,new zt,new zt,new zt,new zt,new zt],Ht=new zt,Gt=new Ot,kt=new zt,Vt=new zt,Wt=new zt,jt=new zt,qt=new zt,Xt=new zt,Yt=new zt,Jt=new zt,Zt=new zt,Qt=new zt;function Kt(t,e,n,i,r){for(let s=0,a=t.length-3;s<=a;s+=3){Qt.fromArray(t,s);const a=r.x*Math.abs(Qt.x)+r.y*Math.abs(Qt.y)+r.z*Math.abs(Qt.z),o=e.dot(Qt),l=n.dot(Qt),c=i.dot(Qt);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>a)return!1}return!0}const $t=new Ot,te=new zt,ee=new zt,ne=new zt;class ie{constructor(t=new zt,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;void 0!==e?n.copy(e):$t.setFromPoints(t).getCenter(n);let i=0;for(let e=0,r=t.length;ethis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){ne.subVectors(t,this.center);const e=ne.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),n=.5*(t-this.radius);this.center.add(ne.multiplyScalar(n/t)),this.radius+=n}return this}union(t){return ee.subVectors(t.center,this.center).normalize().multiplyScalar(t.radius),this.expandByPoint(te.copy(t.center).add(ee)),this.expandByPoint(te.copy(t.center).sub(ee)),this}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const re=new zt,se=new zt,ae=new zt,oe=new zt,le=new zt,ce=new zt,he=new zt;class ue{constructor(t=new zt,e=new zt(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,re)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=re.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(re.copy(this.direction).multiplyScalar(e).add(this.origin),re.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){se.copy(t).add(e).multiplyScalar(.5),ae.copy(e).sub(t).normalize(),oe.copy(this.origin).sub(se);const r=.5*t.distanceTo(e),s=-this.direction.dot(ae),a=oe.dot(this.direction),o=-oe.dot(ae),l=oe.lengthSq(),c=Math.abs(1-s*s);let h,u,d,p;if(c>0)if(h=s*o-a,u=s*a-o,p=r*c,h>=0)if(u>=-p)if(u<=p){const t=1/c;h*=t,u*=t,d=h*(h+s*u+2*a)+u*(s*h+u+2*o)+l}else u=r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;else u=-r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;else u<=-p?(h=Math.max(0,-(-s*r+a)),u=h>0?-r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l):u<=p?(h=0,u=Math.min(Math.max(-r,-o),r),d=u*(u+2*o)+l):(h=Math.max(0,-(s*r+a)),u=h>0?r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l);else u=s>0?-r:r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;return n&&n.copy(this.direction).multiplyScalar(h).add(this.origin),i&&i.copy(ae).multiplyScalar(u).add(se),d}intersectSphere(t,e){re.subVectors(t.center,this.origin);const n=re.dot(this.direction),i=re.dot(re)-n*n,r=t.radius*t.radius;if(i>r)return null;const s=Math.sqrt(r-i),a=n-s,o=n+s;return a<0&&o<0?null:a<0?this.at(o,e):this.at(a,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return null===n?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);if(0===e)return!0;return t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,r,s,a,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),c>=0?(r=(t.min.y-u.y)*c,s=(t.max.y-u.y)*c):(r=(t.max.y-u.y)*c,s=(t.min.y-u.y)*c),n>s||r>i?null:((r>n||n!=n)&&(n=r),(s=0?(a=(t.min.z-u.z)*h,o=(t.max.z-u.z)*h):(a=(t.max.z-u.z)*h,o=(t.min.z-u.z)*h),n>o||a>i?null:((a>n||n!=n)&&(n=a),(o=0?n:i,e)))}intersectsBox(t){return null!==this.intersectBox(t,re)}intersectTriangle(t,e,n,i,r){le.subVectors(e,t),ce.subVectors(n,t),he.crossVectors(le,ce);let s,a=this.direction.dot(he);if(a>0){if(i)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}oe.subVectors(this.origin,t);const o=s*this.direction.dot(ce.crossVectors(oe,ce));if(o<0)return null;const l=s*this.direction.dot(le.cross(oe));if(l<0)return null;if(o+l>a)return null;const c=-s*oe.dot(he);return c<0?null:this.at(c/a,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class de{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(t,e,n,i,r,s,a,o,l,c,h,u,d,p,m,f){const g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=r,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=p,g[11]=m,g[15]=f,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new de).fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,i=1/pe.setFromMatrixColumn(t,0).length(),r=1/pe.setFromMatrixColumn(t,1).length(),s=1/pe.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*s,e[9]=n[9]*s,e[10]=n[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){t&&t.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const e=this.elements,n=t.x,i=t.y,r=t.z,s=Math.cos(n),a=Math.sin(n),o=Math.cos(i),l=Math.sin(i),c=Math.cos(r),h=Math.sin(r);if("XYZ"===t.order){const t=s*c,n=s*h,i=a*c,r=a*h;e[0]=o*c,e[4]=-o*h,e[8]=l,e[1]=n+i*l,e[5]=t-r*l,e[9]=-a*o,e[2]=r-t*l,e[6]=i+n*l,e[10]=s*o}else if("YXZ"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t+r*a,e[4]=i*a-n,e[8]=s*l,e[1]=s*h,e[5]=s*c,e[9]=-a,e[2]=n*a-i,e[6]=r+t*a,e[10]=s*o}else if("ZXY"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t-r*a,e[4]=-s*h,e[8]=i+n*a,e[1]=n+i*a,e[5]=s*c,e[9]=r-t*a,e[2]=-s*l,e[6]=a,e[10]=s*o}else if("ZYX"===t.order){const t=s*c,n=s*h,i=a*c,r=a*h;e[0]=o*c,e[4]=i*l-n,e[8]=t*l+r,e[1]=o*h,e[5]=r*l+t,e[9]=n*l-i,e[2]=-l,e[6]=a*o,e[10]=s*o}else if("YZX"===t.order){const t=s*o,n=s*l,i=a*o,r=a*l;e[0]=o*c,e[4]=r-t*h,e[8]=i*h+n,e[1]=h,e[5]=s*c,e[9]=-a*c,e[2]=-l*c,e[6]=n*h+i,e[10]=t-r*h}else if("XZY"===t.order){const t=s*o,n=s*l,i=a*o,r=a*l;e[0]=o*c,e[4]=-h,e[8]=l*c,e[1]=t*h+r,e[5]=s*c,e[9]=n*h-i,e[2]=i*h-n,e[6]=a*c,e[10]=r*h+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(fe,t,ge)}lookAt(t,e,n){const i=this.elements;return xe.subVectors(t,e),0===xe.lengthSq()&&(xe.z=1),xe.normalize(),ve.crossVectors(n,xe),0===ve.lengthSq()&&(1===Math.abs(n.z)?xe.x+=1e-4:xe.z+=1e-4,xe.normalize(),ve.crossVectors(n,xe)),ve.normalize(),ye.crossVectors(xe,ve),i[0]=ve.x,i[4]=ye.x,i[8]=xe.x,i[1]=ve.y,i[5]=ye.y,i[9]=xe.y,i[2]=ve.z,i[6]=ye.z,i[10]=xe.z,this}multiply(t,e){return void 0!==e?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],a=n[4],o=n[8],l=n[12],c=n[1],h=n[5],u=n[9],d=n[13],p=n[2],m=n[6],f=n[10],g=n[14],v=n[3],y=n[7],x=n[11],_=n[15],M=i[0],b=i[4],w=i[8],S=i[12],T=i[1],E=i[5],A=i[9],L=i[13],R=i[2],C=i[6],P=i[10],I=i[14],D=i[3],N=i[7],z=i[11],B=i[15];return r[0]=s*M+a*T+o*R+l*D,r[4]=s*b+a*E+o*C+l*N,r[8]=s*w+a*A+o*P+l*z,r[12]=s*S+a*L+o*I+l*B,r[1]=c*M+h*T+u*R+d*D,r[5]=c*b+h*E+u*C+d*N,r[9]=c*w+h*A+u*P+d*z,r[13]=c*S+h*L+u*I+d*B,r[2]=p*M+m*T+f*R+g*D,r[6]=p*b+m*E+f*C+g*N,r[10]=p*w+m*A+f*P+g*z,r[14]=p*S+m*L+f*I+g*B,r[3]=v*M+y*T+x*R+_*D,r[7]=v*b+y*E+x*C+_*N,r[11]=v*w+y*A+x*P+_*z,r[15]=v*S+y*L+x*I+_*B,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],s=t[1],a=t[5],o=t[9],l=t[13],c=t[2],h=t[6],u=t[10],d=t[14];return t[3]*(+r*o*h-i*l*h-r*a*u+n*l*u+i*a*d-n*o*d)+t[7]*(+e*o*d-e*l*u+r*s*u-i*s*d+i*l*c-r*o*c)+t[11]*(+e*l*h-e*a*d-r*s*h+n*s*d+r*a*c-n*l*c)+t[15]*(-i*a*c-e*o*h+e*a*u+i*s*h-n*s*u+n*o*c)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11],p=t[12],m=t[13],f=t[14],g=t[15],v=h*f*l-m*u*l+m*o*d-a*f*d-h*o*g+a*u*g,y=p*u*l-c*f*l-p*o*d+s*f*d+c*o*g-s*u*g,x=c*m*l-p*h*l+p*a*d-s*m*d-c*a*g+s*h*g,_=p*h*o-c*m*o-p*a*u+s*m*u+c*a*f-s*h*f,M=e*v+n*y+i*x+r*_;if(0===M)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const b=1/M;return t[0]=v*b,t[1]=(m*u*r-h*f*r-m*i*d+n*f*d+h*i*g-n*u*g)*b,t[2]=(a*f*r-m*o*r+m*i*l-n*f*l-a*i*g+n*o*g)*b,t[3]=(h*o*r-a*u*r-h*i*l+n*u*l+a*i*d-n*o*d)*b,t[4]=y*b,t[5]=(c*f*r-p*u*r+p*i*d-e*f*d-c*i*g+e*u*g)*b,t[6]=(p*o*r-s*f*r-p*i*l+e*f*l+s*i*g-e*o*g)*b,t[7]=(s*u*r-c*o*r+c*i*l-e*u*l-s*i*d+e*o*d)*b,t[8]=x*b,t[9]=(p*h*r-c*m*r-p*n*d+e*m*d+c*n*g-e*h*g)*b,t[10]=(s*m*r-p*a*r+p*n*l-e*m*l-s*n*g+e*a*g)*b,t[11]=(c*a*r-s*h*r-c*n*l+e*h*l+s*n*d-e*a*d)*b,t[12]=_*b,t[13]=(c*m*i-p*h*i+p*n*u-e*m*u-c*n*f+e*h*f)*b,t[14]=(p*a*i-s*m*i-p*n*o+e*m*o+s*n*f-e*a*f)*b,t[15]=(s*h*i-c*a*i+c*n*o-e*h*o-s*n*u+e*a*u)*b,this}scale(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,s=t.x,a=t.y,o=t.z,l=r*s,c=r*a;return this.set(l*s+n,l*a-i*o,l*o+i*a,0,l*a+i*o,c*a+n,c*o-i*s,0,l*o-i*a,c*o+i*s,r*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,r,s){return this.set(1,n,r,0,t,1,s,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){const i=this.elements,r=e._x,s=e._y,a=e._z,o=e._w,l=r+r,c=s+s,h=a+a,u=r*l,d=r*c,p=r*h,m=s*c,f=s*h,g=a*h,v=o*l,y=o*c,x=o*h,_=n.x,M=n.y,b=n.z;return i[0]=(1-(m+g))*_,i[1]=(d+x)*_,i[2]=(p-y)*_,i[3]=0,i[4]=(d-x)*M,i[5]=(1-(u+g))*M,i[6]=(f+v)*M,i[7]=0,i[8]=(p+y)*b,i[9]=(f-v)*b,i[10]=(1-(u+m))*b,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){const i=this.elements;let r=pe.set(i[0],i[1],i[2]).length();const s=pe.set(i[4],i[5],i[6]).length(),a=pe.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],me.copy(this);const o=1/r,l=1/s,c=1/a;return me.elements[0]*=o,me.elements[1]*=o,me.elements[2]*=o,me.elements[4]*=l,me.elements[5]*=l,me.elements[6]*=l,me.elements[8]*=c,me.elements[9]*=c,me.elements[10]*=c,e.setFromRotationMatrix(me),n.x=r,n.y=s,n.z=a,this}makePerspective(t,e,n,i,r,s){void 0===s&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const a=this.elements,o=2*r/(e-t),l=2*r/(n-i),c=(e+t)/(e-t),h=(n+i)/(n-i),u=-(s+r)/(s-r),d=-2*s*r/(s-r);return a[0]=o,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=l,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=d,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(t,e,n,i,r,s){const a=this.elements,o=1/(e-t),l=1/(n-i),c=1/(s-r),h=(e+t)*o,u=(n+i)*l,d=(s+r)*c;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*c,a[14]=-d,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<16;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}de.prototype.isMatrix4=!0;const pe=new zt,me=new de,fe=new zt(0,0,0),ge=new zt(1,1,1),ve=new zt,ye=new zt,xe=new zt,_e=new de,Me=new Nt;class be{constructor(t=0,e=0,n=0,i=be.DefaultOrder){this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const i=t.elements,r=i[0],s=i[4],a=i[8],o=i[1],l=i[5],c=i[9],h=i[2],u=i[6],d=i[10];switch(e){case"XYZ":this._y=Math.asin(ut(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-ut(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(a,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(ut(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-ut(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(ut(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-ut(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===n&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return _e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(_e,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Me.setFromEuler(this),this.setFromQuaternion(Me,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}toVector3(t){return t?t.set(this._x,this._y,this._z):new zt(this._x,this._y,this._z)}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}}be.prototype.isEuler=!0,be.DefaultOrder="XYZ",be.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];class we{constructor(){this.mask=1}set(t){this.mask=1<1){for(let t=0;t1){for(let t=0;t0){i.children=[];for(let e=0;e0){i.animations=[];for(let e=0;e0&&(n.geometries=e),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),a.length>0&&(n.images=a),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),c.length>0&&(n.animations=c)}return n.object=i,n;function s(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(t,e,n,i,r){Oe.subVectors(i,e),Ue.subVectors(n,e),He.subVectors(t,e);const s=Oe.dot(Oe),a=Oe.dot(Ue),o=Oe.dot(He),l=Ue.dot(Ue),c=Ue.dot(He),h=s*l-a*a;if(0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*o-a*c)*u,p=(s*c-a*o)*u;return r.set(1-d-p,p,d)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,Ge),Ge.x>=0&&Ge.y>=0&&Ge.x+Ge.y<=1}static getUV(t,e,n,i,r,s,a,o){return this.getBarycoord(t,e,n,i,Ge),o.set(0,0),o.addScaledVector(r,Ge.x),o.addScaledVector(s,Ge.y),o.addScaledVector(a,Ge.z),o}static isFrontFacing(t,e,n,i){return Oe.subVectors(n,e),Ue.subVectors(t,e),Oe.cross(Ue).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Oe.subVectors(this.c,this.b),Ue.subVectors(this.a,this.b),.5*Oe.cross(Ue).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return Ye.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return Ye.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,r){return Ye.getUV(t,this.a,this.b,this.c,e,n,i,r)}containsPoint(t){return Ye.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return Ye.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,i=this.b,r=this.c;let s,a;ke.subVectors(i,n),Ve.subVectors(r,n),je.subVectors(t,n);const o=ke.dot(je),l=Ve.dot(je);if(o<=0&&l<=0)return e.copy(n);qe.subVectors(t,i);const c=ke.dot(qe),h=Ve.dot(qe);if(c>=0&&h<=c)return e.copy(i);const u=o*h-c*l;if(u<=0&&o>=0&&c<=0)return s=o/(o-c),e.copy(n).addScaledVector(ke,s);Xe.subVectors(t,r);const d=ke.dot(Xe),p=Ve.dot(Xe);if(p>=0&&d<=p)return e.copy(r);const m=d*l-o*p;if(m<=0&&l>=0&&p<=0)return a=l/(l-p),e.copy(n).addScaledVector(Ve,a);const f=c*p-d*h;if(f<=0&&h-c>=0&&d-p>=0)return We.subVectors(r,i),a=(h-c)/(h-c+(d-p)),e.copy(i).addScaledVector(We,a);const g=1/(f+m+u);return s=m*g,a=u*g,e.copy(n).addScaledVector(ke,s).addScaledVector(Ve,a)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}let Je=0;class Ze extends rt{constructor(){super(),Object.defineProperty(this,"id",{value:Je++}),this.uuid=ht(),this.name="",this.type="Material",this.fog=!0,this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.format=E,this.transparent=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=n,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=tt,this.stencilZFail=tt,this.stencilZPass=tt,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const n=t[e];if(void 0===n){console.warn("THREE.Material: '"+e+"' parameter is undefined.");continue}if("shading"===e){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===n;continue}const i=this[e];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n:console.warn("THREE."+this.type+": '"+e+"' is not a property of this material.")}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const n={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function i(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),0!==this.side&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.format!==E&&(n.format=this.format),!0===this.transparent&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(n.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=this.flatShading),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(n.userData=this.userData),e){const e=i(t.textures),r=i(t.images);e.length>0&&(n.textures=e),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.fog=t.fog,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.format=t.format,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(null!==e){const t=e.length;n=new Array(t);for(let i=0;i!==t;++i)n[i]=e[i].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}}Ze.prototype.isMaterial=!0;const Qe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Ke={h:0,s:0,l:0},$e={h:0,s:0,l:0};function tn(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}function en(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function nn(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}class rn{constructor(t,e,n){return void 0===e&&void 0===n?this.set(t):this.setRGB(t,e,n)}set(t){return t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,this}setRGB(t,e,n){return this.r=t,this.g=e,this.b=n,this}setHSL(t,e,n){if(t=dt(t,1),e=ut(e,0,1),n=ut(n,0,1),0===e)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=tn(r,i,t+1/3),this.g=tn(r,i,t),this.b=tn(r,i,t-1/3)}return this}setStyle(t){function e(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let n;if(n=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(t)){let t;const i=n[1],r=n[2];switch(i){case"rgb":case"rgba":if(t=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,e(t[4]),this;if(t=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,e(t[4]),this;break;case"hsl":case"hsla":if(t=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r)){const n=parseFloat(t[1])/360,i=parseInt(t[2],10)/100,r=parseInt(t[3],10)/100;return e(t[4]),this.setHSL(n,i,r)}}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(t)){const t=n[1],e=t.length;if(3===e)return this.r=parseInt(t.charAt(0)+t.charAt(0),16)/255,this.g=parseInt(t.charAt(1)+t.charAt(1),16)/255,this.b=parseInt(t.charAt(2)+t.charAt(2),16)/255,this;if(6===e)return this.r=parseInt(t.charAt(0)+t.charAt(1),16)/255,this.g=parseInt(t.charAt(2)+t.charAt(3),16)/255,this.b=parseInt(t.charAt(4)+t.charAt(5),16)/255,this}return t&&t.length>0?this.setColorName(t):this}setColorName(t){const e=Qe[t.toLowerCase()];return void 0!==e?this.setHex(e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copyGammaToLinear(t,e=2){return this.r=Math.pow(t.r,e),this.g=Math.pow(t.g,e),this.b=Math.pow(t.b,e),this}copyLinearToGamma(t,e=2){const n=e>0?1/e:1;return this.r=Math.pow(t.r,n),this.g=Math.pow(t.g,n),this.b=Math.pow(t.b,n),this}convertGammaToLinear(t){return this.copyGammaToLinear(this,t),this}convertLinearToGamma(t){return this.copyLinearToGamma(this,t),this}copySRGBToLinear(t){return this.r=en(t.r),this.g=en(t.g),this.b=en(t.b),this}copyLinearToSRGB(t){return this.r=nn(t.r),this.g=nn(t.g),this.b=nn(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0}getHexString(){return("000000"+this.getHex().toString(16)).slice(-6)}getHSL(t){const e=this.r,n=this.g,i=this.b,r=Math.max(e,n,i),s=Math.min(e,n,i);let a,o;const l=(s+r)/2;if(s===r)a=0,o=0;else{const t=r-s;switch(o=l<=.5?t/(r+s):t/(2-r-s),r){case e:a=(n-i)/t+(n65535?fn:pn)(t,1):this.index=t,this}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return void 0!==this.attributes[t]}addGroup(t,e,n=0){this.groups.push({start:t,count:e,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);const n=this.attributes.normal;if(void 0!==n){const e=(new xt).getNormalMatrix(t);n.applyNormalMatrix(e),n.needsUpdate=!0}const i=this.attributes.tangent;return void 0!==i&&(i.transformDirection(t),i.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(t){return _n.makeRotationFromQuaternion(t),this.applyMatrix4(_n),this}rotateX(t){return _n.makeRotationX(t),this.applyMatrix4(_n),this}rotateY(t){return _n.makeRotationY(t),this.applyMatrix4(_n),this}rotateZ(t){return _n.makeRotationZ(t),this.applyMatrix4(_n),this}translate(t,e,n){return _n.makeTranslation(t,e,n),this.applyMatrix4(_n),this}scale(t,e,n){return _n.makeScale(t,e,n),this.applyMatrix4(_n),this}lookAt(t){return Mn.lookAt(t),Mn.updateMatrix(),this.applyMatrix4(Mn.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(bn).negate(),this.translate(bn.x,bn.y,bn.z),this}setFromPoints(t){const e=[];for(let n=0,i=t.length;n0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const e in n){const i=n[e];t.data.attributes[e]=i.toJSON(t.data)}const i={};let r=!1;for(const e in this.morphAttributes){const n=this.morphAttributes[e],s=[];for(let e=0,i=n.length;e0&&(i[e]=s,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(t.data.groups=JSON.parse(JSON.stringify(s)));const a=this.boundingSphere;return null!==a&&(t.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),t}clone(){return(new this.constructor).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;null!==n&&this.setIndex(n.clone(e));const i=t.attributes;for(const t in i){const n=i[t];this.setAttribute(t,n.clone(e))}const r=t.morphAttributes;for(const t in r){const n=[],i=r[t];for(let t=0,r=i.length;t0){const t=e[n[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,n=t.length;e0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(t,e){const n=this.geometry,i=this.material,r=this.matrixWorld;if(void 0===i)return;if(null===n.boundingSphere&&n.computeBoundingSphere(),Rn.copy(n.boundingSphere),Rn.applyMatrix4(r),!1===t.ray.intersectsSphere(Rn))return;if(An.copy(r).invert(),Ln.copy(t.ray).applyMatrix4(An),null!==n.boundingBox&&!1===Ln.intersectsBox(n.boundingBox))return;let s;if(n.isBufferGeometry){const r=n.index,a=n.attributes.position,o=n.morphAttributes.position,l=n.morphTargetsRelative,c=n.attributes.uv,h=n.attributes.uv2,u=n.groups,d=n.drawRange;if(null!==r)if(Array.isArray(i))for(let n=0,p=u.length;nn.far?null:{distance:c,point:Vn.clone(),object:t}}(t,e,n,i,Cn,Pn,In,kn);if(p){o&&(Un.fromBufferAttribute(o,c),Hn.fromBufferAttribute(o,h),Gn.fromBufferAttribute(o,u),p.uv=Ye.getUV(kn,Cn,Pn,In,Un,Hn,Gn,new yt)),l&&(Un.fromBufferAttribute(l,c),Hn.fromBufferAttribute(l,h),Gn.fromBufferAttribute(l,u),p.uv2=Ye.getUV(kn,Cn,Pn,In,Un,Hn,Gn,new yt));const t={a:c,b:h,c:u,normal:new zt,materialIndex:0};Ye.getNormal(Cn,Pn,In,t.normal),p.face=t}return p}Wn.prototype.isMesh=!0;class qn extends En{constructor(t=1,e=1,n=1,i=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:r,depthSegments:s};const a=this;i=Math.floor(i),r=Math.floor(r),s=Math.floor(s);const o=[],l=[],c=[],h=[];let u=0,d=0;function p(t,e,n,i,r,s,p,m,f,g,v){const y=s/f,x=p/g,_=s/2,M=p/2,b=m/2,w=f+1,S=g+1;let T=0,E=0;const A=new zt;for(let s=0;s0?1:-1,c.push(A.x,A.y,A.z),h.push(o/f),h.push(1-s/g),T+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;const n={};for(const t in this.extensions)!0===this.extensions[t]&&(n[t]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}Zn.prototype.isShaderMaterial=!0;class Qn extends Fe{constructor(){super(),this.type="Camera",this.matrixWorldInverse=new de,this.projectionMatrix=new de,this.projectionMatrixInverse=new de}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}Qn.prototype.isCamera=!0;class Kn extends Qn{constructor(t=50,e=1,n=.1,i=2e3){super(),this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*ot*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*at*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*ot*Math.atan(Math.tan(.5*at*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,r,s){this.aspect=t/e,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*at*this.fov)/this.zoom,n=2*e,i=this.aspect*n,r=-.5*i;const s=this.view;if(null!==this.view&&this.view.enabled){const t=s.fullWidth,a=s.fullHeight;r+=s.offsetX*i/t,e-=s.offsetY*n/a,i*=s.width/t,n*=s.height/a}const a=this.filmOffset;0!==a&&(r+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}Kn.prototype.isPerspectiveCamera=!0;const $n=90;class ti extends Fe{constructor(t,e,n){if(super(),this.type="CubeCamera",!0!==n.isWebGLCubeRenderTarget)return void console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");this.renderTarget=n;const i=new Kn($n,1,t,e);i.layers=this.layers,i.up.set(0,-1,0),i.lookAt(new zt(1,0,0)),this.add(i);const r=new Kn($n,1,t,e);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new zt(-1,0,0)),this.add(r);const s=new Kn($n,1,t,e);s.layers=this.layers,s.up.set(0,0,1),s.lookAt(new zt(0,1,0)),this.add(s);const a=new Kn($n,1,t,e);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new zt(0,-1,0)),this.add(a);const o=new Kn($n,1,t,e);o.layers=this.layers,o.up.set(0,-1,0),o.lookAt(new zt(0,0,1)),this.add(o);const l=new Kn($n,1,t,e);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new zt(0,0,-1)),this.add(l)}update(t,e){null===this.parent&&this.updateMatrixWorld();const n=this.renderTarget,[i,r,s,a,o,l]=this.children,c=t.xr.enabled,h=t.getRenderTarget();t.xr.enabled=!1;const u=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,r),t.setRenderTarget(n,2),t.render(e,s),t.setRenderTarget(n,3),t.render(e,a),t.setRenderTarget(n,4),t.render(e,o),n.texture.generateMipmaps=u,t.setRenderTarget(n,5),t.render(e,l),t.setRenderTarget(h),t.xr.enabled=c}}class ei extends Lt{constructor(t,e,n,i,s,a,o,l,c,h){super(t=void 0!==t?t:[],e=void 0!==e?e:r,n,i,s,a,o,l,c,h),this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}ei.prototype.isCubeTexture=!0;class ni extends Pt{constructor(t,e,n){Number.isInteger(e)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),e=n),super(t,t,e),e=e||{},this.texture=new ei(void 0,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:g,this.texture._needsFlipEnvMap=!1}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.format=E,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},i=new qn(5,5,5),r=new Zn({name:"CubemapFromEquirect",uniforms:Xn(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=e;const s=new Wn(i,r),a=e.minFilter;e.minFilter===y&&(e.minFilter=g);return new ti(1,10,this).update(t,s),e.minFilter=a,s.geometry.dispose(),s.material.dispose(),this}clear(t,e,n,i){const r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,n,i);t.setRenderTarget(r)}}ni.prototype.isWebGLCubeRenderTarget=!0;const ii=new zt,ri=new zt,si=new xt;class ai{constructor(t=new zt(1,0,0),e=0){this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const i=ii.subVectors(n,e).cross(ri.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){const n=t.delta(ii),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(n).multiplyScalar(r).add(t.start)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||si.getNormalMatrix(t),i=this.coplanarPoint(ii).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}ai.prototype.isPlane=!0;const oi=new ie,li=new zt;class ci{constructor(t=new ai,e=new ai,n=new ai,i=new ai,r=new ai,s=new ai){this.planes=[t,e,n,i,r,s]}set(t,e,n,i,r,s){const a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(n),a[3].copy(i),a[4].copy(r),a[5].copy(s),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t){const e=this.planes,n=t.elements,i=n[0],r=n[1],s=n[2],a=n[3],o=n[4],l=n[5],c=n[6],h=n[7],u=n[8],d=n[9],p=n[10],m=n[11],f=n[12],g=n[13],v=n[14],y=n[15];return e[0].setComponents(a-i,h-o,m-u,y-f).normalize(),e[1].setComponents(a+i,h+o,m+u,y+f).normalize(),e[2].setComponents(a+r,h+l,m+d,y+g).normalize(),e[3].setComponents(a-r,h-l,m-d,y-g).normalize(),e[4].setComponents(a-s,h-c,m-p,y-v).normalize(),e[5].setComponents(a+s,h+c,m+p,y+v).normalize(),this}intersectsObject(t){const e=t.geometry;return null===e.boundingSphere&&e.computeBoundingSphere(),oi.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(oi)}intersectsSprite(t){return oi.center.set(0,0,0),oi.radius=.7071067811865476,oi.applyMatrix4(t.matrixWorld),this.intersectsSphere(oi)}intersectsSphere(t){const e=this.planes,n=t.center,i=-t.radius;for(let t=0;t<6;t++){if(e[t].distanceToPoint(n)0?t.max.x:t.min.x,li.y=i.normal.y>0?t.max.y:t.min.y,li.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(li)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function hi(){let t=null,e=!1,n=null,i=null;function r(e,s){n(e,s),i=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==n&&(i=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(t){n=t},setContext:function(e){t=e}}}function ui(t,e){const n=e.isWebGL2,i=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),i.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);const n=i.get(e);n&&(t.deleteBuffer(n.buffer),i.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){const t=i.get(e);return void((!t||t.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_maxMipLevel 8.0\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_maxTileSize 256.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\n\t\tvec2 f = fract( uv );\n\t\tuv += 0.5 - f;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\n\t\t}\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\n\t\tuv *= texelSize;\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x += texelSize;\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.y += texelSize;\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x -= texelSize;\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tvec3 tm = mix( tl, tr, f.x );\n\t\tvec3 bm = mix( bl, br, f.x );\n\t\treturn mix( tm, bm, f.y );\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec;\n\t\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\t\treflectVec = reflect( - viewDir, normal );\n\t\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\t#else\n\t\t\t\treflectVec = refract( - viewDir, normal, refractionRatio );\n\t\t\t#endif\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tlightMapIrradiance *= PI;\n\t#endif\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= specularColorMapTexelToLinear( texture2D( specularColorMap, vUv ) ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= sheenColorMapTexelToLinear( texture2D( sheenColorMap, vUv ) ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3(\t\t0, 1,\t\t0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1, 2 ) * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform vec2 morphTargetsTextureSize;\n\t\tvec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) {\n\t\t\tfloat texelIndex = float( vertexIndex * stride + offset );\n\t\t\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\n\t\t\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\n\t\t\treturn texture( morphTargetsTexture, morphUV ).xyz;\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\t#ifndef USE_MORPHNORMALS\n\t\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ];\n\t\t\t#else\n\t\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ];\n\t\t\t#endif\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",output_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t\tf.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t\tf.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3(\t1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108,\t1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605,\t1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tfloat transmissionAlpha = 1.0;\n\tfloat transmissionFactor = transmission;\n\tfloat thicknessFactor = thickness;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\n\t\tattenuationColor, attenuationDistance );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\n\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( float roughness, float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\n\t\tif ( attenuationDistance == 0.0 ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\n\t\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\n\t\tvec3 attenuationColor, float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"},mi={common:{diffuse:{value:new rn(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new xt},uv2Transform:{value:new xt},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new yt(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new rn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new rn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new xt}},sprite:{diffuse:{value:new rn(16777215)},opacity:{value:1},center:{value:new yt(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new xt}}},fi={basic:{uniforms:Yn([mi.common,mi.specularmap,mi.envmap,mi.aomap,mi.lightmap,mi.fog]),vertexShader:pi.meshbasic_vert,fragmentShader:pi.meshbasic_frag},lambert:{uniforms:Yn([mi.common,mi.specularmap,mi.envmap,mi.aomap,mi.lightmap,mi.emissivemap,mi.fog,mi.lights,{emissive:{value:new rn(0)}}]),vertexShader:pi.meshlambert_vert,fragmentShader:pi.meshlambert_frag},phong:{uniforms:Yn([mi.common,mi.specularmap,mi.envmap,mi.aomap,mi.lightmap,mi.emissivemap,mi.bumpmap,mi.normalmap,mi.displacementmap,mi.fog,mi.lights,{emissive:{value:new rn(0)},specular:{value:new rn(1118481)},shininess:{value:30}}]),vertexShader:pi.meshphong_vert,fragmentShader:pi.meshphong_frag},standard:{uniforms:Yn([mi.common,mi.envmap,mi.aomap,mi.lightmap,mi.emissivemap,mi.bumpmap,mi.normalmap,mi.displacementmap,mi.roughnessmap,mi.metalnessmap,mi.fog,mi.lights,{emissive:{value:new rn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:pi.meshphysical_vert,fragmentShader:pi.meshphysical_frag},toon:{uniforms:Yn([mi.common,mi.aomap,mi.lightmap,mi.emissivemap,mi.bumpmap,mi.normalmap,mi.displacementmap,mi.gradientmap,mi.fog,mi.lights,{emissive:{value:new rn(0)}}]),vertexShader:pi.meshtoon_vert,fragmentShader:pi.meshtoon_frag},matcap:{uniforms:Yn([mi.common,mi.bumpmap,mi.normalmap,mi.displacementmap,mi.fog,{matcap:{value:null}}]),vertexShader:pi.meshmatcap_vert,fragmentShader:pi.meshmatcap_frag},points:{uniforms:Yn([mi.points,mi.fog]),vertexShader:pi.points_vert,fragmentShader:pi.points_frag},dashed:{uniforms:Yn([mi.common,mi.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:pi.linedashed_vert,fragmentShader:pi.linedashed_frag},depth:{uniforms:Yn([mi.common,mi.displacementmap]),vertexShader:pi.depth_vert,fragmentShader:pi.depth_frag},normal:{uniforms:Yn([mi.common,mi.bumpmap,mi.normalmap,mi.displacementmap,{opacity:{value:1}}]),vertexShader:pi.meshnormal_vert,fragmentShader:pi.meshnormal_frag},sprite:{uniforms:Yn([mi.sprite,mi.fog]),vertexShader:pi.sprite_vert,fragmentShader:pi.sprite_frag},background:{uniforms:{uvTransform:{value:new xt},t2D:{value:null}},vertexShader:pi.background_vert,fragmentShader:pi.background_frag},cube:{uniforms:Yn([mi.envmap,{opacity:{value:1}}]),vertexShader:pi.cube_vert,fragmentShader:pi.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:pi.equirect_vert,fragmentShader:pi.equirect_frag},distanceRGBA:{uniforms:Yn([mi.common,mi.displacementmap,{referencePosition:{value:new zt},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:pi.distanceRGBA_vert,fragmentShader:pi.distanceRGBA_frag},shadow:{uniforms:Yn([mi.lights,mi.fog,{color:{value:new rn(0)},opacity:{value:1}}]),vertexShader:pi.shadow_vert,fragmentShader:pi.shadow_frag}};function gi(t,e,n,i,r){const s=new rn(0);let a,o,c=0,h=null,u=0,d=null;function p(t,e){n.buffers.color.setClear(t.r,t.g,t.b,e,r)}return{getClearColor:function(){return s},setClearColor:function(t,e=1){s.set(t),c=e,p(s,c)},getClearAlpha:function(){return c},setClearAlpha:function(t){c=t,p(s,c)},render:function(n,r){let m=!1,f=!0===r.isScene?r.background:null;f&&f.isTexture&&(f=e.get(f));const g=t.xr,v=g.getSession&&g.getSession();v&&"additive"===v.environmentBlendMode&&(f=null),null===f?p(s,c):f&&f.isColor&&(p(f,1),m=!0),(t.autoClear||m)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),f&&(f.isCubeTexture||f.mapping===l)?(void 0===o&&(o=new Wn(new qn(1,1,1),new Zn({name:"BackgroundCubeMaterial",uniforms:Xn(fi.cube.uniforms),vertexShader:fi.cube.vertexShader,fragmentShader:fi.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),o.geometry.deleteAttribute("normal"),o.geometry.deleteAttribute("uv"),o.onBeforeRender=function(t,e,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(o.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(o)),o.material.uniforms.envMap.value=f,o.material.uniforms.flipEnvMap.value=f.isCubeTexture&&!1===f.isRenderTargetTexture?-1:1,h===f&&u===f.version&&d===t.toneMapping||(o.material.needsUpdate=!0,h=f,u=f.version,d=t.toneMapping),n.unshift(o,o.geometry,o.material,0,0,null)):f&&f.isTexture&&(void 0===a&&(a=new Wn(new di(2,2),new Zn({name:"BackgroundMaterial",uniforms:Xn(fi.background.uniforms),vertexShader:fi.background.vertexShader,fragmentShader:fi.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),a.geometry.deleteAttribute("normal"),Object.defineProperty(a.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(a)),a.material.uniforms.t2D.value=f,!0===f.matrixAutoUpdate&&f.updateMatrix(),a.material.uniforms.uvTransform.value.copy(f.matrix),h===f&&u===f.version&&d===t.toneMapping||(a.material.needsUpdate=!0,h=f,u=f.version,d=t.toneMapping),n.unshift(a,a.geometry,a.material,0,0,null))}}}function vi(t,e,n,i){const r=t.getParameter(34921),s=i.isWebGL2?null:e.get("OES_vertex_array_object"),a=i.isWebGL2||null!==s,o={},l=d(null);let c=l;function h(e){return i.isWebGL2?t.bindVertexArray(e):s.bindVertexArrayOES(e)}function u(e){return i.isWebGL2?t.deleteVertexArray(e):s.deleteVertexArrayOES(e)}function d(t){const e=[],n=[],i=[];for(let t=0;t=0){let s=l[e];if(void 0===s&&("instanceMatrix"===e&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===e&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const e=s.normalized,a=s.itemSize,l=n.get(s);if(void 0===l)continue;const c=l.buffer,h=l.type,u=l.bytesPerElement;if(s.isInterleavedBufferAttribute){const n=s.data,l=n.stride,d=s.offset;if(n&&n.isInstancedInterleavedBuffer){for(let t=0;t0&&t.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(35633,36337).precision>0&&t.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const s="undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&t instanceof WebGL2ComputeRenderingContext;let a=void 0!==n.precision?n.precision:"highp";const o=r(a);o!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",o,"instead."),a=o);const l=s||e.has("WEBGL_draw_buffers"),c=!0===n.logarithmicDepthBuffer,h=t.getParameter(34930),u=t.getParameter(35660),d=t.getParameter(3379),p=t.getParameter(34076),m=t.getParameter(34921),f=t.getParameter(36347),g=t.getParameter(36348),v=t.getParameter(36349),y=u>0,x=s||e.has("OES_texture_float");return{isWebGL2:s,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==i)return i;if(!0===e.has("EXT_texture_filter_anisotropic")){const n=e.get("EXT_texture_filter_anisotropic");i=t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i},getMaxPrecision:r,precision:a,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:u,maxTextureSize:d,maxCubemapSize:p,maxAttributes:m,maxVertexUniforms:f,maxVaryings:g,maxFragmentUniforms:v,vertexTextures:y,floatFragmentTextures:x,floatVertexTextures:y&&x,maxSamples:s?t.getParameter(36183):0}}function _i(t){const e=this;let n=null,i=0,r=!1,s=!1;const a=new ai,o=new xt,l={value:null,needsUpdate:!1};function c(){l.value!==n&&(l.value=n,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function h(t,n,i,r){const s=null!==t?t.length:0;let c=null;if(0!==s){if(c=l.value,!0!==r||null===c){const e=i+4*s,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0){const a=t.getRenderTarget(),o=new ni(s.height/2);return o.fromEquirectangularTexture(t,r),e.set(r,o),t.setRenderTarget(a),r.addEventListener("dispose",i),n(o.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}fi.physical={uniforms:Yn([fi.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new yt(1,1)},clearcoatNormalMap:{value:null},sheen:{value:0},sheenColor:{value:new rn(0)},sheenColorMap:{value:null},sheenRoughness:{value:0},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new yt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new rn(0)},specularIntensity:{value:0},specularIntensityMap:{value:null},specularColor:{value:new rn(1,1,1)},specularColorMap:{value:null}}]),vertexShader:pi.meshphysical_vert,fragmentShader:pi.meshphysical_frag};class bi extends Qn{constructor(t=-1,e=1,n=1,i=-1,r=.1,s=2e3){super(),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,r,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-t,s=n+t,a=i+e,o=i-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,s=r+t*this.view.width,a-=e*this.view.offsetY,o=a-e*this.view.height}this.projectionMatrix.makeOrthographic(r,s,a,o,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}bi.prototype.isOrthographicCamera=!0;class wi extends Zn{constructor(t){super(t),this.type="RawShaderMaterial"}}wi.prototype.isRawShaderMaterial=!0;const Si=Math.pow(2,8),Ti=[.125,.215,.35,.446,.526,.582],Ei=5+Ti.length,Ai=20,Li={[X]:0,[Y]:1,[Z]:2,[Q]:3,[K]:4,[$]:5,[J]:6},Ri=new bi,{_lodPlanes:Ci,_sizeLods:Pi,_sigmas:Ii}=Hi(),Di=new rn;let Ni=null;const zi=(1+Math.sqrt(5))/2,Bi=1/zi,Fi=[new zt(1,1,1),new zt(-1,1,1),new zt(1,1,-1),new zt(-1,1,-1),new zt(0,zi,Bi),new zt(0,zi,-Bi),new zt(Bi,0,zi),new zt(-Bi,0,zi),new zt(zi,Bi,0),new zt(-zi,Bi,0)];class Oi{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._blurMaterial=function(t){const e=new Float32Array(t),n=new zt(0,1,0);return new wi({name:"SphericalGaussianBlur",defines:{n:t},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:e},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n},inputEncoding:{value:Li[3e3]},outputEncoding:{value:Li[3e3]}},vertexShader:ji(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${qi()}\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,blending:0,depthTest:!1,depthWrite:!1})}(Ai),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){Ni=this._renderer.getRenderTarget();const r=this._allocateTargets();return this._sceneToCubeUV(t,n,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t){return this._fromTexture(t)}fromCubemap(t){return this._fromTexture(t)}compileCubemapShader(){null===this._cubemapShader&&(this._cubemapShader=Wi(),this._compileMaterial(this._cubemapShader))}compileEquirectangularShader(){null===this._equirectShader&&(this._equirectShader=Vi(),this._compileMaterial(this._equirectShader))}dispose(){this._blurMaterial.dispose(),null!==this._cubemapShader&&this._cubemapShader.dispose(),null!==this._equirectShader&&this._equirectShader.dispose();for(let t=0;t2?Si:0,Si,Si),o.setRenderTarget(i),p&&o.render(d,r),o.render(t,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=h,o.outputEncoding=c,o.autoClear=l,t.background=m}_setEncoding(t,e){!0===this._renderer.capabilities.isWebGL2&&e.format===E&&e.type===x&&e.encoding===Y?t.value=Li[3e3]:t.value=Li[e.encoding]}_textureToCubeUV(t,e){const n=this._renderer,i=t.mapping===r||t.mapping===s;i?null==this._cubemapShader&&(this._cubemapShader=Wi()):null==this._equirectShader&&(this._equirectShader=Vi());const a=i?this._cubemapShader:this._equirectShader,o=new Wn(Ci[0],a),l=a.uniforms;l.envMap.value=t,i||l.texelSize.value.set(1/t.image.width,1/t.image.height),this._setEncoding(l.inputEncoding,t),this._setEncoding(l.outputEncoding,e.texture),ki(e,0,0,3*Si,2*Si),n.setRenderTarget(e),n.render(o,Ri)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let e=1;eAi&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${m} samples when the maximum is set to 20`);const f=[];let g=0;for(let t=0;t4?i-8+4:0),3*v,2*v),o.setRenderTarget(e),o.render(c,Ri)}}function Ui(t){return void 0!==t&&t.type===x&&(t.encoding===X||t.encoding===Y||t.encoding===J)}function Hi(){const t=[],e=[],n=[];let i=8;for(let r=0;r4?a=Ti[r-8+4-1]:0==r&&(a=0),n.push(a);const o=1/(s-1),l=-o/2,c=1+o/2,h=[l,l,c,l,c,c,l,l,c,c,l,c],u=6,d=6,p=3,m=2,f=1,g=new Float32Array(p*d*u),v=new Float32Array(m*d*u),y=new Float32Array(f*d*u);for(let t=0;t2?0:-1,i=[e,n,0,e+2/3,n,0,e+2/3,n+1,0,e,n,0,e+2/3,n+1,0,e,n+1,0];g.set(i,p*d*t),v.set(h,m*d*t);const r=[t,t,t,t,t,t];y.set(r,f*d*t)}const x=new En;x.setAttribute("position",new ln(g,p)),x.setAttribute("uv",new ln(v,m)),x.setAttribute("faceIndex",new ln(y,f)),t.push(x),i>4&&i--}return{_lodPlanes:t,_sizeLods:e,_sigmas:n}}function Gi(t){const e=new Pt(3*Si,3*Si,t);return e.texture.mapping=l,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function ki(t,e,n,i,r){t.viewport.set(e,n,i,r),t.scissor.set(e,n,i,r)}function Vi(){const t=new yt(1,1);return new wi({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:t},inputEncoding:{value:Li[3e3]},outputEncoding:{value:Li[3e3]}},vertexShader:ji(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${qi()}\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,blending:0,depthTest:!1,depthWrite:!1})}function Wi(){return new wi({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},inputEncoding:{value:Li[3e3]},outputEncoding:{value:Li[3e3]}},vertexShader:ji(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${qi()}\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,blending:0,depthTest:!1,depthWrite:!1})}function ji(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function qi(){return"\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t"}function Xi(t){let e=new WeakMap,n=null;function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(l){if(l&&l.isTexture&&!1===l.isRenderTargetTexture){const c=l.mapping,h=c===a||c===o,u=c===r||c===s;if(h||u){if(e.has(l))return e.get(l).texture;{const r=l.image;if(h&&r&&r.height>0||u&&r&&function(t){let e=0;const n=6;for(let i=0;i65535?fn:pn)(n,1);o.version=a;const l=s.get(t);l&&e.remove(l),s.set(t,o)}return{get:function(t,e){return!0===r[e.id]||(e.addEventListener("dispose",a),r[e.id]=!0,n.memory.geometries++),e},update:function(t){const n=t.attributes;for(const t in n)e.update(n[t],34962);const i=t.morphAttributes;for(const t in i){const n=i[t];for(let t=0,i=n.length;te.maxTextureSize&&(u=Math.ceil(h/e.maxTextureSize),h=e.maxTextureSize);const d=new Float32Array(h*u*4*i),p=new Ki(d,h,u,i);p.format=E,p.type=b;const m=4*l;for(let e=0;e0)return t;const r=e*n;let s=cr[r];if(void 0===s&&(s=new Float32Array(r),cr[r]=s),0!==e){i.toArray(s,0);for(let i=1,r=0;i!==e;++i)r+=n,t[i].toArray(s,r)}return s}function fr(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;n/gm;function ys(t){return t.replace(vs,xs)}function xs(t,e){const n=pi[e];if(void 0===n)throw new Error("Can not resolve #include <"+e+">");return ys(n)}const _s=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,Ms=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function bs(t){return t.replace(Ms,Ss).replace(_s,ws)}function ws(t,e,n,i){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),Ss(t,e,n,i)}function Ss(t,e,n,i){let r="";for(let t=parseInt(e);t0?t.gammaFactor:1,v=n.isWebGL2?"":function(t){return[t.extensionDerivatives||t.envMapCubeUV||t.bumpMap||t.tangentSpaceNormalMap||t.clearcoatNormalMap||t.flatShading||"physical"===t.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(t.extensionFragDepth||t.logarithmicDepthBuffer)&&t.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",t.extensionDrawBuffers&&t.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(t.extensionShaderTextureLOD||t.envMap||t.transmission)&&t.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(ms).join("\n")}(n),y=function(t){const e=[];for(const n in t){const i=t[n];!1!==i&&e.push("#define "+n+" "+i)}return e.join("\n")}(o),x=a.createProgram();let _,M,b=n.glslVersion?"#version "+n.glslVersion+"\n":"";n.isRawShaderMaterial?(_=[y].filter(ms).join("\n"),_.length>0&&(_+="\n"),M=[v,y].filter(ms).join("\n"),M.length>0&&(M+="\n")):(_=[Ts(n),"#define SHADER_NAME "+n.shaderName,y,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+g,"#define MAX_BONES "+n.maxBones,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+m:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.displacementMap&&n.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",n.specularColorMap?"#define USE_SPECULARCOLORMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEENCOLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.useVertexTexture?"#define BONE_TEXTURE":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphTargets&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",n.morphTargets&&n.isWebGL2?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+d:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(ms).join("\n"),M=[v,Ts(n),"#define SHADER_NAME "+n.shaderName,y,"#define GAMMA_FACTOR "+g,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+p:"",n.envMap?"#define "+m:"",n.envMap?"#define "+f:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",n.specularColorMap?"#define USE_SPECULARCOLORMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEENCOLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+d:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(n.extensionShaderTextureLOD||n.envMap)&&n.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==n.toneMapping?"#define TONE_MAPPING":"",0!==n.toneMapping?pi.tonemapping_pars_fragment:"",0!==n.toneMapping?ps("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.format===T?"#define OPAQUE":"",pi.encodings_pars_fragment,n.map?us("mapTexelToLinear",n.mapEncoding):"",n.matcap?us("matcapTexelToLinear",n.matcapEncoding):"",n.envMap?us("envMapTexelToLinear",n.envMapEncoding):"",n.emissiveMap?us("emissiveMapTexelToLinear",n.emissiveMapEncoding):"",n.specularColorMap?us("specularColorMapTexelToLinear",n.specularColorMapEncoding):"",n.sheenColorMap?us("sheenColorMapTexelToLinear",n.sheenColorMapEncoding):"",n.lightMap?us("lightMapTexelToLinear",n.lightMapEncoding):"",ds("linearToOutputTexel",n.outputEncoding),n.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(ms).join("\n")),h=ys(h),h=fs(h,n),h=gs(h,n),u=ys(u),u=fs(u,n),u=gs(u,n),h=bs(h),u=bs(u),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(b="#version 300 es\n",_=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+_,M=["#define varying in",n.glslVersion===it?"":"out highp vec4 pc_fragColor;",n.glslVersion===it?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+M);const w=b+M+u,S=os(a,35633,b+_+h),E=os(a,35632,w);if(a.attachShader(x,S),a.attachShader(x,E),void 0!==n.index0AttributeName?a.bindAttribLocation(x,0,n.index0AttributeName):!0===n.morphTargets&&a.bindAttribLocation(x,0,"position"),a.linkProgram(x),t.debug.checkShaderErrors){const t=a.getProgramInfoLog(x).trim(),e=a.getShaderInfoLog(S).trim(),n=a.getShaderInfoLog(E).trim();let i=!0,r=!0;if(!1===a.getProgramParameter(x,35714)){i=!1;const e=hs(a,S,"vertex"),n=hs(a,E,"fragment");console.error("THREE.WebGLProgram: Shader Error "+a.getError()+" - VALIDATE_STATUS "+a.getProgramParameter(x,35715)+"\n\nProgram Info Log: "+t+"\n"+e+"\n"+n)}else""!==t?console.warn("THREE.WebGLProgram: Program Info Log:",t):""!==e&&""!==n||(r=!1);r&&(this.diagnostics={runnable:i,programLog:t,vertexShader:{log:e,prefix:_},fragmentShader:{log:n,prefix:M}})}let A,L;return a.deleteShader(S),a.deleteShader(E),this.getUniforms=function(){return void 0===A&&(A=new as(a,x)),A},this.getAttributes=function(){return void 0===L&&(L=function(t,e){const n={},i=t.getProgramParameter(e,35721);for(let r=0;r0,C=s.clearcoat>0;return{isWebGL2:h,shaderID:S,shaderName:s.type,vertexShader:E,fragmentShader:A,defines:s.defines,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:f,instancing:!0===_.isInstancedMesh,instancingColor:!0===_.isInstancedMesh&&null!==_.instanceColor,supportsVertexTextures:m,outputEncoding:null!==L?y(L.texture):t.outputEncoding,map:!!s.map,mapEncoding:y(s.map),matcap:!!s.matcap,matcapEncoding:y(s.matcap),envMap:!!w,envMapMode:w&&w.mapping,envMapEncoding:y(w),envMapCubeUV:!!w&&(w.mapping===l||w.mapping===c),lightMap:!!s.lightMap,lightMapEncoding:y(s.lightMap),aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,emissiveMapEncoding:y(s.emissiveMap),bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:1===s.normalMapType,tangentSpaceNormalMap:0===s.normalMapType,clearcoat:C,clearcoatMap:C&&!!s.clearcoatMap,clearcoatRoughnessMap:C&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:C&&!!s.clearcoatNormalMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularColorMap:!!s.specularColorMap,specularColorMapEncoding:y(s.specularColorMap),alphaMap:!!s.alphaMap,alphaTest:R,gradientMap:!!s.gradientMap,sheen:s.sheen>0,sheenColorMap:!!s.sheenColorMap,sheenColorMapEncoding:y(s.sheenColorMap),sheenRoughnessMap:!!s.sheenRoughnessMap,transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!_.geometry&&!!_.geometry.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!_.geometry&&!!_.geometry.attributes.color&&4===_.geometry.attributes.color.itemSize,vertexUvs:!!s.map||!!s.bumpMap||!!s.normalMap||!!s.specularMap||!!s.alphaMap||!!s.emissiveMap||!!s.roughnessMap||!!s.metalnessMap||!!s.clearcoatMap||!!s.clearcoatRoughnessMap||!!s.clearcoatNormalMap||!!s.displacementMap||!!s.transmissionMap||!!s.thicknessMap||!!s.specularIntensityMap||!!s.specularColorMap||!!s.sheenColorMap||s.sheenRoughnessMap,uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||!!s.sheen>0||s.sheenColorMap||s.sheenRoughnessMap||!s.displacementMap),fog:!!M,useFog:s.fog,fogExp2:M&&M.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:u,skinning:!0===_.isSkinnedMesh&&T>0,maxBones:T,useVertexTexture:d,morphTargets:!!_.geometry&&!!_.geometry.morphAttributes.position,morphNormals:!!_.geometry&&!!_.geometry.morphAttributes.normal,morphTargetsCount:_.geometry&&_.geometry.morphAttributes.position?_.geometry.morphAttributes.position.length:0,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,format:s.format,dithering:s.dithering,shadowMapEnabled:t.shadowMap.enabled&&v.length>0,shadowMapType:t.shadowMap.type,toneMapping:s.toneMapped?t.toneMapping:0,physicallyCorrectLights:t.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:2===s.side,flipSided:1===s.side,depthPacking:void 0!==s.depthPacking&&s.depthPacking,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||i.has("EXT_shader_texture_lod"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function(e){const n=[];if(e.shaderID?n.push(e.shaderID):(n.push(St(e.fragmentShader)),n.push(St(e.vertexShader))),void 0!==e.defines)for(const t in e.defines)n.push(t),n.push(e.defines[t]);if(!1===e.isRawShaderMaterial){for(let t=0;t0?r.push(h):!0===n.transparent?s.push(h):i.push(h)},unshift:function(t,e,n,a,l,c){const h=o(t,e,n,a,l,c);n.transmission>0?r.unshift(h):!0===n.transparent?s.unshift(h):i.unshift(h)},finish:function(){for(let t=n,i=e.length;t1&&i.sort(t||Rs),r.length>1&&r.sort(e||Cs),s.length>1&&s.sort(e||Cs)}}}function Is(t){let e=new WeakMap;return{get:function(n,i){let r;return!1===e.has(n)?(r=new Ps(t),e.set(n,[r])):i>=e.get(n).length?(r=new Ps(t),e.get(n).push(r)):r=e.get(n)[i],r},dispose:function(){e=new WeakMap}}}function Ds(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new zt,color:new rn};break;case"SpotLight":n={position:new zt,direction:new zt,color:new rn,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new zt,color:new rn,distance:0,decay:0};break;case"HemisphereLight":n={direction:new zt,skyColor:new rn,groundColor:new rn};break;case"RectAreaLight":n={color:new rn,position:new zt,halfWidth:new zt,halfHeight:new zt}}return t[e.id]=n,n}}}let Ns=0;function zs(t,e){return(e.castShadow?1:0)-(t.castShadow?1:0)}function Bs(t,e){const n=new Ds,i=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let t=0;t<9;t++)r.probe.push(new zt);const s=new zt,a=new de,o=new de;return{setup:function(s,a){let o=0,l=0,c=0;for(let t=0;t<9;t++)r.probe[t].set(0,0,0);let h=0,u=0,d=0,p=0,m=0,f=0,g=0,v=0;s.sort(zs);const y=!0!==a?Math.PI:1;for(let t=0,e=s.length;t0&&(e.isWebGL2||!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=mi.LTC_FLOAT_1,r.rectAreaLTC2=mi.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=mi.LTC_HALF_1,r.rectAreaLTC2=mi.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const x=r.hash;x.directionalLength===h&&x.pointLength===u&&x.spotLength===d&&x.rectAreaLength===p&&x.hemiLength===m&&x.numDirectionalShadows===f&&x.numPointShadows===g&&x.numSpotShadows===v||(r.directional.length=h,r.spot.length=d,r.rectArea.length=p,r.point.length=u,r.hemi.length=m,r.directionalShadow.length=f,r.directionalShadowMap.length=f,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=v,r.spotShadowMap.length=v,r.directionalShadowMatrix.length=f,r.pointShadowMatrix.length=g,r.spotShadowMatrix.length=v,x.directionalLength=h,x.pointLength=u,x.spotLength=d,x.rectAreaLength=p,x.hemiLength=m,x.numDirectionalShadows=f,x.numPointShadows=g,x.numSpotShadows=v,r.version=Ns++)},setupView:function(t,e){let n=0,i=0,l=0,c=0,h=0;const u=e.matrixWorldInverse;for(let e=0,d=t.length;e=n.get(i).length?(s=new Fs(t,e),n.get(i).push(s)):s=n.get(i)[r],s},dispose:function(){n=new WeakMap}}}class Us extends Ze{constructor(t){super(),this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}Us.prototype.isMeshDepthMaterial=!0;class Hs extends Ze{constructor(t){super(),this.type="MeshDistanceMaterial",this.referencePosition=new zt,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}Hs.prototype.isMeshDistanceMaterial=!0;function Gs(t,e,n){let i=new ci;const r=new yt,s=new yt,a=new Ct,o=new Us({depthPacking:3201}),l=new Hs,c={},h=n.maxTextureSize,u={0:1,1:0,2:2},d=new Zn({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new yt},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),m=d.clone();m.defines.HORIZONTAL_PASS=1;const f=new En;f.setAttribute("position",new ln(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const v=new Wn(f,d),y=this;function x(n,i){const r=e.update(v);d.defines.VSM_SAMPLES!==n.blurSamples&&(d.defines.VSM_SAMPLES=n.blurSamples,m.defines.VSM_SAMPLES=n.blurSamples,d.needsUpdate=!0,m.needsUpdate=!0),d.uniforms.shadow_pass.value=n.map.texture,d.uniforms.resolution.value=n.mapSize,d.uniforms.radius.value=n.radius,t.setRenderTarget(n.mapPass),t.clear(),t.renderBufferDirect(i,null,r,d,v,null),m.uniforms.shadow_pass.value=n.mapPass.texture,m.uniforms.resolution.value=n.mapSize,m.uniforms.radius.value=n.radius,t.setRenderTarget(n.map),t.clear(),t.renderBufferDirect(i,null,r,m,v,null)}function _(e,n,i,r,s,a,h){let d=null;const p=!0===r.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(d=void 0!==p?p:!0===r.isPointLight?l:o,t.localClippingEnabled&&!0===i.clipShadows&&0!==i.clippingPlanes.length||i.displacementMap&&0!==i.displacementScale||i.alphaMap&&i.alphaTest>0){const t=d.uuid,e=i.uuid;let n=c[t];void 0===n&&(n={},c[t]=n);let r=n[e];void 0===r&&(r=d.clone(),n[e]=r),d=r}return d.visible=i.visible,d.wireframe=i.wireframe,d.side=3===h?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:u[i.side],d.alphaMap=i.alphaMap,d.alphaTest=i.alphaTest,d.clipShadows=i.clipShadows,d.clippingPlanes=i.clippingPlanes,d.clipIntersection=i.clipIntersection,d.displacementMap=i.displacementMap,d.displacementScale=i.displacementScale,d.displacementBias=i.displacementBias,d.wireframeLinewidth=i.wireframeLinewidth,d.linewidth=i.linewidth,!0===r.isPointLight&&!0===d.isMeshDistanceMaterial&&(d.referencePosition.setFromMatrixPosition(r.matrixWorld),d.nearDistance=s,d.farDistance=a),d}function M(n,r,s,a,o){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&3===o)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,n.matrixWorld);const i=e.update(n),r=n.material;if(Array.isArray(r)){const e=i.groups;for(let l=0,c=e.length;lh||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/m.x),r.x=s.x*m.x,u.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/m.y),r.y=s.y*m.y,u.mapSize.y=s.y)),null===u.map&&!u.isPointLightShadow&&3===this.type){const t={minFilter:g,magFilter:g,format:E};u.map=new Pt(r.x,r.y,t),u.map.texture.name=c.name+".shadowMap",u.mapPass=new Pt(r.x,r.y,t),u.camera.updateProjectionMatrix()}if(null===u.map){const t={minFilter:p,magFilter:p,format:E};u.map=new Pt(r.x,r.y,t),u.map.texture.name=c.name+".shadowMap",u.camera.updateProjectionMatrix()}t.setRenderTarget(u.map),t.clear();const f=u.getViewportCount();for(let t=0;t=1):-1!==R.indexOf("OpenGL ES")&&(L=parseFloat(/^OpenGL ES (\d)/.exec(R)[1]),A=L>=2);let C=null,P={};const I=t.getParameter(3088),D=t.getParameter(2978),N=(new Ct).fromArray(I),z=(new Ct).fromArray(D);function B(e,n,i){const r=new Uint8Array(4),s=t.createTexture();t.bindTexture(e,s),t.texParameteri(e,10241,9728),t.texParameteri(e,10240,9728);for(let e=0;ei||t.height>i)&&(r=i/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const i=e?gt:Math.floor,s=i(r*t.width),a=i(r*t.height);void 0===P&&(P=D(s,a));const o=n?D(s,a):P;o.width=s,o.height=a;return o.getContext("2d").drawImage(t,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+s+"x"+a+")."),o}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function z(t){return mt(t.width)&&mt(t.height)}function B(t,e){return t.generateMipmaps&&e&&t.minFilter!==p&&t.minFilter!==g}function F(e,n,r,s,a=1){t.generateMipmap(e);i.get(n).__maxMipLevel=Math.log2(Math.max(r,s,a))}function O(n,i,r,s){if(!1===o)return i;if(null!==n){if(void 0!==t[n])return t[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let a=i;return 6403===i&&(5126===r&&(a=33326),5131===r&&(a=33325),5121===r&&(a=33321)),6407===i&&(5126===r&&(a=34837),5131===r&&(a=34843),5121===r&&(a=32849)),6408===i&&(5126===r&&(a=34836),5131===r&&(a=34842),5121===r&&(a=s===Y?35907:32856)),33325!==a&&33326!==a&&34842!==a&&34836!==a||e.get("EXT_color_buffer_float"),a}function U(t){return t===p||t===m||t===f?9728:9729}function H(e){const n=e.target;n.removeEventListener("dispose",H),function(e){const n=i.get(e);if(void 0===n.__webglInit)return;t.deleteTexture(n.__webglTexture),i.remove(e)}(n),n.isVideoTexture&&C.delete(n),a.memory.textures--}function G(e){const n=e.target;n.removeEventListener("dispose",G),function(e){const n=e.texture,r=i.get(e),s=i.get(n);if(!e)return;void 0!==s.__webglTexture&&(t.deleteTexture(s.__webglTexture),a.memory.textures--);e.depthTexture&&e.depthTexture.dispose();if(e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++)t.deleteFramebuffer(r.__webglFramebuffer[e]),r.__webglDepthbuffer&&t.deleteRenderbuffer(r.__webglDepthbuffer[e]);else t.deleteFramebuffer(r.__webglFramebuffer),r.__webglDepthbuffer&&t.deleteRenderbuffer(r.__webglDepthbuffer),r.__webglMultisampledFramebuffer&&t.deleteFramebuffer(r.__webglMultisampledFramebuffer),r.__webglColorRenderbuffer&&t.deleteRenderbuffer(r.__webglColorRenderbuffer),r.__webglDepthRenderbuffer&&t.deleteRenderbuffer(r.__webglDepthRenderbuffer);if(e.isWebGLMultipleRenderTargets)for(let e=0,r=n.length;e0&&r.__version!==t.version){const n=t.image;if(void 0===n)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==n.complete)return void Z(r,t,e);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.activeTexture(33984+e),n.bindTexture(3553,r.__webglTexture)}function W(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?function(e,i,r){if(6!==i.image.length)return;J(e,i),n.activeTexture(33984+r),n.bindTexture(34067,e.__webglTexture),t.pixelStorei(37440,i.flipY),t.pixelStorei(37441,i.premultiplyAlpha),t.pixelStorei(3317,i.unpackAlignment),t.pixelStorei(37443,0);const a=i&&(i.isCompressedTexture||i.image[0].isCompressedTexture),l=i.image[0]&&i.image[0].isDataTexture,h=[];for(let t=0;t<6;t++)h[t]=a||l?l?i.image[t].image:i.image[t]:N(i.image[t],!1,!0,c);const u=h[0],d=z(u)||o,p=s.convert(i.format),m=s.convert(i.type),f=O(i.internalFormat,p,m,i.encoding);let g;if(X(34067,i,d),a){for(let t=0;t<6;t++){g=h[t].mipmaps;for(let e=0;e1||i.get(s).__currentAnisotropy)&&(t.texParameterf(n,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),i.get(s).__currentAnisotropy=s.anisotropy)}}function J(e,n){void 0===e.__webglInit&&(e.__webglInit=!0,n.addEventListener("dispose",H),e.__webglTexture=t.createTexture(),a.memory.textures++)}function Z(e,i,r){let a=3553;i.isDataTexture2DArray&&(a=35866),i.isDataTexture3D&&(a=32879),J(e,i),n.activeTexture(33984+r),n.bindTexture(a,e.__webglTexture),t.pixelStorei(37440,i.flipY),t.pixelStorei(37441,i.premultiplyAlpha),t.pixelStorei(3317,i.unpackAlignment),t.pixelStorei(37443,0);const l=function(t){return!o&&(t.wrapS!==u||t.wrapT!==u||t.minFilter!==p&&t.minFilter!==g)}(i)&&!1===z(i.image),c=N(i.image,l,!1,x),h=z(c)||o,d=s.convert(i.format);let m,f=s.convert(i.type),v=O(i.internalFormat,d,f,i.encoding);X(a,i,h);const y=i.mipmaps;if(i.isDepthTexture)v=6402,o?v=i.type===b?36012:i.type===M?33190:i.type===S?35056:33189:i.type===b&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),i.format===A&&6402===v&&i.type!==_&&i.type!==M&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),i.type=_,f=s.convert(i.type)),i.format===L&&6402===v&&(v=34041,i.type!==S&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),i.type=S,f=s.convert(i.type))),n.texImage2D(3553,0,v,c.width,c.height,0,d,f,null);else if(i.isDataTexture)if(y.length>0&&h){for(let t=0,e=y.length;t0&&h){for(let t=0,e=y.length;t=l&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+l),k+=1,t},this.resetTextureUnits=function(){k=0},this.setTexture2D=V,this.setTexture2DArray=function(t,e){const r=i.get(t);t.version>0&&r.__version!==t.version?Z(r,t,e):(n.activeTexture(33984+e),n.bindTexture(35866,r.__webglTexture))},this.setTexture3D=function(t,e){const r=i.get(t);t.version>0&&r.__version!==t.version?Z(r,t,e):(n.activeTexture(33984+e),n.bindTexture(32879,r.__webglTexture))},this.setTextureCube=W,this.setupRenderTarget=function(e){const l=e.texture,c=i.get(e),h=i.get(l);e.addEventListener("dispose",G),!0!==e.isWebGLMultipleRenderTargets&&(h.__webglTexture=t.createTexture(),h.__version=l.version,a.memory.textures++);const u=!0===e.isWebGLCubeRenderTarget,d=!0===e.isWebGLMultipleRenderTargets,p=!0===e.isWebGLMultisampleRenderTarget,m=l.isDataTexture3D||l.isDataTexture2DArray,f=z(e)||o;if(!o||l.format!==T||l.type!==b&&l.type!==w||(l.format=E,console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),u){c.__webglFramebuffer=[];for(let e=0;e<6;e++)c.__webglFramebuffer[e]=t.createFramebuffer()}else if(c.__webglFramebuffer=t.createFramebuffer(),d)if(r.drawBuffers){const n=e.texture;for(let e=0,r=n.length;eo+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&a<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));return null!==a&&(a.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==s),this}}class Js extends rt{constructor(t,e){super();const n=this,i=t.state;let r=null,s=1,a=null,o="local-floor",l=null,c=null,h=null,u=null,d=null,p=!1,m=null,f=null,g=null,v=null,y=null,x=null;const _=[],M=new Map,b=new Kn;b.layers.enable(1),b.viewport=new Ct;const w=new Kn;w.layers.enable(2),w.viewport=new Ct;const S=[b,w],T=new js;T.layers.enable(1),T.layers.enable(2);let E=null,A=null;function L(t){const e=M.get(t.inputSource);e&&e.dispatchEvent({type:t.type,data:t.inputSource})}function R(){M.forEach((function(t,e){t.disconnect(e)})),M.clear(),E=null,A=null,i.bindXRFramebuffer(null),t.setRenderTarget(t.getRenderTarget()),h&&e.deleteFramebuffer(h),m&&e.deleteFramebuffer(m),f&&e.deleteRenderbuffer(f),g&&e.deleteRenderbuffer(g),h=null,m=null,f=null,g=null,d=null,u=null,c=null,r=null,z.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function C(t){const e=r.inputSources;for(let t=0;t<_.length;t++)M.set(e[t],_[t]);for(let e=0;e0&&(e.alphaTest.value=n.alphaTest);const i=t.get(n).envMap;if(i){e.envMap.value=i,e.flipEnvMap.value=i.isCubeTexture&&!1===i.isRenderTargetTexture?-1:1,e.reflectivity.value=n.reflectivity,e.ior.value=n.ior,e.refractionRatio.value=n.refractionRatio;const r=t.get(i).__maxMipLevel;void 0!==r&&(e.maxMipLevel.value=r)}let r,s;n.lightMap&&(e.lightMap.value=n.lightMap,e.lightMapIntensity.value=n.lightMapIntensity),n.aoMap&&(e.aoMap.value=n.aoMap,e.aoMapIntensity.value=n.aoMapIntensity),n.map?r=n.map:n.specularMap?r=n.specularMap:n.displacementMap?r=n.displacementMap:n.normalMap?r=n.normalMap:n.bumpMap?r=n.bumpMap:n.roughnessMap?r=n.roughnessMap:n.metalnessMap?r=n.metalnessMap:n.alphaMap?r=n.alphaMap:n.emissiveMap?r=n.emissiveMap:n.clearcoatMap?r=n.clearcoatMap:n.clearcoatNormalMap?r=n.clearcoatNormalMap:n.clearcoatRoughnessMap?r=n.clearcoatRoughnessMap:n.specularIntensityMap?r=n.specularIntensityMap:n.specularColorMap?r=n.specularColorMap:n.transmissionMap?r=n.transmissionMap:n.thicknessMap?r=n.thicknessMap:n.sheenColorMap?r=n.sheenColorMap:n.sheenRoughnessMap&&(r=n.sheenRoughnessMap),void 0!==r&&(r.isWebGLRenderTarget&&(r=r.texture),!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uvTransform.value.copy(r.matrix)),n.aoMap?s=n.aoMap:n.lightMap&&(s=n.lightMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),e.uv2Transform.value.copy(s.matrix))}function n(e,n){e.roughness.value=n.roughness,e.metalness.value=n.metalness,n.roughnessMap&&(e.roughnessMap.value=n.roughnessMap),n.metalnessMap&&(e.metalnessMap.value=n.metalnessMap),n.emissiveMap&&(e.emissiveMap.value=n.emissiveMap),n.bumpMap&&(e.bumpMap.value=n.bumpMap,e.bumpScale.value=n.bumpScale,1===n.side&&(e.bumpScale.value*=-1)),n.normalMap&&(e.normalMap.value=n.normalMap,e.normalScale.value.copy(n.normalScale),1===n.side&&e.normalScale.value.negate()),n.displacementMap&&(e.displacementMap.value=n.displacementMap,e.displacementScale.value=n.displacementScale,e.displacementBias.value=n.displacementBias);t.get(n).envMap&&(e.envMapIntensity.value=n.envMapIntensity)}return{refreshFogUniforms:function(t,e){t.fogColor.value.copy(e.color),e.isFog?(t.fogNear.value=e.near,t.fogFar.value=e.far):e.isFogExp2&&(t.fogDensity.value=e.density)},refreshMaterialUniforms:function(t,i,r,s,a){i.isMeshBasicMaterial?e(t,i):i.isMeshLambertMaterial?(e(t,i),function(t,e){e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap)}(t,i)):i.isMeshToonMaterial?(e(t,i),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap);e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap);e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1));e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate());e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,i)):i.isMeshPhongMaterial?(e(t,i),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4),e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap);e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1));e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate());e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,i)):i.isMeshStandardMaterial?(e(t,i),i.isMeshPhysicalMaterial?function(t,e,i){n(t,e),t.ior.value=e.ior,e.sheen>0&&(t.sheenColor.value.copy(e.sheenColor).multiplyScalar(e.sheen),t.sheenRoughness.value=e.sheenRoughness,e.sheenColorMap&&(t.sheenColorMap.value=e.sheenColorMap),e.sheenRoughnessMap&&(t.sheenRoughnessMap.value=e.sheenRoughnessMap));e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap),e.clearcoatNormalMap&&(t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),t.clearcoatNormalMap.value=e.clearcoatNormalMap,1===e.side&&t.clearcoatNormalScale.value.negate()));e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=i.texture,t.transmissionSamplerSize.value.set(i.width,i.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap),t.attenuationDistance.value=e.attenuationDistance,t.attenuationColor.value.copy(e.attenuationColor));t.specularIntensity.value=e.specularIntensity,t.specularColor.value.copy(e.specularColor),e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap);e.specularColorMap&&(t.specularColorMap.value=e.specularColorMap)}(t,i,a):n(t,i)):i.isMeshMatcapMaterial?(e(t,i),function(t,e){e.matcap&&(t.matcap.value=e.matcap);e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1));e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate());e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,i)):i.isMeshDepthMaterial?(e(t,i),function(t,e){e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,i)):i.isMeshDistanceMaterial?(e(t,i),function(t,e){e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias);t.referencePosition.value.copy(e.referencePosition),t.nearDistance.value=e.nearDistance,t.farDistance.value=e.farDistance}(t,i)):i.isMeshNormalMaterial?(e(t,i),function(t,e){e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1));e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate());e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,i)):i.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity}(t,i),i.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,i)):i.isPointsMaterial?function(t,e,n,i){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*n,t.scale.value=.5*i,e.map&&(t.map.value=e.map);e.alphaMap&&(t.alphaMap.value=e.alphaMap);e.alphaTest>0&&(t.alphaTest.value=e.alphaTest);let r;e.map?r=e.map:e.alphaMap&&(r=e.alphaMap);void 0!==r&&(!0===r.matrixAutoUpdate&&r.updateMatrix(),t.uvTransform.value.copy(r.matrix))}(t,i,r,s):i.isSpriteMaterial?function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map);e.alphaMap&&(t.alphaMap.value=e.alphaMap);e.alphaTest>0&&(t.alphaTest.value=e.alphaTest);let n;e.map?n=e.map:e.alphaMap&&(n=e.alphaMap);void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),t.uvTransform.value.copy(n.matrix))}(t,i):i.isShadowMaterial?(t.color.value.copy(i.color),t.opacity.value=i.opacity):i.isShaderMaterial&&(i.uniformsNeedUpdate=!1)}}}function Qs(t={}){const e=void 0!==t.canvas?t.canvas:function(){const t=wt("canvas");return t.style.display="block",t}(),n=void 0!==t.context?t.context:null,i=void 0!==t.alpha&&t.alpha,r=void 0===t.depth||t.depth,s=void 0===t.stencil||t.stencil,a=void 0!==t.antialias&&t.antialias,o=void 0===t.premultipliedAlpha||t.premultipliedAlpha,l=void 0!==t.preserveDrawingBuffer&&t.preserveDrawingBuffer,c=void 0!==t.powerPreference?t.powerPreference:"default",h=void 0!==t.failIfMajorPerformanceCaveat&&t.failIfMajorPerformanceCaveat;let d=null,m=null;const f=[],g=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.gammaFactor=2,this.outputEncoding=X,this.physicallyCorrectLights=!1,this.toneMapping=0,this.toneMappingExposure=1;const v=this;let _=!1,M=0,S=0,T=null,A=-1,L=null;const R=new Ct,C=new Ct;let P=null,I=e.width,D=e.height,N=1,z=null,B=null;const F=new Ct(0,0,I,D),O=new Ct(0,0,I,D);let U=!1;const H=[],G=new ci;let k=!1,V=!1,W=null;const j=new de,q=new zt,Y={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function J(){return null===T?N:1}let Z,Q,K,$,tt,et,nt,it,rt,st,at,ot,lt,ct,ht,ut,dt,pt,mt,ft,gt,vt,yt,xt=n;function _t(t,n){for(let i=0;i0&&function(t,e,n){if(null===W){const t=!0===a&&!0===Q.isWebGL2;W=new(t?Dt:Pt)(1024,1024,{generateMipmaps:!0,type:null!==vt.convert(w)?w:x,minFilter:y,magFilter:p,wrapS:u,wrapT:u})}const i=v.getRenderTarget();v.setRenderTarget(W),v.clear();const r=v.toneMapping;v.toneMapping=0,Ft(t,e,n),v.toneMapping=r,et.updateMultisampleRenderTarget(W),et.updateRenderTargetMipmap(W),v.setRenderTarget(i)}(r,e,n),i&&K.viewport(R.copy(i)),r.length>0&&Ft(r,e,n),s.length>0&&Ft(s,e,n),o.length>0&&Ft(o,e,n)}function Ft(t,e,n){const i=!0===e.isScene?e.overrideMaterial:null;for(let r=0,s=t.length;r0?g[g.length-1]:null,f.pop(),d=f.length>0?f[f.length-1]:null},this.getActiveCubeFace=function(){return M},this.getActiveMipmapLevel=function(){return S},this.getRenderTarget=function(){return T},this.setRenderTarget=function(t,e=0,n=0){T=t,M=e,S=n,t&&void 0===tt.get(t).__webglFramebuffer&&et.setupRenderTarget(t);let i=null,r=!1,s=!1;if(t){const n=t.texture;(n.isDataTexture3D||n.isDataTexture2DArray)&&(s=!0);const a=tt.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(i=a[e],r=!0):i=t.isWebGLMultisampleRenderTarget?tt.get(t).__webglMultisampledFramebuffer:a,R.copy(t.viewport),C.copy(t.scissor),P=t.scissorTest}else R.copy(F).multiplyScalar(N).floor(),C.copy(O).multiplyScalar(N).floor(),P=U;if(K.bindFramebuffer(36160,i)&&Q.drawBuffers){let e=!1;if(t)if(t.isWebGLMultipleRenderTargets){const n=t.texture;if(H.length!==n.length||36064!==H[0]){for(let t=0,e=n.length;t=0&&e<=t.width-i&&n>=0&&n<=t.height-r&&xt.readPixels(e,n,i,r,vt.convert(o),vt.convert(l),s):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{const t=null!==T?tt.get(T).__webglFramebuffer:null;K.bindFramebuffer(36160,t)}}},this.copyFramebufferToTexture=function(t,e,n=0){const i=Math.pow(2,-n),r=Math.floor(e.image.width*i),s=Math.floor(e.image.height*i);let a=vt.convert(e.format);Q.isWebGL2&&(6407===a&&(a=32849),6408===a&&(a=32856)),et.setTexture2D(e,0),xt.copyTexImage2D(3553,n,a,t.x,t.y,r,s,0),K.unbindTexture()},this.copyTextureToTexture=function(t,e,n,i=0){const r=e.image.width,s=e.image.height,a=vt.convert(n.format),o=vt.convert(n.type);et.setTexture2D(n,0),xt.pixelStorei(37440,n.flipY),xt.pixelStorei(37441,n.premultiplyAlpha),xt.pixelStorei(3317,n.unpackAlignment),e.isDataTexture?xt.texSubImage2D(3553,i,t.x,t.y,r,s,a,o,e.image.data):e.isCompressedTexture?xt.compressedTexSubImage2D(3553,i,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,a,e.mipmaps[0].data):xt.texSubImage2D(3553,i,t.x,t.y,a,o,e.image),0===i&&n.generateMipmaps&&xt.generateMipmap(3553),K.unbindTexture()},this.copyTextureToTexture3D=function(t,e,n,i,r=0){if(v.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const s=t.max.x-t.min.x+1,a=t.max.y-t.min.y+1,o=t.max.z-t.min.z+1,l=vt.convert(i.format),c=vt.convert(i.type);let h;if(i.isDataTexture3D)et.setTexture3D(i,0),h=32879;else{if(!i.isDataTexture2DArray)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");et.setTexture2DArray(i,0),h=35866}xt.pixelStorei(37440,i.flipY),xt.pixelStorei(37441,i.premultiplyAlpha),xt.pixelStorei(3317,i.unpackAlignment);const u=xt.getParameter(3314),d=xt.getParameter(32878),p=xt.getParameter(3316),m=xt.getParameter(3315),f=xt.getParameter(32877),g=n.isCompressedTexture?n.mipmaps[0]:n.image;xt.pixelStorei(3314,g.width),xt.pixelStorei(32878,g.height),xt.pixelStorei(3316,t.min.x),xt.pixelStorei(3315,t.min.y),xt.pixelStorei(32877,t.min.z),n.isDataTexture||n.isDataTexture3D?xt.texSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,c,g.data):n.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),xt.compressedTexSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,g.data)):xt.texSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,c,g),xt.pixelStorei(3314,u),xt.pixelStorei(32878,d),xt.pixelStorei(3316,p),xt.pixelStorei(3315,m),xt.pixelStorei(32877,f),0===r&&i.generateMipmaps&&xt.generateMipmap(h),K.unbindTexture()},this.initTexture=function(t){et.setTexture2D(t,0),K.unbindTexture()},this.resetState=function(){M=0,S=0,T=null,K.reset(),yt.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}Qs.prototype.isWebGLRenderer=!0;class Ks extends Qs{}Ks.prototype.isWebGL1Renderer=!0;class $s{constructor(t,e=25e-5){this.name="",this.color=new rn(t),this.density=e}clone(){return new $s(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}$s.prototype.isFogExp2=!0;class ta{constructor(t,e=1,n=1e3){this.name="",this.color=new rn(t),this.near=e,this.far=n}clone(){return new ta(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}ta.prototype.isFog=!0;class ea extends Fe{constructor(){super(),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),null!==t.background&&(this.background=t.background.clone()),null!==t.environment&&(this.environment=t.environment.clone()),null!==t.fog&&(this.fog=t.fog.clone()),null!==t.overrideMaterial&&(this.overrideMaterial=t.overrideMaterial.clone()),this.autoUpdate=t.autoUpdate,this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return null!==this.fog&&(e.object.fog=this.fog.toJSON()),e}}ea.prototype.isScene=!0;class na{constructor(t,e){this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=et,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=ht()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let i=0,r=this.stride;it.far||e.push({distance:o,point:oa.clone(),uv:Ye.getUV(oa,pa,ma,fa,ga,va,ya,new yt),face:null,object:this})}copy(t){return super.copy(t),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}}function _a(t,e,n,i,r,s){ha.subVectors(t,n).addScalar(.5).multiply(i),void 0!==r?(ua.x=s*ha.x-r*ha.y,ua.y=r*ha.x+s*ha.y):ua.copy(ha),t.copy(e),t.x+=ua.x,t.y+=ua.y,t.applyMatrix4(da)}xa.prototype.isSprite=!0;const Ma=new zt,ba=new zt;class wa extends Fe{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(t){super.copy(t,!1);const e=t.levels;for(let t=0,n=e.length;t0){let n,i;for(n=1,i=e.length;n0){Ma.setFromMatrixPosition(this.matrixWorld);const n=t.ray.origin.distanceTo(Ma);this.getObjectForDistance(n).raycast(t,e)}}update(t){const e=this.levels;if(e.length>1){Ma.setFromMatrixPosition(t.matrixWorld),ba.setFromMatrixPosition(this.matrixWorld);const n=Ma.distanceTo(ba)/t.zoom;let i,r;for(e[0].object.visible=!0,i=1,r=e.length;i=e[i].distance;i++)e[i-1].object.visible=!1,e[i].object.visible=!0;for(this._currentLevel=i-1;io)continue;u.applyMatrix4(this.matrixWorld);const d=t.ray.origin.distanceTo(u);dt.far||e.push({distance:d,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}else{for(let n=Math.max(0,s.start),i=Math.min(r.count,s.start+s.count)-1;no)continue;u.applyMatrix4(this.matrixWorld);const i=t.ray.origin.distanceTo(u);it.far||e.push({distance:i,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}}else n.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}updateMorphTargets(){const t=this.geometry;if(t.isBufferGeometry){const e=t.morphAttributes,n=Object.keys(e);if(n.length>0){const t=e[n[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,n=t.length;e0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}Xa.prototype.isLine=!0;const Ya=new zt,Ja=new zt;class Za extends Xa{constructor(t,e){super(t,e),this.type="LineSegments"}computeLineDistances(){const t=this.geometry;if(t.isBufferGeometry)if(null===t.index){const e=t.attributes.position,n=[];for(let t=0,i=e.count;t0){const t=e[n[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,n=t.length;e0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}function ro(t,e,n,i,r,s,a){const o=to.distanceSqToPoint(t);if(or.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:n,index:e,face:null,object:a})}}io.prototype.isPoints=!0;class so extends Lt{constructor(t,e,n,i,r,s,a,o,l){super(t,e,n,i,r,s,a,o,l),this.format=void 0!==a?a:T,this.minFilter=void 0!==s?s:g,this.magFilter=void 0!==r?r:g,this.generateMipmaps=!1;const c=this;"requestVideoFrameCallback"in t&&t.requestVideoFrameCallback((function e(){c.needsUpdate=!0,t.requestVideoFrameCallback(e)}))}clone(){return new this.constructor(this.image).copy(this)}update(){const t=this.image;!1==="requestVideoFrameCallback"in t&&t.readyState>=t.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}so.prototype.isVideoTexture=!0;class ao extends Lt{constructor(t,e,n,i,r,s,a,o,l,c,h,u){super(null,s,a,o,l,c,i,r,h,u),this.image={width:e,height:n},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}}ao.prototype.isCompressedTexture=!0;class oo extends Lt{constructor(t,e,n,i,r,s,a,o,l){super(t,e,n,i,r,s,a,o,l),this.needsUpdate=!0}}oo.prototype.isCanvasTexture=!0;class lo extends Lt{constructor(t,e,n,i,r,s,a,o,l,c){if((c=void 0!==c?c:A)!==A&&c!==L)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&c===A&&(n=_),void 0===n&&c===L&&(n=S),super(null,i,r,s,a,o,c,n,l),this.image={width:t,height:e},this.magFilter=void 0!==a?a:p,this.minFilter=void 0!==o?o:p,this.flipY=!1,this.generateMipmaps=!1}}lo.prototype.isDepthTexture=!0;class co extends En{constructor(t=1,e=8,n=0,i=2*Math.PI){super(),this.type="CircleGeometry",this.parameters={radius:t,segments:e,thetaStart:n,thetaLength:i},e=Math.max(3,e);const r=[],s=[],a=[],o=[],l=new zt,c=new yt;s.push(0,0,0),a.push(0,0,1),o.push(.5,.5);for(let r=0,h=3;r<=e;r++,h+=3){const u=n+r/e*i;l.x=t*Math.cos(u),l.y=t*Math.sin(u),s.push(l.x,l.y,l.z),a.push(0,0,1),c.x=(s[h]/t+1)/2,c.y=(s[h+1]/t+1)/2,o.push(c.x,c.y)}for(let t=1;t<=e;t++)r.push(t,t+1,0);this.setIndex(r),this.setAttribute("position",new vn(s,3)),this.setAttribute("normal",new vn(a,3)),this.setAttribute("uv",new vn(o,2))}static fromJSON(t){return new co(t.radius,t.segments,t.thetaStart,t.thetaLength)}}class ho extends En{constructor(t=1,e=1,n=1,i=8,r=1,s=!1,a=0,o=2*Math.PI){super(),this.type="CylinderGeometry",this.parameters={radiusTop:t,radiusBottom:e,height:n,radialSegments:i,heightSegments:r,openEnded:s,thetaStart:a,thetaLength:o};const l=this;i=Math.floor(i),r=Math.floor(r);const c=[],h=[],u=[],d=[];let p=0;const m=[],f=n/2;let g=0;function v(n){const r=p,s=new yt,m=new zt;let v=0;const y=!0===n?t:e,x=!0===n?1:-1;for(let t=1;t<=i;t++)h.push(0,f*x,0),u.push(0,x,0),d.push(.5,.5),p++;const _=p;for(let t=0;t<=i;t++){const e=t/i*o+a,n=Math.cos(e),r=Math.sin(e);m.x=y*r,m.y=f*x,m.z=y*n,h.push(m.x,m.y,m.z),u.push(0,x,0),s.x=.5*n+.5,s.y=.5*r*x+.5,d.push(s.x,s.y),p++}for(let t=0;t0&&v(!0),e>0&&v(!1)),this.setIndex(c),this.setAttribute("position",new vn(h,3)),this.setAttribute("normal",new vn(u,3)),this.setAttribute("uv",new vn(d,2))}static fromJSON(t){return new ho(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}class uo extends ho{constructor(t=1,e=1,n=8,i=1,r=!1,s=0,a=2*Math.PI){super(0,t,e,n,i,r,s,a),this.type="ConeGeometry",this.parameters={radius:t,height:e,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:s,thetaLength:a}}static fromJSON(t){return new uo(t.radius,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}class po extends En{constructor(t=[],e=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:t,indices:e,radius:n,detail:i};const r=[],s=[];function a(t,e,n,i){const r=i+1,s=[];for(let i=0;i<=r;i++){s[i]=[];const a=t.clone().lerp(n,i/r),o=e.clone().lerp(n,i/r),l=r-i;for(let t=0;t<=l;t++)s[i][t]=0===t&&i===r?a:a.clone().lerp(o,t/l)}for(let t=0;t.9&&a<.1&&(e<.2&&(s[t+0]+=1),n<.2&&(s[t+2]+=1),i<.2&&(s[t+4]+=1))}}()}(),this.setAttribute("position",new vn(r,3)),this.setAttribute("normal",new vn(r.slice(),3)),this.setAttribute("uv",new vn(s,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}static fromJSON(t){return new po(t.vertices,t.indices,t.radius,t.details)}}class mo extends po{constructor(t=1,e=0){const n=(1+Math.sqrt(5))/2,i=1/n;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],t,e),this.type="DodecahedronGeometry",this.parameters={radius:t,detail:e}}static fromJSON(t){return new mo(t.radius,t.detail)}}const fo=new zt,go=new zt,vo=new zt,yo=new Ye;class xo extends En{constructor(t=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:t,thresholdAngle:e},null!==t){const n=4,i=Math.pow(10,n),r=Math.cos(at*e),s=t.getIndex(),a=t.getAttribute("position"),o=s?s.count:a.count,l=[0,0,0],c=["a","b","c"],h=new Array(3),u={},d=[];for(let t=0;t0)){l=i;break}l=i-1}if(i=l,n[i]===s)return i/(r-1);const c=n[i];return(i+(s-c)/(n[i+1]-c))/(r-1)}getTangent(t,e){const n=1e-4;let i=t-n,r=t+n;i<0&&(i=0),r>1&&(r=1);const s=this.getPoint(i),a=this.getPoint(r),o=e||(s.isVector2?new yt:new zt);return o.copy(a).sub(s).normalize(),o}getTangentAt(t,e){const n=this.getUtoTmapping(t);return this.getTangent(n,e)}computeFrenetFrames(t,e){const n=new zt,i=[],r=[],s=[],a=new zt,o=new de;for(let e=0;e<=t;e++){const n=e/t;i[e]=this.getTangentAt(n,new zt)}r[0]=new zt,s[0]=new zt;let l=Number.MAX_VALUE;const c=Math.abs(i[0].x),h=Math.abs(i[0].y),u=Math.abs(i[0].z);c<=l&&(l=c,n.set(1,0,0)),h<=l&&(l=h,n.set(0,1,0)),u<=l&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],a),s[0].crossVectors(i[0],r[0]);for(let e=1;e<=t;e++){if(r[e]=r[e-1].clone(),s[e]=s[e-1].clone(),a.crossVectors(i[e-1],i[e]),a.length()>Number.EPSILON){a.normalize();const t=Math.acos(ut(i[e-1].dot(i[e]),-1,1));r[e].applyMatrix4(o.makeRotationAxis(a,t))}s[e].crossVectors(i[e],r[e])}if(!0===e){let e=Math.acos(ut(r[0].dot(r[t]),-1,1));e/=t,i[0].dot(a.crossVectors(r[0],r[t]))>0&&(e=-e);for(let n=1;n<=t;n++)r[n].applyMatrix4(o.makeRotationAxis(i[n],e*n)),s[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}toJSON(){const t={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t}fromJSON(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}}class Mo extends _o{constructor(t=0,e=0,n=1,i=1,r=0,s=2*Math.PI,a=!1,o=0){super(),this.type="EllipseCurve",this.aX=t,this.aY=e,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=s,this.aClockwise=a,this.aRotation=o}getPoint(t,e){const n=e||new yt,i=2*Math.PI;let r=this.aEndAngle-this.aStartAngle;const s=Math.abs(r)i;)r-=i;r0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===c&&l===r-1&&(l=r-2,c=1),this.closed||l>0?a=i[(l-1)%r]:(So.subVectors(i[0],i[1]).add(i[0]),a=So);const h=i[l%r],u=i[(l+1)%r];if(this.closed||l+2i.length-2?i.length-1:s+1],h=i[s>i.length-3?i.length-1:s+2];return n.set(Ro(a,o.x,l.x,c.x,h.x),Ro(a,o.y,l.y,c.y,h.y)),n}copy(t){super.copy(t),this.points=[];for(let e=0,n=t.points.length;e=n){const t=i[r]-n,s=this.curves[r],a=s.getLength(),o=0===a?0:1-t/a;return s.getPointAt(o,e)}r++}return null}getLength(){const t=this.getCurveLengths();return t[t.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const t=[];let e=0;for(let n=0,i=this.curves.length;n1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}copy(t){super.copy(t),this.curves=[];for(let e=0,n=t.curves.length;e0){const t=l.getPoint(0);t.equals(this.currentPoint)||this.lineTo(t.x,t.y)}this.curves.push(l);const c=l.getPoint(1);return this.currentPoint.copy(c),this}copy(t){return super.copy(t),this.currentPoint.copy(t.currentPoint),this}toJSON(){const t=super.toJSON();return t.currentPoint=this.currentPoint.toArray(),t}fromJSON(t){return super.fromJSON(t),this.currentPoint.fromArray(t.currentPoint),this}}class ko extends Go{constructor(t){super(t),this.uuid=ht(),this.type="Shape",this.holes=[]}getPointsHoles(t){const e=[];for(let n=0,i=this.holes.length;n80*n){o=c=t[0],l=h=t[1];for(let e=n;ec&&(c=u),d>h&&(h=d);p=Math.max(c-o,h-l),p=0!==p?1/p:0}return qo(s,a,n,o,l,p),a};function Wo(t,e,n,i,r){let s,a;if(r===function(t,e,n,i){let r=0;for(let s=e,a=n-i;s0)for(s=e;s=e;s-=i)a=ul(s,t[s],t[s+1],a);return a&&sl(a,a.next)&&(dl(a),a=a.next),a}function jo(t,e){if(!t)return t;e||(e=t);let n,i=t;do{if(n=!1,i.steiner||!sl(i,i.next)&&0!==rl(i.prev,i,i.next))i=i.next;else{if(dl(i),i=e=i.prev,i===i.next)break;n=!0}}while(n||i!==e);return e}function qo(t,e,n,i,r,s,a){if(!t)return;!a&&s&&function(t,e,n,i){let r=t;do{null===r.z&&(r.z=tl(r.x,r.y,e,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){let e,n,i,r,s,a,o,l,c=1;do{for(n=t,t=null,s=null,a=0;n;){for(a++,i=n,o=0,e=0;e0||l>0&&i;)0!==o&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,o--):(r=i,i=i.nextZ,l--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;n=i}s.nextZ=null,c*=2}while(a>1)}(r)}(t,i,r,s);let o,l,c=t;for(;t.prev!==t.next;)if(o=t.prev,l=t.next,s?Yo(t,i,r,s):Xo(t))e.push(o.i/n),e.push(t.i/n),e.push(l.i/n),dl(t),t=l.next,c=l.next;else if((t=l)===c){a?1===a?qo(t=Jo(jo(t),e,n),e,n,i,r,s,2):2===a&&Zo(t,e,n,i,r,s):qo(jo(t),e,n,i,r,s,1);break}}function Xo(t){const e=t.prev,n=t,i=t.next;if(rl(e,n,i)>=0)return!1;let r=t.next.next;for(;r!==t.prev;){if(nl(e.x,e.y,n.x,n.y,i.x,i.y,r.x,r.y)&&rl(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function Yo(t,e,n,i){const r=t.prev,s=t,a=t.next;if(rl(r,s,a)>=0)return!1;const o=r.xs.x?r.x>a.x?r.x:a.x:s.x>a.x?s.x:a.x,h=r.y>s.y?r.y>a.y?r.y:a.y:s.y>a.y?s.y:a.y,u=tl(o,l,e,n,i),d=tl(c,h,e,n,i);let p=t.prevZ,m=t.nextZ;for(;p&&p.z>=u&&m&&m.z<=d;){if(p!==t.prev&&p!==t.next&&nl(r.x,r.y,s.x,s.y,a.x,a.y,p.x,p.y)&&rl(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,m!==t.prev&&m!==t.next&&nl(r.x,r.y,s.x,s.y,a.x,a.y,m.x,m.y)&&rl(m.prev,m,m.next)>=0)return!1;m=m.nextZ}for(;p&&p.z>=u;){if(p!==t.prev&&p!==t.next&&nl(r.x,r.y,s.x,s.y,a.x,a.y,p.x,p.y)&&rl(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;m&&m.z<=d;){if(m!==t.prev&&m!==t.next&&nl(r.x,r.y,s.x,s.y,a.x,a.y,m.x,m.y)&&rl(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function Jo(t,e,n){let i=t;do{const r=i.prev,s=i.next.next;!sl(r,s)&&al(r,i,i.next,s)&&cl(r,s)&&cl(s,r)&&(e.push(r.i/n),e.push(i.i/n),e.push(s.i/n),dl(i),dl(i.next),i=t=s),i=i.next}while(i!==t);return jo(i)}function Zo(t,e,n,i,r,s){let a=t;do{let t=a.next.next;for(;t!==a.prev;){if(a.i!==t.i&&il(a,t)){let o=hl(a,t);return a=jo(a,a.next),o=jo(o,o.next),qo(a,e,n,i,r,s),void qo(o,e,n,i,r,s)}t=t.next}a=a.next}while(a!==t)}function Qo(t,e){return t.x-e.x}function Ko(t,e){if(e=function(t,e){let n=e;const i=t.x,r=t.y;let s,a=-1/0;do{if(r<=n.y&&r>=n.next.y&&n.next.y!==n.y){const t=n.x+(r-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=i&&t>a){if(a=t,t===i){if(r===n.y)return n;if(r===n.next.y)return n.next}s=n.x=n.x&&n.x>=l&&i!==n.x&&nl(rs.x||n.x===s.x&&$o(s,n)))&&(s=n,u=h)),n=n.next}while(n!==o);return s}(t,e),e){const n=hl(e,t);jo(e,e.next),jo(n,n.next)}}function $o(t,e){return rl(t.prev,t,e.prev)<0&&rl(e.next,t,t.next)<0}function tl(t,e,n,i,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*r)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function el(t){let e=t,n=t;do{(e.x=0&&(t-a)*(i-o)-(n-a)*(e-o)>=0&&(n-a)*(s-o)-(r-a)*(i-o)>=0}function il(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&al(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(cl(t,e)&&cl(e,t)&&function(t,e){let n=t,i=!1;const r=(t.x+e.x)/2,s=(t.y+e.y)/2;do{n.y>s!=n.next.y>s&&n.next.y!==n.y&&r<(n.next.x-n.x)*(s-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==t);return i}(t,e)&&(rl(t.prev,t,e.prev)||rl(t,e.prev,e))||sl(t,e)&&rl(t.prev,t,t.next)>0&&rl(e.prev,e,e.next)>0)}function rl(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function sl(t,e){return t.x===e.x&&t.y===e.y}function al(t,e,n,i){const r=ll(rl(t,e,n)),s=ll(rl(t,e,i)),a=ll(rl(n,i,t)),o=ll(rl(n,i,e));return r!==s&&a!==o||(!(0!==r||!ol(t,n,e))||(!(0!==s||!ol(t,i,e))||(!(0!==a||!ol(n,t,i))||!(0!==o||!ol(n,e,i)))))}function ol(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function ll(t){return t>0?1:t<0?-1:0}function cl(t,e){return rl(t.prev,t,t.next)<0?rl(t,e,t.next)>=0&&rl(t,t.prev,e)>=0:rl(t,e,t.prev)<0||rl(t,t.next,e)<0}function hl(t,e){const n=new pl(t.i,t.x,t.y),i=new pl(e.i,e.x,e.y),r=t.next,s=e.prev;return t.next=e,e.prev=t,n.next=r,r.prev=n,i.next=n,n.prev=i,s.next=i,i.prev=s,i}function ul(t,e,n,i){const r=new pl(t,e,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function dl(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function pl(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}class ml{static area(t){const e=t.length;let n=0;for(let i=e-1,r=0;r2&&t[e-1].equals(t[0])&&t.pop()}function gl(t,e){for(let n=0;nNumber.EPSILON){const u=Math.sqrt(h),d=Math.sqrt(l*l+c*c),p=e.x-o/u,m=e.y+a/u,f=((n.x-c/d-p)*c-(n.y+l/d-m)*l)/(a*c-o*l);i=p+a*f-t.x,r=m+o*f-t.y;const g=i*i+r*r;if(g<=2)return new yt(i,r);s=Math.sqrt(g/2)}else{let t=!1;a>Number.EPSILON?l>Number.EPSILON&&(t=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(t=!0):Math.sign(o)===Math.sign(c)&&(t=!0),t?(i=-o,r=a,s=Math.sqrt(h)):(i=a,r=o,s=Math.sqrt(h/2))}return new yt(i/s,r/s)}const P=[];for(let t=0,e=E.length,n=e-1,i=t+1;t=0;t--){const e=t/p,n=h*Math.cos(e*Math.PI/2),i=u*Math.sin(e*Math.PI/2)+d;for(let t=0,e=E.length;t=0;){const i=n;let r=n-1;r<0&&(r=t.length-1);for(let t=0,n=o+2*p;t0)&&d.push(e,r,l),(t!==n-1||o0!=t>0&&this.version++,this._sheen=t}get clearcoat(){return this._clearcoat}set clearcoat(t){this._clearcoat>0!=t>0&&this.version++,this._clearcoat=t}get transmission(){return this._transmission}set transmission(t){this._transmission>0!=t>0&&this.version++,this._transmission=t}copy(t){return super.copy(t),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=t.clearcoat,this.clearcoatMap=t.clearcoatMap,this.clearcoatRoughness=t.clearcoatRoughness,this.clearcoatRoughnessMap=t.clearcoatRoughnessMap,this.clearcoatNormalMap=t.clearcoatNormalMap,this.clearcoatNormalScale.copy(t.clearcoatNormalScale),this.ior=t.ior,this.sheen=t.sheen,this.sheenColor.copy(t.sheenColor),this.sheenColorMap=t.sheenColorMap,this.sheenRoughness=t.sheenRoughness,this.sheenRoughnessMap=t.sheenRoughnessMap,this.transmission=t.transmission,this.transmissionMap=t.transmissionMap,this.thickness=t.thickness,this.thicknessMap=t.thicknessMap,this.attenuationDistance=t.attenuationDistance,this.attenuationColor.copy(t.attenuationColor),this.specularIntensity=t.specularIntensity,this.specularIntensityMap=t.specularIntensityMap,this.specularColor.copy(t.specularColor),this.specularColorMap=t.specularColorMap,this}}Nl.prototype.isMeshPhysicalMaterial=!0;class zl extends Ze{constructor(t){super(),this.type="MeshPhongMaterial",this.color=new rn(16777215),this.specular=new rn(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.specular.copy(t.specular),this.shininess=t.shininess,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this}}zl.prototype.isMeshPhongMaterial=!0;class Bl extends Ze{constructor(t){super(),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new rn(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.gradientMap=t.gradientMap,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this}}Bl.prototype.isMeshToonMaterial=!0;class Fl extends Ze{constructor(t){super(),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.flatShading=t.flatShading,this}}Fl.prototype.isMeshNormalMaterial=!0;class Ol extends Ze{constructor(t){super(),this.type="MeshLambertMaterial",this.color=new rn(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this}}Ol.prototype.isMeshLambertMaterial=!0;class Ul extends Ze{constructor(t){super(),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new rn(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.defines={MATCAP:""},this.color.copy(t.color),this.matcap=t.matcap,this.map=t.map,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.flatShading=t.flatShading,this}}Ul.prototype.isMeshMatcapMaterial=!0;class Hl extends Ga{constructor(t){super(),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(t)}copy(t){return super.copy(t),this.scale=t.scale,this.dashSize=t.dashSize,this.gapSize=t.gapSize,this}}Hl.prototype.isLineDashedMaterial=!0;var Gl=Object.freeze({__proto__:null,ShadowMaterial:Il,SpriteMaterial:sa,RawShaderMaterial:wi,ShaderMaterial:Zn,PointsMaterial:Ka,MeshPhysicalMaterial:Nl,MeshStandardMaterial:Dl,MeshPhongMaterial:zl,MeshToonMaterial:Bl,MeshNormalMaterial:Fl,MeshLambertMaterial:Ol,MeshDepthMaterial:Us,MeshDistanceMaterial:Hs,MeshBasicMaterial:sn,MeshMatcapMaterial:Ul,LineDashedMaterial:Hl,LineBasicMaterial:Ga,Material:Ze});const kl={arraySlice:function(t,e,n){return kl.isTypedArray(t)?new t.constructor(t.subarray(e,void 0!==n?n:t.length)):t.slice(e,n)},convertArray:function(t,e,n){return!t||!n&&t.constructor===e?t:"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t)},isTypedArray:function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)},getKeyframeOrder:function(t){const e=t.length,n=new Array(e);for(let t=0;t!==e;++t)n[t]=t;return n.sort((function(e,n){return t[e]-t[n]})),n},sortedArray:function(t,e,n){const i=t.length,r=new t.constructor(i);for(let s=0,a=0;a!==i;++s){const i=n[s]*e;for(let n=0;n!==e;++n)r[a++]=t[i+n]}return r},flattenJSON:function(t,e,n,i){let r=1,s=t[0];for(;void 0!==s&&void 0===s[i];)s=t[r++];if(void 0===s)return;let a=s[i];if(void 0!==a)if(Array.isArray(a))do{a=s[i],void 0!==a&&(e.push(s.time),n.push.apply(n,a)),s=t[r++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[i],void 0!==a&&(e.push(s.time),a.toArray(n,n.length)),s=t[r++]}while(void 0!==s);else do{a=s[i],void 0!==a&&(e.push(s.time),n.push(a)),s=t[r++]}while(void 0!==s)},subclip:function(t,e,n,i,r=30){const s=t.clone();s.name=e;const a=[];for(let t=0;t=i)){l.push(e.times[t]);for(let n=0;ns.tracks[t].times[0]&&(o=s.tracks[t].times[0]);for(let t=0;t=i.times[u]){const t=u*l+o,e=t+l-o;d=kl.arraySlice(i.values,t,e)}else{const t=i.createInterpolant(),e=o,n=l-o;t.evaluate(s),d=kl.arraySlice(t.resultBuffer,e,n)}if("quaternion"===r){(new Nt).fromArray(d).normalize().conjugate().toArray(d)}const p=a.times.length;for(let t=0;t=r)break t;{const a=e[1];t=r)break e}s=n,n=0}}for(;n>>1;te;)--s;if(++s,0!==r||s!==i){r>=s&&(s=Math.max(s,1),r=s-1);const t=this.getValueSize();this.times=kl.arraySlice(n,r,s),this.values=kl.arraySlice(this.values,r*t,s*t)}return this}validate(){let t=!0;const e=this.getValueSize();e-Math.floor(e)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);const n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let s=null;for(let e=0;e!==r;e++){const i=n[e];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,e,i),t=!1;break}if(null!==s&&s>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,e,i,s),t=!1;break}s=i}if(void 0!==i&&kl.isTypedArray(i))for(let e=0,n=i.length;e!==n;++e){const n=i[e];if(isNaN(n)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,e,n),t=!1;break}}return t}optimize(){const t=kl.arraySlice(this.times),e=kl.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===G,r=t.length-1;let s=1;for(let a=1;a0){t[s]=t[r];for(let t=r*n,i=s*n,a=0;a!==n;++a)e[i+a]=e[t+a];++s}return s!==t.length?(this.times=kl.arraySlice(t,0,s),this.values=kl.arraySlice(e,0,s*n)):(this.times=t,this.values=e),this}clone(){const t=kl.arraySlice(this.times,0),e=kl.arraySlice(this.values,0),n=new(0,this.constructor)(this.name,t,e);return n.createInterpolant=this.createInterpolant,n}}Xl.prototype.TimeBufferType=Float32Array,Xl.prototype.ValueBufferType=Float32Array,Xl.prototype.DefaultInterpolation=H;class Yl extends Xl{}Yl.prototype.ValueTypeName="bool",Yl.prototype.ValueBufferType=Array,Yl.prototype.DefaultInterpolation=U,Yl.prototype.InterpolantFactoryMethodLinear=void 0,Yl.prototype.InterpolantFactoryMethodSmooth=void 0;class Jl extends Xl{}Jl.prototype.ValueTypeName="color";class Zl extends Xl{}Zl.prototype.ValueTypeName="number";class Ql extends Vl{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(n-e)/(i-e);let l=t*a;for(let t=l+a;l!==t;l+=4)Nt.slerpFlat(r,0,s,l-a,s,l,o);return r}}class Kl extends Xl{InterpolantFactoryMethodLinear(t){return new Ql(this.times,this.values,this.getValueSize(),t)}}Kl.prototype.ValueTypeName="quaternion",Kl.prototype.DefaultInterpolation=H,Kl.prototype.InterpolantFactoryMethodSmooth=void 0;class $l extends Xl{}$l.prototype.ValueTypeName="string",$l.prototype.ValueBufferType=Array,$l.prototype.DefaultInterpolation=U,$l.prototype.InterpolantFactoryMethodLinear=void 0,$l.prototype.InterpolantFactoryMethodSmooth=void 0;class tc extends Xl{}tc.prototype.ValueTypeName="vector";class ec{constructor(t,e=-1,n,i=2500){this.name=t,this.tracks=n,this.duration=e,this.blendMode=i,this.uuid=ht(),this.duration<0&&this.resetDuration()}static parse(t){const e=[],n=t.tracks,i=1/(t.fps||1);for(let t=0,r=n.length;t!==r;++t)e.push(nc(n[t]).scale(i));const r=new this(t.name,t.duration,e,t.blendMode);return r.uuid=t.uuid,r}static toJSON(t){const e=[],n=t.tracks,i={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode};for(let t=0,i=n.length;t!==i;++t)e.push(Xl.toJSON(n[t]));return i}static CreateFromMorphTargetSequence(t,e,n,i){const r=e.length,s=[];for(let t=0;t1){const t=s[1];let e=i[t];e||(i[t]=e=[]),e.push(n)}}const s=[];for(const t in i)s.push(this.CreateFromMorphTargetSequence(t,i[t],e,n));return s}static parseAnimation(t,e){if(!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(t,e,n,i,r){if(0!==n.length){const s=[],a=[];kl.flattenJSON(n,s,a,i),0!==s.length&&r.push(new t(e,s,a))}},i=[],r=t.name||"default",s=t.fps||30,a=t.blendMode;let o=t.length||-1;const l=t.hierarchy||[];for(let t=0;t{e&&e(r),this.manager.itemEnd(t)}),0),r;if(void 0!==oc[t])return void oc[t].push({onLoad:e,onProgress:n,onError:i});oc[t]=[],oc[t].push({onLoad:e,onProgress:n,onError:i});const s=new Request(t,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"});fetch(s).then((e=>{if(200===e.status||0===e.status){0===e.status&&console.warn("THREE.FileLoader: HTTP Status 0 received.");const n=oc[t],i=e.body.getReader(),r=e.headers.get("Content-Length"),s=r?parseInt(r):0,a=0!==s;let o=0;return new ReadableStream({start(t){!function e(){i.read().then((({done:i,value:r})=>{if(i)t.close();else{o+=r.byteLength;const i=new ProgressEvent("progress",{lengthComputable:a,loaded:o,total:s});for(let t=0,e=n.length;t{const e=new Response(t);switch(this.responseType){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then((t=>(new DOMParser).parseFromString(t,this.mimeType)));case"json":return e.json();default:return e.text()}})).then((e=>{ic.add(t,e);const n=oc[t];delete oc[t];for(let t=0,i=n.length;t{const n=oc[t];delete oc[t];for(let t=0,i=n.length;t0:i.vertexColors=t.vertexColors),void 0!==t.uniforms)for(const e in t.uniforms){const r=t.uniforms[e];switch(i.uniforms[e]={},r.type){case"t":i.uniforms[e].value=n(r.value);break;case"c":i.uniforms[e].value=(new rn).setHex(r.value);break;case"v2":i.uniforms[e].value=(new yt).fromArray(r.value);break;case"v3":i.uniforms[e].value=(new zt).fromArray(r.value);break;case"v4":i.uniforms[e].value=(new Ct).fromArray(r.value);break;case"m3":i.uniforms[e].value=(new xt).fromArray(r.value);break;case"m4":i.uniforms[e].value=(new de).fromArray(r.value);break;default:i.uniforms[e].value=r.value}}if(void 0!==t.defines&&(i.defines=t.defines),void 0!==t.vertexShader&&(i.vertexShader=t.vertexShader),void 0!==t.fragmentShader&&(i.fragmentShader=t.fragmentShader),void 0!==t.extensions)for(const e in t.extensions)i.extensions[e]=t.extensions[e];if(void 0!==t.shading&&(i.flatShading=1===t.shading),void 0!==t.size&&(i.size=t.size),void 0!==t.sizeAttenuation&&(i.sizeAttenuation=t.sizeAttenuation),void 0!==t.map&&(i.map=n(t.map)),void 0!==t.matcap&&(i.matcap=n(t.matcap)),void 0!==t.alphaMap&&(i.alphaMap=n(t.alphaMap)),void 0!==t.bumpMap&&(i.bumpMap=n(t.bumpMap)),void 0!==t.bumpScale&&(i.bumpScale=t.bumpScale),void 0!==t.normalMap&&(i.normalMap=n(t.normalMap)),void 0!==t.normalMapType&&(i.normalMapType=t.normalMapType),void 0!==t.normalScale){let e=t.normalScale;!1===Array.isArray(e)&&(e=[e,e]),i.normalScale=(new yt).fromArray(e)}return void 0!==t.displacementMap&&(i.displacementMap=n(t.displacementMap)),void 0!==t.displacementScale&&(i.displacementScale=t.displacementScale),void 0!==t.displacementBias&&(i.displacementBias=t.displacementBias),void 0!==t.roughnessMap&&(i.roughnessMap=n(t.roughnessMap)),void 0!==t.metalnessMap&&(i.metalnessMap=n(t.metalnessMap)),void 0!==t.emissiveMap&&(i.emissiveMap=n(t.emissiveMap)),void 0!==t.emissiveIntensity&&(i.emissiveIntensity=t.emissiveIntensity),void 0!==t.specularMap&&(i.specularMap=n(t.specularMap)),void 0!==t.specularIntensityMap&&(i.specularIntensityMap=n(t.specularIntensityMap)),void 0!==t.specularColorMap&&(i.specularColorMap=n(t.specularColorMap)),void 0!==t.envMap&&(i.envMap=n(t.envMap)),void 0!==t.envMapIntensity&&(i.envMapIntensity=t.envMapIntensity),void 0!==t.reflectivity&&(i.reflectivity=t.reflectivity),void 0!==t.refractionRatio&&(i.refractionRatio=t.refractionRatio),void 0!==t.lightMap&&(i.lightMap=n(t.lightMap)),void 0!==t.lightMapIntensity&&(i.lightMapIntensity=t.lightMapIntensity),void 0!==t.aoMap&&(i.aoMap=n(t.aoMap)),void 0!==t.aoMapIntensity&&(i.aoMapIntensity=t.aoMapIntensity),void 0!==t.gradientMap&&(i.gradientMap=n(t.gradientMap)),void 0!==t.clearcoatMap&&(i.clearcoatMap=n(t.clearcoatMap)),void 0!==t.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(t.clearcoatRoughnessMap)),void 0!==t.clearcoatNormalMap&&(i.clearcoatNormalMap=n(t.clearcoatNormalMap)),void 0!==t.clearcoatNormalScale&&(i.clearcoatNormalScale=(new yt).fromArray(t.clearcoatNormalScale)),void 0!==t.transmissionMap&&(i.transmissionMap=n(t.transmissionMap)),void 0!==t.thicknessMap&&(i.thicknessMap=n(t.thicknessMap)),void 0!==t.sheenColorMap&&(i.sheenColorMap=n(t.sheenColorMap)),void 0!==t.sheenRoughnessMap&&(i.sheenRoughnessMap=n(t.sheenRoughnessMap)),i}setTextures(t){return this.textures=t,this}}class Dc{static decodeText(t){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(t);let e="";for(let n=0,i=t.length;n0){this.source.connect(this.filters[0]);for(let t=1,e=this.filters.length;t0){this.source.disconnect(this.filters[0]);for(let t=1,e=this.filters.length;t0&&this._mixBufferRegionAdditive(n,i,this._addIndex*e,1,e);for(let t=e,r=e+e;t!==r;++t)if(n[t]!==n[t+e]){a.setValue(n,i);break}}saveOriginalState(){const t=this.binding,e=this.buffer,n=this.valueSize,i=n*this._origIndex;t.getValue(e,i);for(let t=n,r=i;t!==r;++t)e[t]=e[i+t%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const t=3*this.valueSize;this.binding.setValue(this.buffer,t)}_setAdditiveIdentityNumeric(){const t=this._addIndex*this.valueSize,e=t+this.valueSize;for(let n=t;n=.5)for(let i=0;i!==r;++i)t[e+i]=t[n+i]}_slerp(t,e,n,i){Nt.slerpFlat(t,e,t,e,t,n,i)}_slerpAdditive(t,e,n,i,r){const s=this._workIndex*r;Nt.multiplyQuaternionsFlat(t,s,t,e,t,n),Nt.slerpFlat(t,e,t,e,t,s,i)}_lerp(t,e,n,i,r){const s=1-i;for(let a=0;a!==r;++a){const r=e+a;t[r]=t[r]*s+t[n+a]*i}}_lerpAdditive(t,e,n,i,r){for(let s=0;s!==r;++s){const r=e+s;t[r]=t[r]+t[n+s]*i}}}const ah="\\[\\]\\.:\\/",oh=new RegExp("[\\[\\]\\.:\\/]","g"),lh="[^\\[\\]\\.:\\/]",ch="[^"+ah.replace("\\.","")+"]",hh=/((?:WC+[\/:])*)/.source.replace("WC",lh),uh=/(WCOD+)?/.source.replace("WCOD",ch),dh=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",lh),ph=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",lh),mh=new RegExp("^"+hh+uh+dh+ph+"$"),fh=["material","materials","bones"];class gh{constructor(t,e,n){this.path=e,this.parsedPath=n||gh.parseTrackName(e),this.node=gh.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new gh.Composite(t,e,n):new gh(t,e,n)}static sanitizeNodeName(t){return t.replace(/\s/g,"_").replace(oh,"")}static parseTrackName(t){const e=mh.exec(t);if(!e)throw new Error("PropertyBinding: Cannot parse trackName: "+t);const n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){const t=n.nodeName.substring(i+1);-1!==fh.indexOf(t)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=t)}if(null===n.propertyName||0===n.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(!e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){const n=t.skeleton.getBoneByName(e);if(void 0!==n)return n}if(t.children){const n=function(t){for(let i=0;i=r){const s=r++,c=t[s];e[c.uuid]=l,t[l]=c,e[o]=s,t[s]=a;for(let t=0,e=i;t!==e;++t){const e=n[t],i=e[s],r=e[l];e[l]=i,e[s]=r}}}this.nCachedObjects_=r}uncache(){const t=this._objects,e=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_,s=t.length;for(let a=0,o=arguments.length;a!==o;++a){const o=arguments[a].uuid,l=e[o];if(void 0!==l)if(delete e[o],l0&&(e[a.uuid]=l),t[l]=a,t.pop();for(let t=0,e=i;t!==e;++t){const e=n[t];e[l]=e[r],e.pop()}}}this.nCachedObjects_=r}subscribe_(t,e){const n=this._bindingsIndicesByPath;let i=n[t];const r=this._bindings;if(void 0!==i)return r[i];const s=this._paths,a=this._parsedPaths,o=this._objects,l=o.length,c=this.nCachedObjects_,h=new Array(l);i=r.length,n[t]=i,s.push(t),a.push(e),r.push(h);for(let n=c,i=o.length;n!==i;++n){const i=o[n];h[n]=new gh(i,t,e)}return h}unsubscribe_(t){const e=this._bindingsIndicesByPath,n=e[t];if(void 0!==n){const i=this._paths,r=this._parsedPaths,s=this._bindings,a=s.length-1,o=s[a];e[t[a]]=n,s[n]=o,s.pop(),r[n]=r[a],r.pop(),i[n]=i[a],i.pop()}}}vh.prototype.isAnimationObjectGroup=!0;class yh{constructor(t,e,n=null,i=e.blendMode){this._mixer=t,this._clip=e,this._localRoot=n,this.blendMode=i;const r=e.tracks,s=r.length,a=new Array(s),o={endingStart:k,endingEnd:k};for(let t=0;t!==s;++t){const e=r[t].createInterpolant(null);a[t]=e,e.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=new Array(s),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(t){return this._startTime=t,this}setLoop(t,e){return this.loop=t,this.repetitions=e,this}setEffectiveWeight(t){return this.weight=t,this._effectiveWeight=this.enabled?t:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(t){return this._scheduleFading(t,0,1)}fadeOut(t){return this._scheduleFading(t,1,0)}crossFadeFrom(t,e,n){if(t.fadeOut(e),this.fadeIn(e),n){const n=this._clip.duration,i=t._clip.duration,r=i/n,s=n/i;t.warp(1,r,e),this.warp(s,1,e)}return this}crossFadeTo(t,e,n){return t.crossFadeFrom(this,e,n)}stopFading(){const t=this._weightInterpolant;return null!==t&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this}setEffectiveTimeScale(t){return this.timeScale=t,this._effectiveTimeScale=this.paused?0:t,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(t){return this.timeScale=this._clip.duration/t,this.stopWarping()}syncWith(t){return this.time=t.time,this.timeScale=t.timeScale,this.stopWarping()}halt(t){return this.warp(this._effectiveTimeScale,0,t)}warp(t,e,n){const i=this._mixer,r=i.time,s=this.timeScale;let a=this._timeScaleInterpolant;null===a&&(a=i._lendControlInterpolant(),this._timeScaleInterpolant=a);const o=a.parameterPositions,l=a.sampleValues;return o[0]=r,o[1]=r+n,l[0]=t/s,l[1]=e/s,this}stopWarping(){const t=this._timeScaleInterpolant;return null!==t&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(t,e,n,i){if(!this.enabled)return void this._updateWeight(t);const r=this._startTime;if(null!==r){const i=(t-r)*n;if(i<0||0===n)return;this._startTime=null,e=n*i}e*=this._updateTimeScale(t);const s=this._updateTime(e),a=this._updateWeight(t);if(a>0){const t=this._interpolants,e=this._propertyBindings;if(this.blendMode===q)for(let n=0,i=t.length;n!==i;++n)t[n].evaluate(s),e[n].accumulateAdditive(a);else for(let n=0,r=t.length;n!==r;++n)t[n].evaluate(s),e[n].accumulate(i,a)}}_updateWeight(t){let e=0;if(this.enabled){e=this.weight;const n=this._weightInterpolant;if(null!==n){const i=n.evaluate(t)[0];e*=i,t>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=e,e}_updateTimeScale(t){let e=0;if(!this.paused){e=this.timeScale;const n=this._timeScaleInterpolant;if(null!==n){e*=n.evaluate(t)[0],t>n.parameterPositions[1]&&(this.stopWarping(),0===e?this.paused=!0:this.timeScale=e)}}return this._effectiveTimeScale=e,e}_updateTime(t){const e=this._clip.duration,n=this.loop;let i=this.time+t,r=this._loopCount;const s=2202===n;if(0===t)return-1===r?i:s&&1==(1&r)?e-i:i;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));t:{if(i>=e)i=e;else{if(!(i<0)){this.time=i;break t}i=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:t<0?-1:1})}}else{if(-1===r&&(t>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),i>=e||i<0){const n=Math.floor(i/e);i-=e*n,r+=Math.abs(n);const a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=t>0?e:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:t>0?1:-1});else{if(1===a){const e=t<0;this._setEndings(e,!e,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:n})}}else this.time=i;if(s&&1==(1&r))return e-i}return i}_setEndings(t,e,n){const i=this._interpolantSettings;n?(i.endingStart=V,i.endingEnd=V):(i.endingStart=t?this.zeroSlopeAtStart?V:k:W,i.endingEnd=e?this.zeroSlopeAtEnd?V:k:W)}_scheduleFading(t,e,n){const i=this._mixer,r=i.time;let s=this._weightInterpolant;null===s&&(s=i._lendControlInterpolant(),this._weightInterpolant=s);const a=s.parameterPositions,o=s.sampleValues;return a[0]=r,o[0]=e,a[1]=r+t,o[1]=n,this}}class xh extends rt{constructor(t){super(),this._root=t,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(t,e){const n=t._localRoot||this._root,i=t._clip.tracks,r=i.length,s=t._propertyBindings,a=t._interpolants,o=n.uuid,l=this._bindingsByRootAndName;let c=l[o];void 0===c&&(c={},l[o]=c);for(let t=0;t!==r;++t){const r=i[t],l=r.name;let h=c[l];if(void 0!==h)s[t]=h;else{if(h=s[t],void 0!==h){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,o,l));continue}const i=e&&e._propertyBindings[t].binding.parsedPath;h=new sh(gh.create(n,l,i),r.ValueTypeName,r.getValueSize()),++h.referenceCount,this._addInactiveBinding(h,o,l),s[t]=h}a[t].resultBuffer=h.buffer}}_activateAction(t){if(!this._isActiveAction(t)){if(null===t._cacheIndex){const e=(t._localRoot||this._root).uuid,n=t._clip.uuid,i=this._actionsByClip[n];this._bindAction(t,i&&i.knownActions[0]),this._addInactiveAction(t,n,e)}const e=t._propertyBindings;for(let t=0,n=e.length;t!==n;++t){const n=e[t];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(t)}}_deactivateAction(t){if(this._isActiveAction(t)){const e=t._propertyBindings;for(let t=0,n=e.length;t!==n;++t){const n=e[t];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(t)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const t=this;this.stats={actions:{get total(){return t._actions.length},get inUse(){return t._nActiveActions}},bindings:{get total(){return t._bindings.length},get inUse(){return t._nActiveBindings}},controlInterpolants:{get total(){return t._controlInterpolants.length},get inUse(){return t._nActiveControlInterpolants}}}}_isActiveAction(t){const e=t._cacheIndex;return null!==e&&e=0;--e)t[e].stop();return this}update(t){t*=this.timeScale;const e=this._actions,n=this._nActiveActions,i=this.time+=t,r=Math.sign(t),s=this._accuIndex^=1;for(let a=0;a!==n;++a){e[a]._update(i,t,r,s)}const a=this._bindings,o=this._nActiveBindings;for(let t=0;t!==o;++t)a[t].apply(s);return this}setTime(t){this.time=0;for(let t=0;tthis.max.x||t.ythis.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y)}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return Th.copy(t).clamp(this.min,this.max).sub(t).length()}intersect(t){return this.min.max(t.min),this.max.min(t.max),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}Eh.prototype.isBox2=!0;const Ah=new zt,Lh=new zt;class Rh{constructor(t=new zt,e=new zt){this.start=t,this.end=e}set(t,e){return this.start.copy(t),this.end.copy(e),this}copy(t){return this.start.copy(t.start),this.end.copy(t.end),this}getCenter(t){return t.addVectors(this.start,this.end).multiplyScalar(.5)}delta(t){return t.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(t,e){return this.delta(e).multiplyScalar(t).add(this.start)}closestPointToPointParameter(t,e){Ah.subVectors(t,this.start),Lh.subVectors(this.end,this.start);const n=Lh.dot(Lh);let i=Lh.dot(Ah)/n;return e&&(i=ut(i,0,1)),i}closestPointToPoint(t,e,n){const i=this.closestPointToPointParameter(t,e);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(t){return this.start.applyMatrix4(t),this.end.applyMatrix4(t),this}equals(t){return t.start.equals(this.start)&&t.end.equals(this.end)}clone(){return(new this.constructor).copy(this)}}const Ch=new zt;const Ph=new zt,Ih=new de,Dh=new de;class Nh extends Za{constructor(t){const e=zh(t),n=new En,i=[],r=[],s=new rn(0,0,1),a=new rn(0,1,0);for(let t=0;t.99999)this.quaternion.set(0,0,0,1);else if(t.y<-.99999)this.quaternion.set(1,0,0,0);else{Yh.set(t.z,0,-t.x).normalize();const e=Math.acos(t.y);this.quaternion.setFromAxisAngle(Yh,e)}}setLength(t,e=.2*t,n=.2*e){this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(n,e,n),this.cone.position.y=t,this.cone.updateMatrix()}setColor(t){this.line.material.color.set(t),this.cone.material.color.set(t)}copy(t){return super.copy(t,!1),this.line.copy(t.line),this.cone.copy(t.cone),this}},t.Audio=$c,t.AudioAnalyser=rh,t.AudioContext=Gc,t.AudioListener=class extends Fe{constructor(){super(),this.type="AudioListener",this.context=Gc.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Xc}getInput(){return this.gain}removeFilter(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(t){return null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=t,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(t){return this.gain.gain.setTargetAtTime(t,this.context.currentTime,.01),this}updateMatrixWorld(t){super.updateMatrixWorld(t);const e=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Jc,Zc,Qc),Kc.set(0,0,-1).applyQuaternion(Zc),e.positionX){const t=this.context.currentTime+this.timeDelta;e.positionX.linearRampToValueAtTime(Jc.x,t),e.positionY.linearRampToValueAtTime(Jc.y,t),e.positionZ.linearRampToValueAtTime(Jc.z,t),e.forwardX.linearRampToValueAtTime(Kc.x,t),e.forwardY.linearRampToValueAtTime(Kc.y,t),e.forwardZ.linearRampToValueAtTime(Kc.z,t),e.upX.linearRampToValueAtTime(n.x,t),e.upY.linearRampToValueAtTime(n.y,t),e.upZ.linearRampToValueAtTime(n.z,t)}else e.setPosition(Jc.x,Jc.y,Jc.z),e.setOrientation(Kc.x,Kc.y,Kc.z,n.x,n.y,n.z)}},t.AudioLoader=kc,t.AxesHelper=Qh,t.AxisHelper=function(t){return console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),new Qh(t)},t.BackSide=1,t.BasicDepthPacking=3200,t.BasicShadowMap=0,t.BinaryTextureLoader=function(t){return console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),new uc(t)},t.Bone=Ca,t.BooleanKeyframeTrack=Yl,t.BoundingBoxHelper=function(t,e){return console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),new Xh(t,e)},t.Box2=Eh,t.Box3=Ot,t.Box3Helper=class extends Za{constructor(t,e=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new En;i.setIndex(new ln(n,1)),i.setAttribute("position",new vn([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),super(i,new Ga({color:e,toneMapped:!1})),this.box=t,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(t){const e=this.box;e.isEmpty()||(e.getCenter(this.position),e.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(t))}},t.BoxBufferGeometry=qn,t.BoxGeometry=qn,t.BoxHelper=Xh,t.BufferAttribute=ln,t.BufferGeometry=En,t.BufferGeometryLoader=zc,t.ByteType=1010,t.Cache=ic,t.Camera=Qn,t.CameraHelper=class extends Za{constructor(t){const e=new En,n=new Ga({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],s={},a=new rn(16755200),o=new rn(16711680),l=new rn(43775),c=new rn(16777215),h=new rn(3355443);function u(t,e,n){d(t,n),d(e,n)}function d(t,e){i.push(0,0,0),r.push(e.r,e.g,e.b),void 0===s[t]&&(s[t]=[]),s[t].push(i.length/3-1)}u("n1","n2",a),u("n2","n4",a),u("n4","n3",a),u("n3","n1",a),u("f1","f2",a),u("f2","f4",a),u("f4","f3",a),u("f3","f1",a),u("n1","f1",a),u("n2","f2",a),u("n3","f3",a),u("n4","f4",a),u("p","n1",o),u("p","n2",o),u("p","n3",o),u("p","n4",o),u("u1","u2",l),u("u2","u3",l),u("u3","u1",l),u("c","t",c),u("p","c",h),u("cn1","cn2",h),u("cn3","cn4",h),u("cf1","cf2",h),u("cf3","cf4",h),e.setAttribute("position",new vn(i,3)),e.setAttribute("color",new vn(r,3)),super(e,n),this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){const t=this.geometry,e=this.pointMap;Wh.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),jh("c",e,t,Wh,0,0,-1),jh("t",e,t,Wh,0,0,1),jh("n1",e,t,Wh,-1,-1,-1),jh("n2",e,t,Wh,1,-1,-1),jh("n3",e,t,Wh,-1,1,-1),jh("n4",e,t,Wh,1,1,-1),jh("f1",e,t,Wh,-1,-1,1),jh("f2",e,t,Wh,1,-1,1),jh("f3",e,t,Wh,-1,1,1),jh("f4",e,t,Wh,1,1,1),jh("u1",e,t,Wh,.7,1.1,-1),jh("u2",e,t,Wh,-.7,1.1,-1),jh("u3",e,t,Wh,0,2,-1),jh("cf1",e,t,Wh,-1,0,1),jh("cf2",e,t,Wh,1,0,1),jh("cf3",e,t,Wh,0,-1,1),jh("cf4",e,t,Wh,0,1,1),jh("cn1",e,t,Wh,-1,0,-1),jh("cn2",e,t,Wh,1,0,-1),jh("cn3",e,t,Wh,0,-1,-1),jh("cn4",e,t,Wh,0,1,-1),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}},t.CanvasRenderer=function(){console.error("THREE.CanvasRenderer has been removed")},t.CanvasTexture=oo,t.CatmullRomCurve3=Lo,t.CineonToneMapping=3,t.CircleBufferGeometry=co,t.CircleGeometry=co,t.ClampToEdgeWrapping=u,t.Clock=Xc,t.Color=rn,t.ColorKeyframeTrack=Jl,t.CompressedTexture=ao,t.CompressedTextureLoader=class extends ac{constructor(t){super(t)}load(t,e,n,i){const r=this,s=[],a=new ao,o=new lc(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(r.withCredentials);let l=0;function c(c){o.load(t[c],(function(t){const n=r.parse(t,!0);s[c]={width:n.width,height:n.height,format:n.format,mipmaps:n.mipmaps},l+=1,6===l&&(1===n.mipmapCount&&(a.minFilter=g),a.image=s,a.format=n.format,a.needsUpdate=!0,e&&e(a))}),n,i)}if(Array.isArray(t))for(let e=0,n=t.length;e65504&&(console.warn("THREE.DataUtils.toHalfFloat(): value exceeds 65504."),t=65504),Kh[0]=t;const e=$h[0];let n=e>>16&32768,i=e>>12&2047;const r=e>>23&255;return r<103?n:r>142?(n|=31744,n|=(255==r?0:1)&&8388607&e,n):r<113?(i|=2048,n|=(i>>114-r)+(i>>113-r&1),n):(n|=r-112<<10|i>>1,n+=1&i,n)}},t.DecrementStencilOp=7683,t.DecrementWrapStencilOp=34056,t.DefaultLoadingManager=sc,t.DepthFormat=A,t.DepthStencilFormat=L,t.DepthTexture=lo,t.DirectionalLight=Ac,t.DirectionalLightHelper=class extends Fe{constructor(t,e,n){super(),this.light=t,this.light.updateMatrixWorld(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,void 0===e&&(e=1);let i=new En;i.setAttribute("position",new vn([-e,e,0,e,e,0,e,-e,0,-e,-e,0,-e,e,0],3));const r=new Ga({fog:!1,toneMapped:!1});this.lightPlane=new Xa(i,r),this.add(this.lightPlane),i=new En,i.setAttribute("position",new vn([0,0,0,0,0,1],3)),this.targetLine=new Xa(i,r),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){Hh.setFromMatrixPosition(this.light.matrixWorld),Gh.setFromMatrixPosition(this.light.target.matrixWorld),kh.subVectors(Gh,Hh),this.lightPlane.lookAt(Gh),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(Gh),this.targetLine.scale.z=kh.length()}},t.DiscreteInterpolant=ql,t.DodecahedronBufferGeometry=mo,t.DodecahedronGeometry=mo,t.DoubleSide=2,t.DstAlphaFactor=206,t.DstColorFactor=208,t.DynamicBufferAttribute=function(t,e){return console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead."),new ln(t,e).setUsage(nt)},t.DynamicCopyUsage=35050,t.DynamicDrawUsage=nt,t.DynamicReadUsage=35049,t.EdgesGeometry=xo,t.EdgesHelper=function(t,e){return console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),new Za(new xo(t.geometry),new Ga({color:void 0!==e?e:16777215}))},t.EllipseCurve=Mo,t.EqualDepth=4,t.EqualStencilFunc=514,t.EquirectangularReflectionMapping=a,t.EquirectangularRefractionMapping=o,t.Euler=be,t.EventDispatcher=rt,t.ExtrudeBufferGeometry=vl,t.ExtrudeGeometry=vl,t.FaceColors=1,t.FileLoader=lc,t.FlatShading=1,t.Float16BufferAttribute=gn,t.Float32Attribute=function(t,e){return console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),new vn(t,e)},t.Float32BufferAttribute=vn,t.Float64Attribute=function(t,e){return console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),new yn(t,e)},t.Float64BufferAttribute=yn,t.FloatType=b,t.Fog=ta,t.FogExp2=$s,t.Font=function(){console.error("THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js")},t.FontLoader=function(){console.error("THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js")},t.FrontSide=0,t.Frustum=ci,t.GLBufferAttribute=bh,t.GLSL1="100",t.GLSL3=it,t.GammaEncoding=J,t.GreaterDepth=6,t.GreaterEqualDepth=5,t.GreaterEqualStencilFunc=518,t.GreaterStencilFunc=516,t.GridHelper=Uh,t.Group=qs,t.HalfFloatType=w,t.HemisphereLight=mc,t.HemisphereLightHelper=class extends Fe{constructor(t,e,n){super(),this.light=t,this.light.updateMatrixWorld(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.color=n;const i=new Ml(e);i.rotateY(.5*Math.PI),this.material=new sn({wireframe:!0,fog:!1,toneMapped:!1}),void 0===this.color&&(this.material.vertexColors=!0);const r=i.getAttribute("position"),s=new Float32Array(3*r.count);i.setAttribute("color",new ln(s,3)),this.add(new Wn(i,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){const t=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{const e=t.geometry.getAttribute("color");Fh.copy(this.light.color),Oh.copy(this.light.groundColor);for(let t=0,n=e.count;t0){const n=new rc(e);r=new cc(n),r.setCrossOrigin(this.crossOrigin);for(let e=0,n=t.length;e0){i=new cc(this.manager),i.setCrossOrigin(this.crossOrigin);for(let e=0,i=t.length;eNumber.EPSILON){if(l<0&&(n=e[s],o=-o,a=e[r],l=-l),t.ya.y)continue;if(t.y===n.y){if(t.x===n.x)return!0}else{const e=l*(t.x-n.x)-o*(t.y-n.y);if(0===e)return!0;if(e<0)continue;i=!i}}else{if(t.y!==n.y)continue;if(a.x<=t.x&&t.x<=n.x||n.x<=t.x&&t.x<=a.x)return!0}}return i}const r=ml.isClockWise,s=this.subPaths;if(0===s.length)return[];if(!0===e)return n(s);let a,o,l;const c=[];if(1===s.length)return o=s[0],l=new ko,l.curves=o.curves,c.push(l),c;let h=!r(s[0].getPoints());h=t?!h:h;const u=[],d=[];let p,m,f=[],g=0;d[g]=void 0,f[g]=[];for(let e=0,n=s.length;e1){let t=!1;const e=[];for(let t=0,e=d.length;t0&&(t||(f=u))}for(let t=0,e=d.length;t(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function i(t,e){return null==t&&(t=0),null==e&&(e=1),Math.floor(t+Math.random()*(e-t+1))}t.r(e),t.d(e,{default:()=>c}),Number.prototype.clamp=function(t,e){return Math.min(Math.max(this,t),e)};function s(t){for(;t.children&&t.children.length>0;)s(t.children[0]),t.remove(t.children[0]);t.geometry&&t.geometry.dispose(),t.material&&(Object.keys(t.material).forEach((e=>{t.material[e]&&null!==t.material[e]&&"function"==typeof t.material[e].dispose&&t.material[e].dispose()})),t.material.dispose())}const o="object"==typeof window;let n=o&&window.THREE||{};o&&!window.VANTA&&(window.VANTA={});const r=o&&window.VANTA||{};r.register=(t,e)=>r[t]=t=>new e(t),r.version="0.5.24";const h=function(){return Array.prototype.unshift.call(arguments,"[VANTA]"),console.error.apply(this,arguments)};r.VantaBase=class{constructor(t={}){if(!o)return!1;r.current=this,this.windowMouseMoveWrapper=this.windowMouseMoveWrapper.bind(this),this.windowTouchWrapper=this.windowTouchWrapper.bind(this),this.windowGyroWrapper=this.windowGyroWrapper.bind(this),this.resize=this.resize.bind(this),this.animationLoop=this.animationLoop.bind(this),this.restart=this.restart.bind(this);const e="function"==typeof this.getDefaultOptions?this.getDefaultOptions():this.defaultOptions;if(this.options=Object.assign({mouseControls:!0,touchControls:!0,gyroControls:!1,minHeight:200,minWidth:200,scale:1,scaleMobile:1},e),(t instanceof HTMLElement||"string"==typeof t)&&(t={el:t}),Object.assign(this.options,t),this.options.THREE&&(n=this.options.THREE),this.el=this.options.el,null==this.el)h('Instance needs "el" param!');else if(!(this.options.el instanceof HTMLElement)){const t=this.el;if(this.el=(i=t,document.querySelector(i)),!this.el)return void h("Cannot find element",t)}var i,s;this.prepareEl(),this.initThree(),this.setSize();try{this.init()}catch(t){return h("Init error",t),this.renderer&&this.renderer.domElement&&this.el.removeChild(this.renderer.domElement),void(this.options.backgroundColor&&(console.log("[VANTA] Falling back to backgroundColor"),this.el.style.background=(s=this.options.backgroundColor,"number"==typeof s?"#"+("00000"+s.toString(16)).slice(-6):s)))}this.initMouse(),this.resize(),this.animationLoop();const a=window.addEventListener;a("resize",this.resize),window.requestAnimationFrame(this.resize),this.options.mouseControls&&(a("scroll",this.windowMouseMoveWrapper),a("mousemove",this.windowMouseMoveWrapper)),this.options.touchControls&&(a("touchstart",this.windowTouchWrapper),a("touchmove",this.windowTouchWrapper)),this.options.gyroControls&&a("deviceorientation",this.windowGyroWrapper)}setOptions(t={}){Object.assign(this.options,t),this.triggerMouseMove()}prepareEl(){let t,e;if("undefined"!=typeof Node&&Node.TEXT_NODE)for(t=0;t=0&&s>=0&&i<=e.width&&s<=e.height&&(this.mouseX=i,this.mouseY=s,this.options.mouseEase||this.triggerMouseMove(i,s))}windowTouchWrapper(t){const e=this.getCanvasRect();if(!e)return!1;if(1===t.touches.length){const i=t.touches[0].clientX-e.left,s=t.touches[0].clientY-e.top;i>=0&&s>=0&&i<=e.width&&s<=e.height&&(this.mouseX=i,this.mouseY=s,this.options.mouseEase||this.triggerMouseMove(i,s))}}windowGyroWrapper(t){const e=this.getCanvasRect();if(!e)return!1;const i=Math.round(2*t.alpha)-e.left,s=Math.round(2*t.beta)-e.top;i>=0&&s>=0&&i<=e.width&&s<=e.height&&(this.mouseX=i,this.mouseY=s,this.options.mouseEase||this.triggerMouseMove(i,s))}triggerMouseMove(t,e){void 0===t&&void 0===e&&(this.options.mouseEase?(t=this.mouseEaseX,e=this.mouseEaseY):(t=this.mouseX,e=this.mouseY)),this.uniforms&&(this.uniforms.iMouse.value.x=t/this.scale,this.uniforms.iMouse.value.y=e/this.scale);const i=t/this.width,s=e/this.height;"function"==typeof this.onMouseMove&&this.onMouseMove(i,s)}setSize(){this.scale||(this.scale=1),"undefined"!=typeof navigator&&(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<600)&&this.options.scaleMobile?this.scale=this.options.scaleMobile:this.options.scale&&(this.scale=this.options.scale),this.width=Math.max(this.el.offsetWidth,this.options.minWidth),this.height=Math.max(this.el.offsetHeight,this.options.minHeight)}initMouse(){(!this.mouseX&&!this.mouseY||this.mouseX===this.options.minWidth/2&&this.mouseY===this.options.minHeight/2)&&(this.mouseX=this.width/2,this.mouseY=this.height/2,this.triggerMouseMove(this.mouseX,this.mouseY))}resize(){this.setSize(),this.camera&&(this.camera.aspect=this.width/this.height,"function"==typeof this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix()),this.renderer&&(this.renderer.setSize(this.width,this.height),this.renderer.setPixelRatio(window.devicePixelRatio/this.scale)),"function"==typeof this.onResize&&this.onResize()}isOnScreen(){const t=this.el.offsetHeight,e=this.el.getBoundingClientRect(),i=window.pageYOffset||(document.documentElement||document.body.parentNode||document.body).scrollTop,s=e.top+i;return s-window.innerHeight<=i&&i<=s+t}animationLoop(){this.t||(this.t=0),this.t2||(this.t2=0);const t=performance.now();if(this.prevNow){let e=(t-this.prevNow)/(1e3/60);e=Math.max(.2,Math.min(e,5)),this.t+=e,this.t2+=(this.options.speed||1)*e,this.uniforms&&(this.uniforms.iTime.value=.016667*this.t2)}return this.prevNow=t,this.options.mouseEase&&(this.mouseEaseX=this.mouseEaseX||this.mouseX||0,this.mouseEaseY=this.mouseEaseY||this.mouseY||0,Math.abs(this.mouseEaseX-this.mouseX)+Math.abs(this.mouseEaseY-this.mouseY)>.1&&(this.mouseEaseX+=.05*(this.mouseX-this.mouseEaseX),this.mouseEaseY+=.05*(this.mouseY-this.mouseEaseY),this.triggerMouseMove(this.mouseEaseX,this.mouseEaseY))),(this.isOnScreen()||this.options.forceAnimate)&&("function"==typeof this.onUpdate&&this.onUpdate(),this.scene&&this.camera&&(this.renderer.render(this.scene,this.camera),this.renderer.setClearColor(this.options.backgroundColor,this.options.backgroundAlpha)),this.fps&&this.fps.update&&this.fps.update(),"function"==typeof this.afterRender&&this.afterRender()),this.req=window.requestAnimationFrame(this.animationLoop)}restart(){if(this.scene)for(;this.scene.children.length;)this.scene.remove(this.scene.children[0]);"function"==typeof this.onRestart&&this.onRestart(),this.init()}init(){"function"==typeof this.onInit&&this.onInit()}destroy(){"function"==typeof this.onDestroy&&this.onDestroy();const t=window.removeEventListener;t("touchstart",this.windowTouchWrapper),t("touchmove",this.windowTouchWrapper),t("scroll",this.windowMouseMoveWrapper),t("mousemove",this.windowMouseMoveWrapper),t("deviceorientation",this.windowGyroWrapper),t("resize",this.resize),window.cancelAnimationFrame(this.req);const e=this.scene;e&&e.children&&s(e),this.renderer&&(this.renderer.domElement&&this.el.removeChild(this.renderer.domElement),this.renderer=null,this.scene=null),r.current===this&&(r.current=null)}};const a=r.VantaBase;let p="object"==typeof window&&window.THREE;class l extends a{static initClass(){this.prototype.ww=100,this.prototype.hh=80,this.prototype.waveNoise=4}constructor(t){p=t.THREE||p,super(t)}getMaterial(){const t={color:this.options.color,shininess:this.options.shininess,flatShading:!0,side:p.DoubleSide};return new p.MeshPhongMaterial(t)}onInit(){let t,e;const s=this.getMaterial(),o=new p.BufferGeometry;this.gg=[];const n=[];for(t=0;t<=this.ww;t++)for(this.gg[t]=[],e=0;e<=this.hh;e++){const i=n.length,s=new p.Vector3(18*(t-.5*this.ww),(null==(r=0)&&(r=0),null==(h=this.waveNoise)&&(h=1),r+Math.random()*(h-r)-10),18*(.5*this.hh-e));n.push(s),this.gg[t][e]=i}var r,h;o.setFromPoints(n);const a=[];for(t=1;t<=this.ww;t++)for(e=1;e<=this.hh;e++){let s,o;const n=this.gg[t][e],r=this.gg[t][e-1],h=this.gg[t-1][e],p=this.gg[t-1][e-1];i(0,1)?(s=[p,r,h],o=[r,h,n]):(s=[p,r,n],o=[p,h,n]),a.push(...s,...o)}o.setIndex(a),this.plane=new p.Mesh(o,s),this.scene.add(this.plane);const l=new p.AmbientLight(16777215,.9);this.scene.add(l);const c=new p.PointLight(16777215,.9);c.position.set(-100,250,-100),this.scene.add(c),this.camera=new p.PerspectiveCamera(35,this.width/this.height,50,1e4),this.cameraPosition=new p.Vector3(240,200,390),this.cameraTarget=new p.Vector3(140,-30,190),this.camera.position.copy(this.cameraPosition),this.scene.add(this.camera)}onUpdate(){let t;this.plane.material.color.set(this.options.color),this.plane.material.shininess=this.options.shininess,this.camera.ox=this.cameraPosition.x/this.options.zoom,this.camera.oy=this.cameraPosition.y/this.options.zoom,this.camera.oz=this.cameraPosition.z/this.options.zoom,null!=this.controls&&this.controls.update();const e=this.camera;Math.abs(e.tx-e.position.x)>.01&&(t=e.tx-e.position.x,e.position.x+=.02*t),Math.abs(e.ty-e.position.y)>.01&&(t=e.ty-e.position.y,e.position.y+=.02*t),Math.abs(e.tz-e.position.z)>.01&&(t=e.tz-e.position.z,e.position.z+=.02*t),e.lookAt(this.cameraTarget),this.oy=this.oy||{};for(let t=0;t