diff --git a/app/page.tsx b/app/page.tsx index 51f450e9..46ca25c9 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { useState, useEffect } from "react"; +import { useState, useEffect, Suspense } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import { Canvas } from "@react-three/fiber"; import { EffectComposer, N8AO } from "@react-three/postprocessing"; @@ -14,7 +14,7 @@ import { ObserverCamera } from "@/src/components/ObserverCamera"; // stuff too, e.g. missions, terrains, and more. This client is used for those. const queryClient = new QueryClient(); -export default function HomePage() { +function MapInspector() { const searchParams = useSearchParams(); const router = useRouter(); @@ -51,3 +51,11 @@ export default function HomePage() { ); } + +export default function HomePage() { + return ( + + + + ); +} diff --git a/docs/404.html b/docs/404.html index f4e3e45b..b8af6c31 100644 --- a/docs/404.html +++ b/docs/404.html @@ -1 +1 @@ -404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file diff --git a/docs/404/index.html b/docs/404/index.html index f4e3e45b..b8af6c31 100644 --- a/docs/404/index.html +++ b/docs/404/index.html @@ -1 +1 @@ -404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file diff --git a/docs/_next/static/chunks/1329d575-16915d95397758f8.js b/docs/_next/static/chunks/1329d575-16915d95397758f8.js new file mode 100644 index 00000000..ed06a400 --- /dev/null +++ b/docs/_next/static/chunks/1329d575-16915d95397758f8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[413],{7719:(e,n,t)=>{var l=t(5704);e.exports=function(e){function n(e,n,t,l){return new lT(e,n,t,l)}function r(){}function a(e){var n="https://react.dev/errors/"+e;if(1)":-1r||s[l]!==c[r]){var f="\n"+s[l].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=l&&0<=r);break}}}finally{ri=!1,Error.prepareStackTrace=t}return(t=e?e.displayName||e.name:"")?o(t):""}function c(e){try{var n="";do n+=function(e){switch(e.tag){case 26:case 27:case 5:return o(e.type);case 16:return o("Lazy");case 13:return o("Suspense");case 19:return o("SuspenseList");case 0:case 15:return s(e.type,!1);case 11:return s(e.type.render,!1);case 1:return s(e.type,!0);default:return""}}(e),e=e.return;while(e);return n}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function f(e){var n=e,t=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do 0!=(4098&(n=e).flags)&&(t=n.return),e=n.return;while(e)}return 3===n.tag?t:null}function d(e){if(f(e)!==e)throw Error(a(188))}function p(e){var n=e.alternate;if(!n){if(null===(n=f(e)))throw Error(a(188));return n!==e?null:e}for(var t=e,l=n;;){var r=t.return;if(null===r)break;var u=r.alternate;if(null===u){if(null!==(l=r.return)){t=l;continue}break}if(r.child===u.child){for(u=r.child;u;){if(u===t)return d(r),e;if(u===l)return d(r),n;u=u.sibling}throw Error(a(188))}if(t.return!==l.return)t=r,l=u;else{for(var i=!1,o=r.child;o;){if(o===t){i=!0,t=r,l=u;break}if(o===l){i=!0,l=r,t=u;break}o=o.sibling}if(!i){for(o=u.child;o;){if(o===t){i=!0,t=u,l=r;break}if(o===l){i=!0,l=u,t=r;break}o=o.sibling}if(!i)throw Error(a(189))}}if(t.alternate!==l)throw Error(a(190))}if(3!==t.tag)throw Error(a(188));return t.stateNode.current===t?e:n}function m(e){return{current:e}}function h(e){0>a4||(e.current=a2[a4],a2[a4]=null,a4--)}function g(e,n){a2[++a4]=e.current,e.current=n}function b(e){var n=42&e;if(0!==n)return n;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:return 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 4194176&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function v(e,n){var t=e.pendingLanes;if(0===t)return 0;var l=0,r=e.suspendedLanes,a=e.pingedLanes,u=e.warmLanes;e=0!==e.finishedLanes;var i=0x7ffffff&t;return 0!==i?0!=(t=i&~r)?l=b(t):0!=(a&=i)?l=b(a):e||0!=(u=i&~u)&&(l=b(u)):0!=(i=t&~r)?l=b(i):0!==a?l=b(a):e||0!=(u=t&~u)&&(l=b(u)),0===l?0:0!==n&&n!==l&&0==(n&r)&&((r=l&-l)>=(u=n&-n)||32===r&&0!=(4194176&u))?n:l}function y(e,n){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)}function S(){var e=a7;return 0==(4194176&(a7<<=1))&&(a7=128),e}function k(){var e=a9;return 0==(0x3c00000&(a9<<=1))&&(a9=4194304),e}function z(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function x(e,n){e.pendingLanes|=n,0x10000000!==n&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function w(e,n,t){e.pendingLanes|=n,e.suspendedLanes&=~n;var l=31-a6(n);e.entangledLanes|=n,e.entanglements[l]=0x40000000|e.entanglements[l]|4194218&t}function N(e,n){var t=e.entangledLanes|=n;for(e=e.entanglements;t;){var l=31-a6(t),r=1<>=u,r-=u,uz=1<<32-a6(n)+r|t<d?(p=f,f=null):p=f.sibling;var b=h(n,f,u[d],i);if(null===b){null===f&&(f=p);break}e&&f&&null===b.alternate&&t(n,f),a=o(b,a,d),null===c?s=b:c.sibling=b,c=b,f=p}if(d===u.length)return l(n,f),uL&&_(n,d),s;if(null===f){for(;dp?(b=d,d=null):b=d.sibling;var y=h(n,d,v.value,s);if(null===y){null===d&&(d=b);break}e&&d&&null===y.alternate&&t(n,d),u=o(y,u,p),null===f?c=y:f.sibling=y,f=y,d=b}if(v.done)return l(n,d),uL&&_(n,p),c;if(null===d){for(;!v.done;p++,v=i.next())null!==(v=m(n,v.value,s))&&(u=o(v,u,p),null===f?c=v:f.sibling=v,f=v);return uL&&_(n,p),c}for(d=r(d);!v.done;p++,v=i.next())null!==(v=g(d,n,p,v.value,s))&&(e&&null!==v.alternate&&d.delete(null===v.key?p:v.key),u=o(v,u,p),null===f?c=v:f.sibling=v,f=v);return e&&d.forEach(function(e){return t(n,e)}),uL&&_(n,p),c}(c,f,d=b.call(d),p)}if("function"==typeof d.then)return n(c,f,ev(d),p);if(d.$$typeof===l3)return n(c,f,ts(c,d),p);eS(c,d)}return"string"==typeof d&&""!==d||"number"==typeof d||"bigint"==typeof d?(d=""+d,null!==f&&6===f.tag?(l(c,f.sibling),(p=i(f,d)).return=c):(l(c,f),(p=lH(d,c.mode,p)).return=c),s(c=p)):l(c,f)}(c,f,d,p);return u0=null,b}catch(e){if(e===uK)throw e;var v=n(29,e,null,c.mode);return v.lanes=p,v.return=c,v}finally{}}}function ex(e,n){g(u6,e=i3),g(u3,n),i3=e|n.baseLanes}function ew(){g(u6,i3),g(u3,u3.current)}function eN(){i3=u6.current,h(u3),h(u6)}function eP(e){var n=e.alternate;g(u7,1&u7.current),g(u5,e),null===u8&&(null===n||null!==u3.current?u8=e:null!==n.memoizedState&&(u8=e))}function eC(e){if(22===e.tag){if(g(u7,u7.current),g(u5,e),null===u8){var n=e.alternate;null!==n&&null!==n.memoizedState&&(u8=e)}}else eE(e)}function eE(){g(u7,u7.current),g(u5,u5.current)}function e_(e){h(u5),u8===e&&(u8=null),h(u7)}function eL(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedState;if(null!==t&&(null===(t=t.dehydrated)||ad(t)||ap(t)))return n}else if(19===n.tag&&void 0!==n.memoizedProps.revealOrder){if(0!=(128&n.flags))return n}else if(null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}function eT(){throw Error(a(321))}function eR(e,n){if(null===n)return!1;for(var t=0;ta?a:8);var u=ru.T,i={};ru.T=i,n_(e,!1,n,t);try{var o=r(),s=ru.S;if(null!==s&&s(i,o),null!==o&&"object"==typeof o&&"function"==typeof o.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},o.then(function(){f.status="fulfilled",f.value=l;for(var e=0;e";case iA:return":has("+(t8(e)||"")+")";case iV:return'[role="'+e.value+'"]';case iO:return'"'+e.value+'"';case iB:return'[data-testname="'+e.value+'"]';default:throw Error(a(365))}}function t7(e,n){var t=[];e=[e,0];for(var l=0;loa&&(n.flags|=128,l=!0,tw(r,!1),n.lanes=4194304)}else{if(!l)if(null!==(e=eL(u))){if(n.flags|=128,l=!0,e=e.updateQueue,n.updateQueue=e,tx(n,e),tw(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!uL)return tN(n),null}else 2*ur()-r.renderingStartTime>oa&&0x20000000!==t&&(n.flags|=128,l=!0,tw(r,!1),n.lanes=4194304);r.isBackwards?(u.sibling=n.child,n.child=u):(null!==(e=r.last)?e.sibling=u:n.child=u,r.last=u)}if(null!==r.tail)return n=r.tail,r.rendering=n,r.tail=n.sibling,r.renderingStartTime=ur(),n.sibling=null,e=u7.current,g(u7,l?1&e|2:1&e),n;return tN(n),null;case 22:case 23:return e_(n),eN(),l=null!==n.memoizedState,null!==e?null!==e.memoizedState!==l&&(n.flags|=8192):l&&(n.flags|=8192),l?0!=(0x20000000&t)&&0==(128&n.flags)&&(tN(n),6&n.subtreeFlags&&(n.flags|=8192)):tN(n),null!==(t=n.updateQueue)&&tx(n,t.retryQueue),t=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(t=e.memoizedState.cachePool.pool),l=null,null!==n.memoizedState&&null!==n.memoizedState.cachePool&&(l=n.memoizedState.cachePool.pool),l!==t&&(n.flags|=2048),null!==e&&h(iL),null;case 24:return t=null,null!==e&&(t=e.memoizedState.cache),n.memoizedState.cache!==t&&(n.flags|=2048),tt(iE),tN(n),null;case 25:return null}throw Error(a(156,n.tag))}(n.alternate,n,i3);if(null!==t){iJ=t;return}if(null!==(n=n.sibling)){iJ=n;return}iJ=n=e}while(null!==n);0===i6&&(i6=5)}function lS(e,n){do{var t=function(e,n){switch(R(n),n.tag){case 1:return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return tt(iE),F(),0!=(65536&(e=n.flags))&&0==(128&e)?(n.flags=-65537&e|128,n):null;case 26:case 27:case 5:return Q(n),null;case 13:if(e_(n),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(a(340));$()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return h(u7),null;case 4:return F(),null;case 10:return tt(n.type),null;case 22:case 23:return e_(n),eN(),null!==e&&h(iL),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 24:return tt(iE),null;default:return null}}(e.alternate,e);if(null!==t){t.flags&=32767,iJ=t;return}if(null!==(t=e.return)&&(t.flags|=32768,t.subtreeFlags=0,t.deletions=null),!n&&null!==(e=e.sibling)){iJ=e;return}iJ=e=t}while(null!==e);i6=6,iJ=null}function lk(e,n,t,l,r,u,i,o,s,c){var f=ru.T,d=rR();try{rT(2),ru.T=null,function(e,n,t,l,r,u,i,o){do lx();while(null!==os);if(0!=(6&iY))throw Error(a(327));var s,c,f=e.finishedWork;if(l=e.finishedLanes,null!==f){if(e.finishedWork=null,e.finishedLanes=0,f===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0,e.cancelPendingCommit=null;var d=f.lanes|f.childLanes;!function(e,n,t,l,r,a){var u=e.pendingLanes;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=t,e.entangledLanes&=t,e.errorRecoveryDisabledLanes&=t,e.shellSuspendCounter=0;var i=e.entanglements,o=e.expirationTimes,s=e.hiddenUpdates;for(t=u&~t;0t?32:t;t=ru.T;var r=rR();try{if(rT(l),ru.T=null,null===os)var u=!1;else{l=od,od=null;var i=os,o=oc;if(os=null,oc=0,0!=(6&iY))throw Error(a(331));var s=iY;if(iY|=4,t4(i.current),tJ(i,i.current,o,l),iY=s,K(0,!1),ud&&"function"==typeof ud.onPostCommitFiberRoot)try{ud.onPostCommitFiberRoot(uf,i)}catch(e){}u=!0}return u}finally{rT(r),ru.T=t,lz(e,n)}}return!1}function lw(e,n,t){n=E(t,n),n=nj(e.stateNode,n,2),null!==(e=eu(e,n,2))&&(x(e,2),Y(e))}function lN(e,n,t){if(3===e.tag)lw(e,e,t);else for(;null!==n;){if(3===n.tag){lw(n,e,t);break}if(1===n.tag){var l=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof l.componentDidCatch&&(null===oi||!oi.has(l))){e=E(t,e),null!==(l=eu(n,t=nM(2),2))&&(n$(t,l,n,e),x(l,2),Y(l));break}}n=n.return}}function lP(e,n,t){var l=e.pingCache;if(null===l){l=e.pingCache=new iG;var r=new Set;l.set(n,r)}else void 0===(r=l.get(n))&&(r=new Set,l.set(n,r));r.has(t)||(i4=!0,r.add(t),e=lC.bind(null,e,n,t),n.then(e,e))}function lC(e,n,t){var l=e.pingCache;null!==l&&l.delete(n),e.pingedLanes|=e.suspendedLanes&t,e.warmLanes&=~t,iK===e&&(iX&t)===t&&(4===i6||3===i6&&(0x3c00000&iX)===iX&&300>ur()-or?0==(2&iY)&&ls(e,0):i7|=t,oe===iX&&(oe=0)),Y(e)}function lE(e,n){0===n&&(n=k()),null!==(e=O(e,n))&&(x(e,n),Y(e))}function l_(e){var n=e.memoizedState,t=0;null!==n&&(t=n.retryLane),lE(e,t)}function lL(e,n){var t=0;switch(e.tag){case 13:var l=e.stateNode,r=e.memoizedState;null!==r&&(t=r.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(a(314))}null!==l&&l.delete(n),lE(e,t)}function lT(e,n,t,l){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function lR(e){return!(!(e=e.prototype)||!e.isReactComponent)}function lI(e,t){var l=e.alternate;return null===l?((l=n(e.tag,t,e.key,e.mode)).elementType=e.elementType,l.type=e.type,l.stateNode=e.stateNode,l.alternate=e,e.alternate=l):(l.pendingProps=t,l.type=e.type,l.flags=0,l.subtreeFlags=0,l.deletions=null),l.flags=0x1e00000&e.flags,l.childLanes=e.childLanes,l.lanes=e.lanes,l.child=e.child,l.memoizedProps=e.memoizedProps,l.memoizedState=e.memoizedState,l.updateQueue=e.updateQueue,t=e.dependencies,l.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},l.sibling=e.sibling,l.index=e.index,l.ref=e.ref,l.refCleanup=e.refCleanup,l}function lF(e,n){e.flags&=0x1e00002;var t=e.alternate;return null===t?(e.childLanes=0,e.lanes=n,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=t.childLanes,e.lanes=t.lanes,e.child=t.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=t.memoizedProps,e.memoizedState=t.memoizedState,e.updateQueue=t.updateQueue,e.type=t.type,e.dependencies=null===(n=t.dependencies)?null:{lanes:n.lanes,firstContext:n.firstContext}),e}function lU(e,t,l,r,u,i){var o=0;if(r=e,"function"==typeof e)lR(e)&&(o=1);else if("string"==typeof e)o=aQ&&aK?aD(e,l,uw.current)?26:a1(e)?27:5:aQ?aD(e,l,uw.current)?26:5:aK&&a1(e)?27:5;else e:switch(e){case lZ:return lQ(l.children,u,i,t);case l0:o=8,u|=24;break;case l1:return(e=n(12,l,t,2|u)).elementType=l1,e.lanes=i,e;case l5:return(e=n(13,l,t,u)).elementType=l5,e.lanes=i,e;case l8:return(e=n(19,l,t,u)).elementType=l8,e.lanes=i,e;case re:return lD(l,u,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case l2:case l3:o=10;break e;case l4:o=9;break e;case l6:o=11;break e;case l7:o=14;break e;case l9:o=16,r=null;break e}o=29,l=Error(a(130,null===e?"null":typeof e,"")),r=null}return(t=n(o,l,t,u)).elementType=e,t.type=r,t.lanes=i,t}function lQ(e,t,l,r){return(e=n(7,e,r,t)).lanes=l,e}function lD(e,t,l,r){(e=n(22,e,r,t)).elementType=re,e.lanes=l;var u={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var e=u._current;if(null===e)throw Error(a(456));if(0==(2&u._pendingVisibility)){var n=O(e,2);null!==n&&(u._pendingVisibility|=2,lt(n,e,2))}},attach:function(){var e=u._current;if(null===e)throw Error(a(456));if(0!=(2&u._pendingVisibility)){var n=O(e,2);null!==n&&(u._pendingVisibility&=-3,lt(n,e,2))}}};return e.stateNode=u,e}function lH(e,t,l){return(e=n(6,e,null,t)).lanes=l,e}function lj(e,t,l){return(t=n(4,null!==e.children?e.children:[],e.key,t)).lanes=l,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function lM(e,n,t,l,r,a,u,i){this.tag=1,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=rw,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=z(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=z(0),this.hiddenUpdates=z(null),this.identifierPrefix=l,this.onUncaughtError=r,this.onCaughtError=a,this.onRecoverableError=u,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=i,this.incompleteTransitions=new Map}function l$(e,t,l,r,a,u,i,o,s,c,f,d){return e=new lM(e,t,l,i,o,s,c,d),t=1,!0===u&&(t|=24),u=n(3,null,null,t),e.current=u,u.stateNode=e,t=tf(),t.refCount++,e.pooledCache=t,t.refCount++,u.memoizedState={element:r,isDehydrated:l,cache:t},el(u),e}function lW(e){var n=e._reactInternals;if(void 0===n){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,e=Object.keys(e).join(",")))}return null===(e=null!==(e=p(n))?function e(n){var t=n.tag;if(5===t||26===t||27===t||6===t)return n;for(n=n.child;null!==n;){if(null!==(t=e(n)))return t;n=n.sibling}return null}(e):null)?null:rd(e.stateNode)}function lA(e,n,t,l,r,a){r=r?a3:a3,null===l.context?l.context=r:l.pendingContext=r,(l=ea(n)).payload={element:t},null!==(a=void 0===a?null:a)&&(l.callback=a),null!==(t=eu(e,l,n))&&(lt(t,e,n),ei(t,e,n))}function lV(e,n){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var t=e.retryLane;e.retryLane=0!==t&&t>>=0)?32:31-(a5(e)/a8|0)|0},a5=Math.log,a8=Math.LN2,a7=128,a9=4194304,ue=lG.unstable_scheduleCallback,un=lG.unstable_cancelCallback,ut=lG.unstable_shouldYield,ul=lG.unstable_requestPaint,ur=lG.unstable_now,ua=lG.unstable_ImmediatePriority,uu=lG.unstable_UserBlockingPriority,ui=lG.unstable_NormalPriority,uo=lG.unstable_IdlePriority,us=lG.log,uc=lG.unstable_setDisableYieldValue,uf=null,ud=null,up="function"==typeof Object.is?Object.is:function(e,n){return e===n&&(0!==e||1/e==1/n)||e!=e&&n!=n},um=new WeakMap,uh=[],ug=0,ub=null,uv=0,uy=[],uS=0,uk=null,uz=1,ux="",uw=m(null),uN=m(null),uP=m(null),uC=m(null),uE=null,u_=null,uL=!1,uT=null,uR=!1,uI=Error(a(519)),uF=[],uU=0,uQ=0,uD=null,uH=null,uj=!1,uM=!1,u$=!1,uW=0,uA=null,uV=0,uB=0,uO=null,uq=!1,uG=!1,uY=Object.prototype.hasOwnProperty,uK=Error(a(460)),uJ=Error(a(474)),uX={then:function(){}},uZ=null,u0=null,u1=0,u2=ez(!0),u4=ez(!1),u3=m(null),u6=m(0),u5=m(null),u8=null,u7=m(0),u9=0,ie=null,it=null,il=null,ir=!1,ia=!1,iu=!1,ii=0,io=0,is=null,ic=0,id=function(){return{lastEffect:null,events:null,stores:null,memoCache:null}},ip={readContext:to,use:eA,useCallback:eT,useContext:eT,useEffect:eT,useImperativeHandle:eT,useLayoutEffect:eT,useInsertionEffect:eT,useMemo:eT,useReducer:eT,useRef:eT,useState:eT,useDebugValue:eT,useDeferredValue:eT,useTransition:eT,useSyncExternalStore:eT,useId:eT};ip.useCacheRefresh=eT,ip.useMemoCache=eT,ip.useHostTransitionStatus=eT,ip.useFormState=eT,ip.useActionState=eT,ip.useOptimistic=eT;var im={readContext:to,use:eA,useCallback:function(e,n){return eM().memoizedState=[e,void 0===n?null:n],e},useContext:to,useEffect:ns,useImperativeHandle:function(e,n,t){t=null!=t?t.concat([e]):null,ni(4194308,4,np.bind(null,n,e),t)},useLayoutEffect:function(e,n){return ni(4194308,4,e,n)},useInsertionEffect:function(e,n){ni(4,2,e,n)},useMemo:function(e,n){var t=eM();n=void 0===n?null:n;var l=e();if(iu){C(!0);try{e()}finally{C(!1)}}return t.memoizedState=[l,n],l},useReducer:function(e,n,t){var l=eM();if(void 0!==t){var r=t(n);if(iu){C(!0);try{t(n)}finally{C(!1)}}}else r=n;return l.memoizedState=l.baseState=r,l.queue=e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},e=e.dispatch=nP.bind(null,ie,e),[l.memoizedState,e]},useRef:function(e){return eM().memoizedState={current:e}},useState:function(e){var n=(e=e1(e)).queue,t=nC.bind(null,ie,n);return n.dispatch=t,[e.memoizedState,t]},useDebugValue:nh,useDeferredValue:function(e,n){return nv(eM(),e,n)},useTransition:function(){var e=e1(!1);return e=nS.bind(null,ie,e.queue,!0,!1),eM().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,n,t){var l=ie,r=eM();if(uL){if(void 0===t)throw Error(a(407));t=t()}else{if(t=n(),null===iK)throw Error(a(349));0!=(60&iX)||eK(l,n,t)}r.memoizedState=t;var u={value:t,getSnapshot:n};return r.queue=u,ns(eX.bind(null,l,u,e),[e]),l.flags|=2048,na(9,eJ.bind(null,l,u,t,n),{destroy:void 0},null),t},useId:function(){var e=eM(),n=iK.identifierPrefix;if(uL){var t=ux,l=uz;n=":"+n+"R"+(t=(l&~(1<<32-a6(l)-1)).toString(32)+t),0<(t=ii++)&&(n+="H"+t.toString(32)),n+=":"}else n=":"+n+"r"+(t=ic++).toString(32)+":";return e.memoizedState=n},useCacheRefresh:function(){return eM().memoizedState=nN.bind(null,ie)}};im.useMemoCache=eV,im.useHostTransitionStatus=nz,im.useFormState=ne,im.useActionState=ne,im.useOptimistic=function(e){var n=eM();n.memoizedState=n.baseState=e;var t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return n.queue=t,n=n_.bind(null,ie,!0,t),t.dispatch=n,[e,n]};var ih={readContext:to,use:eA,useCallback:ng,useContext:to,useEffect:nc,useImperativeHandle:nm,useInsertionEffect:nf,useLayoutEffect:nd,useMemo:nb,useReducer:eO,useRef:nu,useState:function(){return eO(eB)},useDebugValue:nh,useDeferredValue:function(e,n){return ny(e$(),it.memoizedState,e,n)},useTransition:function(){var e=eO(eB)[0],n=e$().memoizedState;return["boolean"==typeof e?e:eW(e),n]},useSyncExternalStore:eY,useId:nx};ih.useCacheRefresh=nw,ih.useMemoCache=eV,ih.useHostTransitionStatus=nz,ih.useFormState=nn,ih.useActionState=nn,ih.useOptimistic=function(e,n){return e2(e$(),it,e,n)};var ig={readContext:to,use:eA,useCallback:ng,useContext:to,useEffect:nc,useImperativeHandle:nm,useInsertionEffect:nf,useLayoutEffect:nd,useMemo:nb,useReducer:eG,useRef:nu,useState:function(){return eG(eB)},useDebugValue:nh,useDeferredValue:function(e,n){var t=e$();return null===it?nv(t,e,n):ny(t,it.memoizedState,e,n)},useTransition:function(){var e=eG(eB)[0],n=e$().memoizedState;return["boolean"==typeof e?e:eW(e),n]},useSyncExternalStore:eY,useId:nx};ig.useCacheRefresh=nw,ig.useMemoCache=eV,ig.useHostTransitionStatus=nz,ig.useFormState=nr,ig.useActionState=nr,ig.useOptimistic=function(e,n){var t=e$();return null!==it?e2(t,it,e,n):(t.baseState=e,[e,t.queue.dispatch])};var ib={isMounted:function(e){return!!(e=e._reactInternals)&&f(e)===e},enqueueSetState:function(e,n,t){e=e._reactInternals;var l=le(),r=ea(l);r.payload=n,null!=t&&(r.callback=t),null!==(n=eu(e,r,l))&&(lt(n,e,l),ei(n,e,l))},enqueueReplaceState:function(e,n,t){e=e._reactInternals;var l=le(),r=ea(l);r.tag=1,r.payload=n,null!=t&&(r.callback=t),null!==(n=eu(e,r,l))&&(lt(n,e,l),ei(n,e,l))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var t=le(),l=ea(t);l.tag=2,null!=n&&(l.callback=n),null!==(n=eu(e,l,t))&&(lt(n,e,t),ei(n,e,t))}},iv="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(n))return}else if("object"==typeof l&&"function"==typeof l.emit)return void l.emit("uncaughtException",e);console.error(e)},iy=Error(a(461)),iS=!1,ik={dehydrated:null,treeContext:null,retryLane:0},iz=m(null),ix=null,iw=null,iN="undefined"!=typeof AbortController?AbortController:function(){var e=[],n=this.signal={aborted:!1,addEventListener:function(n,t){e.push(t)}};this.abort=function(){n.aborted=!0,e.forEach(function(e){return e()})}},iP=lG.unstable_scheduleCallback,iC=lG.unstable_NormalPriority,iE={$$typeof:l3,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0},i_=ru.S;ru.S=function(e,n){"object"==typeof n&&null!==n&&"function"==typeof n.then&&function(e,n){if(null===uA){var t=uA=[];uV=0,uB=en(),uO={status:"pending",value:void 0,then:function(e){t.push(e)}}}uV++,n.then(et,et)}(0,n),null!==i_&&i_(e,n)};var iL=m(null),iT=!1,iR=!1,iI=!1,iF="function"==typeof WeakSet?WeakSet:Set,iU=null,iQ=!1,iD=null,iH=!1,ij=null,iM=8192,i$={getCacheForType:function(e){var n=to(iE),t=n.data.get(e);return void 0===t&&(t=e(),n.data.set(e,t)),t}},iW=0,iA=1,iV=2,iB=3,iO=4;if("function"==typeof Symbol&&Symbol.for){var iq=Symbol.for;iW=iq("selector.component"),iA=iq("selector.has_pseudo_class"),iV=iq("selector.role"),iB=iq("selector.test_id"),iO=iq("selector.text")}var iG="function"==typeof WeakMap?WeakMap:Map,iY=0,iK=null,iJ=null,iX=0,iZ=0,i0=null,i1=!1,i2=!1,i4=!1,i3=0,i6=0,i5=0,i8=0,i7=0,i9=0,oe=0,on=null,ot=null,ol=!1,or=0,oa=1/0,ou=null,oi=null,oo=!1,os=null,oc=0,of=0,od=null,op=0,om=null;return lO.attemptContinuousHydration=function(e){if(13===e.tag){var n=O(e,0x4000000);null!==n&<(n,e,0x4000000),lB(e,0x4000000)}},lO.attemptHydrationAtCurrentPriority=function(e){if(13===e.tag){var n=le(),t=O(e,n);null!==t&<(t,e,n),lB(e,n)}},lO.attemptSynchronousHydration=function(e){switch(e.tag){case 3:if((e=e.stateNode).current.memoizedState.isDehydrated){var n=b(e.pendingLanes);if(0!==n){for(e.pendingLanes|=2,e.entangledLanes|=2;n;){var t=1<<31-a6(n);e.entanglements[1]|=t,n&=~t}Y(e),0==(6&iY)&&(oa=ur()+500,K(0,!1))}}break;case 13:null!==(n=O(e,2))&<(n,e,2),li(),lB(e,2)}},lO.batchedUpdates=function(e,n){return e(n)},lO.createComponentSelector=function(e){return{$$typeof:iW,value:e}},lO.createContainer=function(e,n,t,l,r,a,u,i,o,s){return l$(e,n,!1,null,t,l,a,u,i,o,s,null)},lO.createHasPseudoClassSelector=function(e){return{$$typeof:iA,value:e}},lO.createHydrationContainer=function(e,n,t,l,r,a,u,i,o,s,c,f,d){var p;return(e=l$(t,l,!0,e,r,a,i,o,s,c,f,d)).context=(p=null,a3),t=e.current,(r=ea(l=le())).callback=null!=n?n:null,eu(t,r,l),e.current.lanes=l,x(e,l),Y(e),e},lO.createPortal=function(e,n,t){var l=3=c&&u>=d&&r<=f&&i<=p){e.splice(n,1);break}if(l!==c||t.width!==s.width||pi){if(!(u!==d||t.height!==s.height||fr)){c>l&&(s.width+=c-l,s.x=l),fu&&(s.height+=d-u,s.y=u),pt&&(t=o)),o ")+"\n\nNo matching component was found for:\n "+e.join(" > ")}return null},lO.getPublicRootInstance=function(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 27:case 5:return rd(e.child.stateNode);default:return e.child.stateNode}},lO.injectIntoDevTools=function(){var e={bundleType:0,version:rs,rendererPackageName:rc,currentDispatcherRef:ru,findFiberByHostInstance:r_,reconcilerVersion:"19.0.0"};if(null!==rf&&(e.rendererConfig=rf),"undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)e=!1;else{var n=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(n.isDisabled||!n.supportsFiber)e=!0;else{try{uf=n.inject(e),ud=n}catch(e){}e=!!n.checkDCE}}return e},lO.isAlreadyRendering=function(){return!1},lO.observeVisibleRects=function(e,n,t,l){if(!rO)throw Error(a(363));var r=rZ(e=t9(e,n),t,l).disconnect;return{disconnect:function(){r()}}},lO.shouldError=function(){return null},lO.shouldSuspend=function(){return!1},lO.startHostTransition=function(e,n,t,l){if(5!==e.tag)throw Error(a(476));var u=nk(e).queue;nS(e,u,n,r$,null===t?r:function(){var n=nk(e).next.queue;return nE(e,n,{},le()),t(l)})},lO.updateContainer=function(e,n,t,l){var r=n.current,a=le();return lA(r,a,e,n,t,l),a},lO.updateContainerSync=function(e,n,t,l){return 0===n.tag&&lx(),lA(n.current,2,e,n,t,l),2},lO},e.exports.default=e.exports,Object.defineProperty(e.exports,"__esModule",{value:!0})}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/236-2b3f004cb23a69d4.js b/docs/_next/static/chunks/236-2b3f004cb23a69d4.js new file mode 100644 index 00000000..11de8bc5 --- /dev/null +++ b/docs/_next/static/chunks/236-2b3f004cb23a69d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[236],{61:(e,t,r)=>{r.d(t,{Y:()=>a,z:()=>l});var n=r(2115),s=r(490);let i=e=>{let t=(0,s.y)(e),r=e=>(function(e,t=e=>e){let r=n.useSyncExternalStore(e.subscribe,n.useCallback(()=>t(e.getState()),[e,t]),n.useCallback(()=>t(e.getInitialState()),[e,t]));return n.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},o=n.createContext(null);function a({map:e,children:t,onChange:r,domElement:s}){let a=e.map(e=>e.name+e.keys).join("-"),l=n.useMemo(()=>{let t,r;return t=()=>e.reduce((e,t)=>({...e,[t.name]:!1}),{}),(r=(e,r,n)=>{let s=n.subscribe;return n.subscribe=(e,t,r)=>{let i=e;if(t){let s=(null==r?void 0:r.equalityFn)||Object.is,o=e(n.getState());i=r=>{let n=e(r);if(!s(o,n)){let e=o;t(o=n,e)}},(null==r?void 0:r.fireImmediately)&&t(o,o)}return s(i)},t(e,r,n)})?i(r):i},[a]),u=n.useMemo(()=>[l.subscribe,l.getState,l],[a]),c=l.setState;return n.useEffect(()=>{let t=e.map(({name:e,keys:t,up:n})=>({keys:t,up:n,fn:t=>{c({[e]:t}),r&&r(e,t,u[1]())}})).reduce((e,{keys:t,fn:r,up:n=!0})=>(t.forEach(t=>e[t]={fn:r,pressed:!1,up:n}),e),{}),n=({key:e,code:r})=>{let n=t[e]||t[r];if(!n)return;let{fn:s,pressed:i,up:o}=n;n.pressed=!0,(o||!i)&&s(!0)},i=({key:e,code:r})=>{let n=t[e]||t[r];if(!n)return;let{fn:s,up:i}=n;n.pressed=!1,i&&s(!1)},o=s||window;return o.addEventListener("keydown",n,{passive:!0}),o.addEventListener("keyup",i,{passive:!0}),()=>{o.removeEventListener("keydown",n),o.removeEventListener("keyup",i)}},[s,a]),n.createElement(o.Provider,{value:u,children:t})}function l(e){let[t,r,s]=n.useContext(o);return e?s(e):[t,r]}},63:(e,t,r)=>{var n=r(7260);r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},99:(e,t,r)=>{let n,s,i,o,a;r.d(t,{B:()=>H,C:()=>ee,D:()=>et,E:()=>w,G:()=>es,a:()=>D,b:()=>G,c:()=>eF,d:()=>eR,e:()=>eu,f:()=>eU,i:()=>R,s:()=>X,u:()=>T});var l=r(2115),u=r.t(l,2),c=r(8870),h=r(5339),d=r(7548),A=r(8828),f=r(490);let{useSyncExternalStoreWithSelector:p}=A,B=(e,t)=>{let r=(0,f.y)(e),n=(e,n=t)=>(function(e,t=e=>e,r){let n=p(e.subscribe,e.getState,e.getInitialState,t,r);return l.useDebugValue(n),n})(r,e,n);return Object.assign(n,r),n},C=[];function m(e,t,r=(e,t)=>e===t){if(e===t)return!0;if(!e||!t)return!1;let n=e.length;if(t.length!==n)return!1;for(let s=0;s0&&(s.timeout&&clearTimeout(s.timeout),s.timeout=setTimeout(s.remove,n.lifespan)),s.response;if(!r)throw s.promise}let s={keys:t,equal:n.equal,remove:()=>{let e=C.indexOf(s);-1!==e&&C.splice(e,1)},promise:("object"==typeof e&&"function"==typeof e.then?e:e(...t)).then(e=>{s.response=e,n.lifespan&&n.lifespan>0&&(s.timeout=setTimeout(s.remove,n.lifespan))}).catch(e=>s.error=e)};if(C.push(s),!r)throw s.promise}var y=r(8807),g=r.n(y),v=r(4943),E=r(5155),F=r(4735);function M(e){let t=e.root;for(;t.getState().previousRoot;)t=t.getState().previousRoot;return t}r(5704),u.act;let R=e=>e&&e.hasOwnProperty("current"),I=e=>null!=e&&("string"==typeof e||"number"==typeof e||e.isColor),G=((e,t)=>"undefined"!=typeof window&&((null==(e=window.document)?void 0:e.createElement)||(null==(t=window.navigator)?void 0:t.product)==="ReactNative"))()?l.useLayoutEffect:l.useEffect;function D(e){let t=l.useRef(e);return G(()=>void(t.current=e),[e]),t}function T(){let e=(0,F.u5)(),t=(0,F.y3)();return l.useMemo(()=>({children:r})=>{let n=(0,F.Nz)(e,!0,e=>e.type===l.StrictMode)?l.StrictMode:l.Fragment;return(0,E.jsx)(n,{children:(0,E.jsx)(t,{children:r})})},[e,t])}function H({set:e}){return G(()=>(e(new Promise(()=>null)),()=>e(!1)),[e]),null}let w=(e=>((e=class extends l.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}).getDerivedStateFromError=()=>({error:!0}),e))();function S(e){var t;let r="undefined"!=typeof window?null!=(t=window.devicePixelRatio)?t:2:1;return Array.isArray(e)?Math.min(Math.max(e[0],r),e[1]):e}function O(e){var t;return null==(t=e.__r3f)?void 0:t.root.getState()}let P={obj:e=>e===Object(e)&&!P.arr(e)&&"function"!=typeof e,fun:e=>"function"==typeof e,str:e=>"string"==typeof e,num:e=>"number"==typeof e,boo:e=>"boolean"==typeof e,und:e=>void 0===e,nul:e=>null===e,arr:e=>Array.isArray(e),equ(e,t,{arrays:r="shallow",objects:n="reference",strict:s=!0}={}){let i;if(typeof e!=typeof t||!!e!=!!t)return!1;if(P.str(e)||P.num(e)||P.boo(e))return e===t;let o=P.obj(e);if(o&&"reference"===n)return e===t;let a=P.arr(e);if(a&&"reference"===r)return e===t;if((a||o)&&e===t)return!0;for(i in e)if(!(i in t))return!1;if(o&&"shallow"===r&&"shallow"===n){for(i in s?t:e)if(!P.equ(e[i],t[i],{strict:s,objects:"reference"}))return!1}else for(i in s?t:e)if(e[i]!==t[i])return!1;if(P.und(i)){if(a&&0===e.length&&0===t.length||o&&0===Object.keys(e).length&&0===Object.keys(t).length)return!0;if(e!==t)return!1}return!0}},x=["children","key","ref"];function J(e,t,r,n){let s=null==e?void 0:e.__r3f;return!s&&(s={root:t,type:r,parent:null,children:[],props:function(e){let t={};for(let r in e)x.includes(r)||(t[r]=e[r]);return t}(n),object:e,eventCount:0,handlers:{},isHidden:!1},e&&(e.__r3f=s)),s}function L(e,t){let r=e[t];if(!t.includes("-"))return{root:e,key:t,target:r};for(let s of(r=e,t.split("-"))){var n;t=s,e=r,r=null==(n=r)?void 0:n[t]}return{root:e,key:t,target:r}}let U=/-\d+$/;function Q(e,t){if(P.str(t.props.attach)){if(U.test(t.props.attach)){let r=t.props.attach.replace(U,""),{root:n,key:s}=L(e.object,r);Array.isArray(n[s])||(n[s]=[])}let{root:r,key:n}=L(e.object,t.props.attach);t.previousAttach=r[n],r[n]=t.object}else P.fun(t.props.attach)&&(t.previousAttach=t.props.attach(e.object,t.object))}function j(e,t){if(P.str(t.props.attach)){let{root:r,key:n}=L(e.object,t.props.attach),s=t.previousAttach;void 0===s?delete r[n]:r[n]=s}else null==t.previousAttach||t.previousAttach(e.object,t.object);delete t.previousAttach}let K=[...x,"args","dispose","attach","object","onUpdate","dispose"],k=new Map,_=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],N=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function X(e,t){var r,n;let s=e.__r3f,i=s&&M(s).getState(),o=null==s?void 0:s.eventCount;for(let r in t){let o=t[r];if(K.includes(r))continue;if(s&&N.test(r)){"function"==typeof o?s.handlers[r]=o:delete s.handlers[r],s.eventCount=Object.keys(s.handlers).length;continue}if(void 0===o)continue;let{root:a,key:l,target:u}=L(e,r);u instanceof h.zgK&&o instanceof h.zgK?u.mask=o.mask:u instanceof h.Q1f&&I(o)?u.set(o):null!==u&&"object"==typeof u&&"function"==typeof u.set&&"function"==typeof u.copy&&null!=o&&o.constructor&&u.constructor===o.constructor?u.copy(o):null!==u&&"object"==typeof u&&"function"==typeof u.set&&Array.isArray(o)?"function"==typeof u.fromArray?u.fromArray(o):u.set(...o):null!==u&&"object"==typeof u&&"function"==typeof u.set&&"number"==typeof o?"function"==typeof u.setScalar?u.setScalar(o):u.set(o):(a[l]=o,i&&!i.linear&&_.includes(l)&&null!=(n=a[l])&&n.isTexture&&a[l].format===h.GWd&&a[l].type===h.OUM&&(a[l].colorSpace=h.er$))}if(null!=s&&s.parent&&null!=i&&i.internal&&null!=(r=s.object)&&r.isObject3D&&o!==s.eventCount){let e=s.object,t=i.internal.interaction.indexOf(e);t>-1&&i.internal.interaction.splice(t,1),s.eventCount&&null!==e.raycast&&i.internal.interaction.push(e)}return s&&void 0===s.props.attach&&(s.object.isBufferGeometry?s.props.attach="geometry":s.object.isMaterial&&(s.props.attach="material")),s&&Y(s),e}function Y(e){var t;if(!e.parent)return;null==e.props.onUpdate||e.props.onUpdate(e.object);let r=null==(t=e.root)||null==t.getState?void 0:t.getState();r&&0===r.internal.frames&&r.invalidate()}let q=e=>null==e?void 0:e.isObject3D;function Z(e){return(e.eventObject||e.object).uuid+"/"+e.index+e.instanceId}function W(e,t,r,n){let s=r.get(t);s&&(r.delete(t),0===r.size&&(e.delete(n),s.target.releasePointerCapture(n)))}let V=e=>!!(null!=e&&e.render),z=l.createContext(null);function $(){let e=l.useContext(z);if(!e)throw Error("R3F: Hooks can only be used within the Canvas component!");return e}function ee(e=e=>e,t){return $()(e,t)}function et(e,t=0){let r=$(),n=r.getState().internal.subscribe,s=D(e);return G(()=>n(s,t,r),[t,n,r]),null}let er=new WeakMap;function en(e,t){return function(r,...n){var s;let i;return"function"==typeof r&&(null==r||null==(s=r.prototype)?void 0:s.constructor)===r?(i=er.get(r))||(i=new r,er.set(r,i)):i=r,e&&e(i),Promise.all(n.map(e=>new Promise((r,n)=>i.load(e,e=>{q(null==e?void 0:e.scene)&&Object.assign(e,function(e){let t={nodes:{},materials:{},meshes:{}};return e&&e.traverse(e=>{e.name&&(t.nodes[e.name]=e),e.material&&!t.materials[e.material.name]&&(t.materials[e.material.name]=e.material),e.isMesh&&!t.meshes[e.name]&&(t.meshes[e.name]=e)}),t}(e.scene)),r(e)},t,t=>n(Error(`Could not load ${e}: ${null==t?void 0:t.message}`))))))}}function es(e,t,r,n){let s=Array.isArray(t)?t:[t],i=b(en(r,n),[e,...s],!1,{equal:P.equ});return Array.isArray(t)?i:i[0]}es.preload=function(e,t,r){let n,s=Array.isArray(t)?t:[t];b(en(r),[e,...s],!0,n)},es.clear=function(e,t){var r=[e,...Array.isArray(t)?t:[t]];if(void 0===r||0===r.length)C.splice(0,C.length);else{let e=C.find(e=>m(r,e.keys,e.equal));e&&e.remove()}};let ei={},eo=/^three(?=[A-Z])/,ea=e=>`${e[0].toUpperCase()}${e.slice(1)}`,el=0;function eu(e){if("function"==typeof e){let t=`${el++}`;return ei[t]=e,t}Object.assign(ei,e)}function ec(e,t){let r=ea(e),n=ei[r];if("primitive"!==e&&!n)throw Error(`R3F: ${r} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if("primitive"===e&&!t.object)throw Error("R3F: Primitives without 'object' are invalid!");if(void 0!==t.args&&!Array.isArray(t.args))throw Error("R3F: The args prop must be an array!")}function eh(e){if(e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?Q(e.parent,e):q(e.object)&&!1!==e.props.visible&&(e.object.visible=!0),e.isHidden=!1,Y(e)}}function ed(e,t,r){let n=t.root.getState();if(e.parent||e.object===n.scene){if(!t.object){var s,i;let e=ei[ea(t.type)];t.object=null!=(s=t.props.object)?s:new e(...null!=(i=t.props.args)?i:[]),t.object.__r3f=t}if(X(t.object,t.props),t.props.attach)Q(e,t);else if(q(t.object)&&q(e.object)){let n=e.object.children.indexOf(null==r?void 0:r.object);if(r&&-1!==n){let r=e.object.children.indexOf(t.object);-1!==r?(e.object.children.splice(r,1),e.object.children.splice(r{try{e.dispose()}catch{}};"undefined"!=typeof IS_REACT_ACT_ENVIRONMENT?t():(0,v.unstable_scheduleCallback)(v.unstable_IdlePriority,t)}}function eB(e,t,r){if(!t)return;t.parent=null;let n=e.children.indexOf(t);-1!==n&&e.children.splice(n,1),t.props.attach?j(e,t):q(t.object)&&q(e.object)&&(e.object.remove(t.object),function(e,t){let{internal:r}=e.getState();r.interaction=r.interaction.filter(e=>e!==t),r.initialHits=r.initialHits.filter(e=>e!==t),r.hovered.forEach((e,n)=>{(e.eventObject===t||e.object===t)&&r.hovered.delete(n)}),r.capturedMap.forEach((e,n)=>{W(r.capturedMap,t,e,n)})}(M(t),t.object));let s=null!==t.props.dispose&&!1!==r;for(let e=t.children.length-1;e>=0;e--){let r=t.children[e];eB(t,r,s)}t.children.length=0,delete t.object.__r3f,s&&"primitive"!==t.type&&"Scene"!==t.object.type&&ep(t.object),void 0===r&&Y(t)}let eC=[],em=()=>{},eb={},ey=0,eg=function(e){let t=g()(e);return t.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:l.version}),t}({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:function(e,t,r){var n;return ec(e=ea(e)in ei?e:e.replace(eo,""),t),"primitive"===e&&null!=(n=t.object)&&n.__r3f&&delete t.object.__r3f,J(t.object,r,e,t)},removeChild:eB,appendChild:eA,appendInitialChild:eA,insertBefore:ef,appendChildToContainer(e,t){let r=e.getState().scene.__r3f;t&&r&&eA(r,t)},removeChildFromContainer(e,t){let r=e.getState().scene.__r3f;t&&r&&eB(r,t)},insertInContainerBefore(e,t,r){let n=e.getState().scene.__r3f;t&&r&&n&&ef(n,t,r)},getRootHostContext:()=>eb,getChildHostContext:()=>eb,commitUpdate(e,t,r,n,s){var i,o,a;ec(t,n);let l=!1;if("primitive"===e.type&&r.object!==n.object||(null==(i=n.args)?void 0:i.length)!==(null==(o=r.args)?void 0:o.length)?l=!0:null!=(a=n.args)&&a.some((e,t)=>{var n;return e!==(null==(n=r.args)?void 0:n[t])})&&(l=!0),l)eC.push([e,{...n},s]);else{let t=function(e,t){let r={};for(let n in t)if(!K.includes(n)&&!P.equ(t[n],e.props[n]))for(let e in r[n]=t[n],t)e.startsWith(`${n}-`)&&(r[e]=t[e]);for(let n in e.props){if(K.includes(n)||t.hasOwnProperty(n))continue;let{root:s,key:i}=L(e.object,n);if(s.constructor&&0===s.constructor.length){let e=function(e){let t=k.get(e.constructor);try{t||(t=new e.constructor,k.set(e.constructor,t))}catch(e){}return t}(s);P.und(e)||(r[i]=e[i])}else r[i]=0}return r}(e,n);Object.keys(t).length&&(Object.assign(e.props,t),X(e.object,t))}(null===s.sibling||(4&s.flags)==0)&&function(){for(let[e]of eC){let t=e.parent;if(t)for(let r of(e.props.attach?j(t,e):q(e.object)&&q(t.object)&&t.object.remove(e.object),e.children))r.props.attach?j(e,r):q(r.object)&&q(e.object)&&e.object.remove(r.object);e.isHidden&&eh(e),e.object.__r3f&&delete e.object.__r3f,"primitive"!==e.type&&ep(e.object)}for(let[n,s,i]of eC){n.props=s;let o=n.parent;if(o){let s=ei[ea(n.type)];n.object=null!=(e=n.props.object)?e:new s(...null!=(t=n.props.args)?t:[]),n.object.__r3f=n;var e,t,r=n.object;for(let e of[i,i.alternate])if(null!==e)if("function"==typeof e.ref){null==e.refCleanup||e.refCleanup();let t=e.ref(r);"function"==typeof t&&(e.refCleanup=t)}else e.ref&&(e.ref.current=r);for(let e of(X(n.object,n.props),n.props.attach?Q(o,n):q(n.object)&&q(o.object)&&o.object.add(n.object),n.children))e.props.attach?Q(n,e):q(e.object)&&q(n.object)&&n.object.add(e.object);Y(n)}}eC.length=0}()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:e=>null==e?void 0:e.object,prepareForCommit:()=>null,preparePortalMount:e=>J(e.getState().scene,e,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:function(e){if(!e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?j(e.parent,e):q(e.object)&&(e.object.visible=!1),e.isHidden=!0,Y(e)}},unhideInstance:eh,createTextInstance:em,hideTextInstance:em,unhideTextInstance:em,scheduleTimeout:"function"==typeof setTimeout?setTimeout:void 0,cancelTimeout:"function"==typeof clearTimeout?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:l.createContext(null),setCurrentUpdatePriority(e){ey=e},getCurrentUpdatePriority:()=>ey,resolveUpdatePriority(){var e;if(0!==ey)return ey;switch("undefined"!=typeof window&&(null==(e=window.event)?void 0:e.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return c.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return c.ContinuousEventPriority;default:return c.DefaultEventPriority}},resetFormInstance(){}}),ev=new Map,eE={objects:"shallow",strict:!1};function eF(e){let t,r,n=ev.get(e),s=null==n?void 0:n.fiber,i=null==n?void 0:n.store;n&&console.warn("R3F.createRoot should only be called once!");let o="function"==typeof reportError?reportError:console.error,a=i||((e,t)=>{let r,n,s=(r=(r,n)=>{let s,i=new h.Pq0,o=new h.Pq0,a=new h.Pq0;function u(e=n().camera,t=o,r=n().size){let{width:s,height:l,top:c,left:h}=r,d=s/l;t.isVector3?a.copy(t):a.set(...t);let A=e.getWorldPosition(i).distanceTo(a);if(e&&e.isOrthographicCamera)return{width:s/e.zoom,height:l/e.zoom,top:c,left:h,factor:1,distance:A,aspect:d};{let t=2*Math.tan(e.fov*Math.PI/180/2)*A,r=s/l*t;return{width:r,height:t,top:c,left:h,factor:s/r,distance:A,aspect:d}}}let c=e=>r(t=>({performance:{...t.performance,current:e}})),d=new h.I9Y;return{set:r,get:n,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(t=1)=>e(n(),t),advance:(e,r)=>t(e,r,n()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new h.zD7,pointer:d,mouse:d,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{let e=n();s&&clearTimeout(s),e.performance.current!==e.performance.min&&c(e.performance.min),s=setTimeout(()=>c(n().performance.max),e.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:u},setEvents:e=>r(t=>({...t,events:{...t.events,...e}})),setSize:(e,t,s=0,i=0)=>{let a=n().camera,l={width:e,height:t,top:s,left:i};r(e=>({size:l,viewport:{...e.viewport,...u(a,o,l)}}))},setDpr:e=>r(t=>{let r=S(e);return{viewport:{...t.viewport,dpr:r,initialDpr:t.viewport.initialDpr||r}}}),setFrameloop:(e="always")=>{let t=n().clock;t.stop(),t.elapsedTime=0,"never"!==e&&(t.start(),t.elapsedTime=0),r(()=>({frameloop:e}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:l.createRef(),active:!1,frames:0,priority:0,subscribe:(e,t,r)=>{let s=n().internal;return s.priority=s.priority+ +(t>0),s.subscribers.push({ref:e,priority:t,store:r}),s.subscribers=s.subscribers.sort((e,t)=>e.priority-t.priority),()=>{let r=n().internal;null!=r&&r.subscribers&&(r.priority=r.priority-(t>0),r.subscribers=r.subscribers.filter(t=>t.ref!==e))}}}}})?B(r,n):B,i=s.getState(),o=i.size,a=i.viewport.dpr,u=i.camera;return s.subscribe(()=>{let{camera:e,size:t,viewport:r,gl:n,set:i}=s.getState();if(t.width!==o.width||t.height!==o.height||r.dpr!==a){o=t,a=r.dpr,function(e,t){!e.manual&&(e&&e.isOrthographicCamera?(e.left=-(t.width/2),e.right=t.width/2,e.top=t.height/2,e.bottom=-(t.height/2)):e.aspect=t.width/t.height,e.updateProjectionMatrix())}(e,t),r.dpr>0&&n.setPixelRatio(r.dpr);let s="undefined"!=typeof HTMLCanvasElement&&n.domElement instanceof HTMLCanvasElement;n.setSize(t.width,t.height,s)}e!==u&&(u=e,i(t=>({viewport:{...t.viewport,...t.viewport.getCurrentViewport(e)}})))}),s.subscribe(t=>e(t)),s})(ex,eJ),u=s||eg.createContainer(a,c.ConcurrentRoot,null,!1,null,"",o,o,o,null);n||ev.set(e,{fiber:u,store:a});let A=!1,f=null;return{async configure(n={}){var s,i;let o;f=new Promise(e=>o=e);let{gl:l,size:u,scene:c,events:p,onCreated:B,shadows:C=!1,linear:m=!1,flat:b=!1,legacy:y=!1,orthographic:g=!1,frameloop:v="always",dpr:E=[1,2],performance:F,raycaster:M,camera:R,onPointerMissed:I}=n,G=a.getState(),D=G.gl;if(!G.gl){let t={canvas:e,powerPreference:"high-performance",antialias:!0,alpha:!0},r="function"==typeof l?await l(t):l;D=V(r)?r:new d.WebGLRenderer({...t,...l}),G.set({gl:D})}let T=G.raycaster;T||G.set({raycaster:T=new h.tBo});let{params:H,...w}=M||{};if(P.equ(w,T,eE)||X(T,{...w}),P.equ(H,T.params,eE)||X(T,{params:{...T.params,...H}}),!G.camera||G.camera===r&&!P.equ(r,R,eE)){r=R;let e=null==R?void 0:R.isCamera,t=e?R:g?new h.qUd(0,0,0,0,.1,1e3):new h.ubm(75,0,.1,1e3);!e&&(t.position.z=5,R&&(X(t,R),!t.manual&&("aspect"in R||"left"in R||"right"in R||"bottom"in R||"top"in R)&&(t.manual=!0,t.updateProjectionMatrix())),G.camera||null!=R&&R.rotation||t.lookAt(0,0,0)),G.set({camera:t}),T.camera=t}if(!G.scene){let e;null!=c&&c.isScene?J(e=c,a,"",{}):(J(e=new h.Z58,a,"",{}),c&&X(e,c)),G.set({scene:e})}p&&!G.events.handlers&&G.set({events:p(a)});let O=function(e,t){if(!t&&"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&e.parentElement){let{width:t,height:r,top:n,left:s}=e.parentElement.getBoundingClientRect();return{width:t,height:r,top:n,left:s}}return!t&&"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas?{width:e.width,height:e.height,top:0,left:0}:{width:0,height:0,top:0,left:0,...t}}(e,u);if(P.equ(O,G.size,eE)||G.setSize(O.width,O.height,O.top,O.left),E&&G.viewport.dpr!==S(E)&&G.setDpr(E),G.frameloop!==v&&G.setFrameloop(v),G.onPointerMissed||G.set({onPointerMissed:I}),F&&!P.equ(F,G.performance,eE)&&G.set(e=>({performance:{...e.performance,...F}})),!G.xr){let e=(e,t)=>{let r=a.getState();"never"!==r.frameloop&&eJ(e,!0,r,t)},t=()=>{let t=a.getState();t.gl.xr.enabled=t.gl.xr.isPresenting,t.gl.xr.setAnimationLoop(t.gl.xr.isPresenting?e:null),t.gl.xr.isPresenting||ex(t)},r={connect(){let e=a.getState().gl;e.xr.addEventListener("sessionstart",t),e.xr.addEventListener("sessionend",t)},disconnect(){let e=a.getState().gl;e.xr.removeEventListener("sessionstart",t),e.xr.removeEventListener("sessionend",t)}};"function"==typeof(null==(s=D.xr)?void 0:s.addEventListener)&&r.connect(),G.set({xr:r})}if(D.shadowMap){let e=D.shadowMap.enabled,t=D.shadowMap.type;if(D.shadowMap.enabled=!!C,P.boo(C))D.shadowMap.type=h.Wk7;else if(P.str(C)){let e={basic:h.bTm,percentage:h.QP0,soft:h.Wk7,variance:h.RyA};D.shadowMap.type=null!=(i=e[C])?i:h.Wk7}else P.obj(C)&&Object.assign(D.shadowMap,C);(e!==D.shadowMap.enabled||t!==D.shadowMap.type)&&(D.shadowMap.needsUpdate=!0)}return h.ppV.enabled=!y,A||(D.outputColorSpace=m?h.Zr2:h.er$,D.toneMapping=b?h.y_p:h.FV),G.legacy!==y&&G.set(()=>({legacy:y})),G.linear!==m&&G.set(()=>({linear:m})),G.flat!==b&&G.set(()=>({flat:b})),!l||P.fun(l)||V(l)||P.equ(l,D,eE)||X(D,l),t=B,A=!0,o(),this},render(r){return A||f||this.configure(),f.then(()=>{eg.updateContainer((0,E.jsx)(eM,{store:a,children:r,onCreated:t,rootElement:e}),u,null,()=>void 0)}),a},unmount(){eR(e)}}}function eM({store:e,children:t,onCreated:r,rootElement:n}){return G(()=>{let t=e.getState();t.set(e=>({internal:{...e.internal,active:!0}})),r&&r(t),e.getState().events.connected||null==t.events.connect||t.events.connect(n)},[]),(0,E.jsx)(z.Provider,{value:e,children:t})}function eR(e,t){let r=ev.get(e),n=null==r?void 0:r.fiber;if(n){let s=null==r?void 0:r.store.getState();s&&(s.internal.active=!1),eg.updateContainer(null,n,null,()=>{s&&setTimeout(()=>{try{null==s.events.disconnect||s.events.disconnect(),null==(r=s.gl)||null==(n=r.renderLists)||null==n.dispose||n.dispose(),null==(i=s.gl)||null==i.forceContextLoss||i.forceContextLoss(),null!=(o=s.gl)&&o.xr&&s.xr.disconnect();var r,n,i,o,a=s.scene;for(let e in"Scene"!==a.type&&(null==a.dispose||a.dispose()),a){let t=a[e];(null==t?void 0:t.type)!=="Scene"&&(null==t||null==t.dispose||t.dispose())}ev.delete(e),t&&t(e)}catch(e){}},500)})}}let eI=new Set,eG=new Set,eD=new Set;function eT(e,t){if(e.size)for(let{callback:r}of e.values())r(t)}function eH(e,t){switch(e){case"before":return eT(eI,t);case"after":return eT(eG,t);case"tail":return eT(eD,t)}}function ew(e,t,r){let i=t.clock.getDelta();"never"===t.frameloop&&"number"==typeof e&&(i=e-t.clock.elapsedTime,t.clock.oldTime=t.clock.elapsedTime,t.clock.elapsedTime=e),n=t.internal.subscribers;for(let e=0;e0)&&!(null!=(t=a.gl.xr)&&t.isPresenting)&&(i+=ew(e,a))}if(eO=!1,eH("after",e),0===i)return eH("tail",e),eS=!1,cancelAnimationFrame(o)}function ex(e,t=1){var r;if(!e)return ev.forEach(e=>ex(e.store.getState(),t));(null==(r=e.gl.xr)||!r.isPresenting)&&e.internal.active&&"never"!==e.frameloop&&(t>1?e.internal.frames=Math.min(60,e.internal.frames+t):eO?e.internal.frames=2:e.internal.frames=1,eS||(eS=!0,requestAnimationFrame(eP)))}function eJ(e,t=!0,r,n){if(t&&eH("before",e),r)ew(e,r,n);else for(let t of ev.values())ew(e,t.store.getState());t&&eH("after",e)}let eL={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function eU(e){let{handlePointer:t}=function(e){function t(e){return e.filter(e=>["Move","Over","Enter","Out","Leave"].some(t=>{var r;return null==(r=e.__r3f)?void 0:r.handlers["onPointer"+t]}))}function r(t){let{internal:r}=e.getState();for(let e of r.hovered.values())if(!t.length||!t.find(t=>t.object===e.object&&t.index===e.index&&t.instanceId===e.instanceId)){let n=e.eventObject.__r3f;if(r.hovered.delete(Z(e)),null!=n&&n.eventCount){let r=n.handlers,s={...e,intersections:t};null==r.onPointerOut||r.onPointerOut(s),null==r.onPointerLeave||r.onPointerLeave(s)}}}function n(e,t){for(let r=0;rr([]);case"onLostPointerCapture":return t=>{let{internal:n}=e.getState();"pointerId"in t&&n.capturedMap.has(t.pointerId)&&requestAnimationFrame(()=>{n.capturedMap.has(t.pointerId)&&(n.capturedMap.delete(t.pointerId),r([]))})}}return function(i){let{onPointerMissed:o,internal:a}=e.getState();a.lastEvent.current=i;let l="onPointerMove"===s,u="onClick"===s||"onContextMenu"===s||"onDoubleClick"===s,c=function(t,r){let n=e.getState(),s=new Set,i=[],o=r?r(n.internal.interaction):n.internal.interaction;for(let e=0;e{let r=O(e.object),n=O(t.object);return r&&n&&n.events.priority-r.events.priority||e.distance-t.distance}).filter(e=>{let t=Z(e);return!s.has(t)&&(s.add(t),!0)});for(let e of(n.events.filter&&(a=n.events.filter(a,n)),a)){let t=e.object;for(;t;){var l;null!=(l=t.__r3f)&&l.eventCount&&i.push({...e,eventObject:t}),t=t.parent}}if("pointerId"in t&&n.internal.capturedMap.has(t.pointerId))for(let e of n.internal.capturedMap.get(t.pointerId).values())s.has(Z(e.intersection))||i.push(e.intersection);return i}(i,l?t:void 0),d=u?function(t){let{internal:r}=e.getState(),n=t.offsetX-r.initialClick[0],s=t.offsetY-r.initialClick[1];return Math.round(Math.sqrt(n*n+s*s))}(i):0;"onPointerDown"===s&&(a.initialClick=[i.offsetX,i.offsetY],a.initialHits=c.map(e=>e.eventObject)),u&&!c.length&&d<=2&&(n(i,a.interaction),o&&o(i)),l&&r(c),!function(e,t,n,s){if(e.length){let i={stopped:!1};for(let o of e){let a=O(o.object);if(a||o.object.traverseAncestors(e=>{let t=O(e);if(t)return a=t,!1}),a){let{raycaster:l,pointer:u,camera:c,internal:d}=a,A=new h.Pq0(u.x,u.y,0).unproject(c),f=e=>{var t,r;return null!=(t=null==(r=d.capturedMap.get(e))?void 0:r.has(o.eventObject))&&t},p=e=>{let r={intersection:o,target:t.target};d.capturedMap.has(e)?d.capturedMap.get(e).set(o.eventObject,r):d.capturedMap.set(e,new Map([[o.eventObject,r]])),t.target.setPointerCapture(e)},B=e=>{let t=d.capturedMap.get(e);t&&W(d.capturedMap,o.eventObject,t,e)},C={};for(let e in t){let r=t[e];"function"!=typeof r&&(C[e]=r)}let m={...o,...C,pointer:u,intersections:e,stopped:i.stopped,delta:n,unprojectedPoint:A,ray:l.ray,camera:c,stopPropagation(){let n="pointerId"in t&&d.capturedMap.get(t.pointerId);(!n||n.has(o.eventObject))&&(m.stopped=i.stopped=!0,d.hovered.size&&Array.from(d.hovered.values()).find(e=>e.eventObject===o.eventObject)&&r([...e.slice(0,e.indexOf(o)),o]))},target:{hasPointerCapture:f,setPointerCapture:p,releasePointerCapture:B},currentTarget:{hasPointerCapture:f,setPointerCapture:p,releasePointerCapture:B},nativeEvent:t};if(s(m),!0===i.stopped)break}}}}(c,i,d,function(e){let t=e.eventObject,r=t.__r3f;if(!(null!=r&&r.eventCount))return;let o=r.handlers;if(l){if(o.onPointerOver||o.onPointerEnter||o.onPointerOut||o.onPointerLeave){let t=Z(e),r=a.hovered.get(t);r?r.stopped&&e.stopPropagation():(a.hovered.set(t,e),null==o.onPointerOver||o.onPointerOver(e),null==o.onPointerEnter||o.onPointerEnter(e))}null==o.onPointerMove||o.onPointerMove(e)}else{let r=o[s];r?(!u||a.initialHits.includes(t))&&(n(i,a.interaction.filter(e=>!a.initialHits.includes(e))),r(e)):u&&a.initialHits.includes(t)&&n(i,a.interaction.filter(e=>!a.initialHits.includes(e)))}})}}}}(e);return{priority:1,enabled:!0,compute(e,t,r){t.pointer.set(e.offsetX/t.size.width*2-1,-(2*(e.offsetY/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)},connected:void 0,handlers:Object.keys(eL).reduce((e,r)=>({...e,[r]:t(r)}),{}),update:()=>{var t;let{events:r,internal:n}=e.getState();null!=(t=n.lastEvent)&&t.current&&r.handlers&&r.handlers.onPointerMove(n.lastEvent.current)},connect:t=>{let{set:r,events:n}=e.getState();if(null==n.disconnect||n.disconnect(),r(e=>({events:{...e.events,connected:t}})),n.handlers)for(let e in n.handlers){let r=n.handlers[e],[s,i]=eL[e];t.addEventListener(s,r,{passive:i})}},disconnect:()=>{let{set:t,events:r}=e.getState();if(r.connected){if(r.handlers)for(let e in r.handlers){let t=r.handlers[e],[n]=eL[e];r.connected.removeEventListener(n,t)}t(e=>({events:{...e.events,connected:void 0}}))}}}}},125:(e,t,r)=>{var n=r(2115),s="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=n.useState,o=n.useEffect,a=n.useLayoutEffect,l=n.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!s(e,r)}catch(e){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),n=i({inst:{value:r,getSnapshot:t}}),s=n[0].inst,c=n[1];return a(function(){s.value=r,s.getSnapshot=t,u(s)&&c({inst:s})},[e,r,t]),o(function(){return u(s)&&c({inst:s}),e(function(){u(s)&&c({inst:s})})},[e]),l(r),r};t.useSyncExternalStore=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:c},139:(e,t,r)=>{r.d(t,{Z:()=>f});var n=r(5339),s=Object.defineProperty;class i{constructor(){((e,t,r)=>((e,t,r)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r))(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;t(((e,t,r)=>t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r),r);let l=new n.O9p(0,0,0,"YXZ"),u=new n.Pq0,c={type:"change"},h={type:"lock"},d={type:"unlock"},A=Math.PI/2;class f extends i{constructor(e,t){super(),a(this,"camera"),a(this,"domElement"),a(this,"isLocked"),a(this,"minPolarAngle"),a(this,"maxPolarAngle"),a(this,"pointerSpeed"),a(this,"onMouseMove",e=>{this.domElement&&!1!==this.isLocked&&(l.setFromQuaternion(this.camera.quaternion),l.y-=.002*e.movementX*this.pointerSpeed,l.x-=.002*e.movementY*this.pointerSpeed,l.x=Math.max(A-this.maxPolarAngle,Math.min(A-this.minPolarAngle,l.x)),this.camera.quaternion.setFromEuler(l),this.dispatchEvent(c))}),a(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(h),this.isLocked=!0):(this.dispatchEvent(d),this.isLocked=!1))}),a(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),a(this,"connect",e=>{this.domElement=e||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),a(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),a(this,"dispose",()=>{this.disconnect()}),a(this,"getObject",()=>this.camera),a(this,"direction",new n.Pq0(0,0,-1)),a(this,"getDirection",e=>e.copy(this.direction).applyQuaternion(this.camera.quaternion)),a(this,"moveForward",e=>{u.setFromMatrixColumn(this.camera.matrix,0),u.crossVectors(this.camera.up,u),this.camera.position.addScaledVector(u,e)}),a(this,"moveRight",e=>{u.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(u,e)}),a(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),a(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}},258:(e,t,r)=>{r.d(t,{Hl:()=>h});var n=r(99),s=r(2115),i=r(7548);function o(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let a=["x","y","top","bottom","left","right","width","height"];var l=r(4735),u=r(5155);function c({ref:e,children:t,fallback:r,resize:l,style:c,gl:h,events:d=n.f,eventSource:A,eventPrefix:f,shadows:p,linear:B,flat:C,legacy:m,orthographic:b,frameloop:y,dpr:g,performance:v,raycaster:E,camera:F,scene:M,onPointerMissed:R,onCreated:I,...G}){s.useMemo(()=>(0,n.e)(i),[]);let D=(0,n.u)(),[T,H]=function({debounce:e,scroll:t,polyfill:r,offsetSize:n}={debounce:0,scroll:!1,offsetSize:!1}){var i,l,u;let c=r||("undefined"==typeof window?class{}:window.ResizeObserver);if(!c)throw Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");let[h,d]=(0,s.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),A=(0,s.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:h,orientationHandler:null}),f=e?"number"==typeof e?e:e.scroll:null,p=e?"number"==typeof e?e:e.resize:null,B=(0,s.useRef)(!1);(0,s.useEffect)(()=>(B.current=!0,()=>void(B.current=!1)));let[C,m,b]=(0,s.useMemo)(()=>{let e=()=>{let e,t;if(!A.current.element)return;let{left:r,top:s,width:i,height:o,bottom:l,right:u,x:c,y:h}=A.current.element.getBoundingClientRect(),f={left:r,top:s,width:i,height:o,bottom:l,right:u,x:c,y:h};A.current.element instanceof HTMLElement&&n&&(f.height=A.current.element.offsetHeight,f.width=A.current.element.offsetWidth),Object.freeze(f),B.current&&(e=A.current.lastBounds,t=f,!a.every(r=>e[r]===t[r]))&&d(A.current.lastBounds=f)};return[e,p?o(e,p):e,f?o(e,f):e]},[d,n,f,p]);function y(){A.current.scrollContainers&&(A.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",b,!0)),A.current.scrollContainers=null),A.current.resizeObserver&&(A.current.resizeObserver.disconnect(),A.current.resizeObserver=null),A.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",A.current.orientationHandler))}function g(){A.current.element&&(A.current.resizeObserver=new c(b),A.current.resizeObserver.observe(A.current.element),t&&A.current.scrollContainers&&A.current.scrollContainers.forEach(e=>e.addEventListener("scroll",b,{capture:!0,passive:!0})),A.current.orientationHandler=()=>{b()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",A.current.orientationHandler))}return i=b,l=!!t,(0,s.useEffect)(()=>{if(l)return window.addEventListener("scroll",i,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",i,!0)},[i,l]),u=m,(0,s.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,s.useEffect)(()=>{y(),g()},[t,b,m]),(0,s.useEffect)(()=>y,[]),[e=>{e&&e!==A.current.element&&(y(),A.current.element=e,A.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:s,overflowY:i}=window.getComputedStyle(t);return[n,s,i].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),g())},h,C]}({scroll:!0,debounce:{scroll:50,resize:0},...l}),w=s.useRef(null),S=s.useRef(null);s.useImperativeHandle(e,()=>w.current);let O=(0,n.a)(R),[P,x]=s.useState(!1),[J,L]=s.useState(!1);if(P)throw P;if(J)throw J;let U=s.useRef(null);(0,n.b)(()=>{let e=w.current;H.width>0&&H.height>0&&e&&(U.current||(U.current=(0,n.c)(e)),async function(){await U.current.configure({gl:h,scene:M,events:d,shadows:p,linear:B,flat:C,legacy:m,orthographic:b,frameloop:y,dpr:g,performance:v,raycaster:E,camera:F,size:H,onPointerMissed:(...e)=>null==O.current?void 0:O.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(A?(0,n.i)(A)?A.current:A:S.current),f&&e.setEvents({compute:(e,t)=>{let r=e[f+"X"],n=e[f+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==I||I(e)}}),U.current.render((0,u.jsx)(D,{children:(0,u.jsx)(n.E,{set:L,children:(0,u.jsx)(s.Suspense,{fallback:(0,u.jsx)(n.B,{set:x}),children:null!=t?t:null})})}))}())}),s.useEffect(()=>{let e=w.current;if(e)return()=>(0,n.d)(e)},[]);let Q=A?"none":"auto";return(0,u.jsx)("div",{ref:S,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:Q,...c},...G,children:(0,u.jsx)("div",{ref:T,style:{width:"100%",height:"100%"},children:(0,u.jsx)("canvas",{ref:w,style:{display:"block"},children:r})})})}function h(e){return(0,u.jsx)(l.Af,{children:(0,u.jsx)(c,{...e})})}r(8870),r(8807),r(4943)},490:(e,t,r)=>{r.d(t,{y:()=>s});let n=e=>{let t,r=new Set,n=(e,n)=>{let s="function"==typeof e?e(t):e;if(!Object.is(s,t)){let e=t;t=(null!=n?n:"object"!=typeof s||null===s)?s:Object.assign({},t,s),r.forEach(r=>r(t,e))}},s=()=>t,i={setState:n,getState:s,getInitialState:()=>o,subscribe:e=>(r.add(e),()=>r.delete(e))},o=t=e(n,s,i);return i},s=e=>e?n(e):n},979:(e,t)=>{function r(e,t){var r=e.length;for(e.push(t);0>>1,s=e[n];if(0>>1;ni(l,r))ui(c,l)?(e[n]=c,e[u]=r,n=u):(e[n]=l,e[a]=r,n=a);else if(ui(c,r))e[n]=c,e[u]=r,n=u;else break}}return t}function i(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,a=performance;t.unstable_now=function(){return a.now()}}else{var l=Date,u=l.now();t.unstable_now=function(){return l.now()-u}}var c=[],h=[],d=1,A=null,f=3,p=!1,B=!1,C=!1,m="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,y="undefined"!=typeof setImmediate?setImmediate:null;function g(e){for(var t=n(h);null!==t;){if(null===t.callback)s(h);else if(t.startTime<=e)s(h),t.sortIndex=t.expirationTime,r(c,t);else break;t=n(h)}}function v(e){if(C=!1,g(e),!B)if(null!==n(c))B=!0,H();else{var t=n(h);null!==t&&w(v,t.startTime-e)}}var E=!1,F=-1,M=5,R=-1;function I(){return!(t.unstable_now()-Re&&I());){var a=A.callback;if("function"==typeof a){A.callback=null,f=A.priorityLevel;var l=a(A.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof l){A.callback=l,g(e),r=!0;break t}A===n(c)&&s(c),g(e)}else s(c);A=n(c)}if(null!==A)r=!0;else{var u=n(h);null!==u&&w(v,u.startTime-e),r=!1}}break e}finally{A=null,f=i,p=!1}}}finally{r?o():E=!1}}}if("function"==typeof y)o=function(){y(G)};else if("undefined"!=typeof MessageChannel){var D=new MessageChannel,T=D.port2;D.port1.onmessage=G,o=function(){T.postMessage(null)}}else o=function(){m(G,0)};function H(){E||(E=!0,o())}function w(e,r){F=m(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){B||p||(B=!0,H())},t.unstable_forceFrameRate=function(e){0>e||125o?(e.sortIndex=i,r(h,e),null===n(c)&&e===n(h)&&(C?(b(F),F=-1):C=!0,w(v,i-o))):(e.sortIndex=a,r(c,e),B||p||(B=!0,H())),e},t.unstable_shouldYield=I,t.unstable_wrapCallback=function(e){var t=f;return function(){var r=f;f=t;try{return e.apply(this,arguments)}finally{f=r}}}},1668:(e,t,r)=>{r.d(t,{X:()=>a,k:()=>l});var n=r(4049),s=r(4268),i=r(3049),o=r(2162),a=class extends o.k{#e;#t;#r;#n;#s;#i;#o;constructor(e){super(),this.#o=!1,this.#i=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#n=e.client,this.#r=this.#n.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=c(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#s?.promise}setOptions(e){if(this.options={...this.#i,...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=c(this.options);void 0!==e.data&&(this.setState(u(e.data,e.dataUpdatedAt)),this.#e=e)}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#r.remove(this)}setData(e,t){let r=(0,n.pl)(this.state.data,e,this.options);return this.#a({data:r,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),r}setState(e,t){this.#a({type:"setState",state:e,setStateOptions:t})}cancel(e){let t=this.#s?.promise;return this.#s?.cancel(e),t?t.then(n.lQ).catch(n.lQ):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#e)}isActive(){return this.observers.some(e=>!1!==(0,n.Eh)(e.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===n.hT||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===(0,n.d2)(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(e=0){return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!(0,n.j3)(this.state.dataUpdatedAt,e))}onFocus(){let e=this.observers.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#s?.continue()}onOnline(){let e=this.observers.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#s?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#s&&(this.#o?this.#s.cancel({revert:!0}):this.#s.cancelRetry()),this.scheduleGc()),this.#r.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#a({type:"invalidate"})}async fetch(e,t){if("idle"!==this.state.fetchStatus&&this.#s?.status()!=="rejected"){if(void 0!==this.state.data&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#s)return this.#s.continueRetry(),this.#s.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let r=new AbortController,s=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#o=!0,r.signal)})},o=()=>{let e=(0,n.ZM)(this.options,t),r=(()=>{let e={client:this.#n,queryKey:this.queryKey,meta:this.meta};return s(e),e})();return(this.#o=!1,this.options.persister)?this.options.persister(e,r,this):e(r)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#n,state:this.state,fetchFn:o};return s(e),e})();this.options.behavior?.onFetch(a,this),this.#t=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#a({type:"fetch",meta:a.fetchOptions?.meta}),this.#s=(0,i.II)({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof i.cc&&e.revert&&this.setState({...this.#t,fetchStatus:"idle"}),r.abort()},onFail:(e,t)=>{this.#a({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#a({type:"pause"})},onContinue:()=>{this.#a({type:"continue"})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#s.start();if(void 0===e)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof i.cc){if(e.silent)return this.#s.promise;else if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw this.#a({type:"error",error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#a(e){let t=t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...l(t.data,this.options),fetchMeta:e.meta??null};case"success":let r={...t,...u(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#t=e.manual?r:void 0,r;case"error":let n=e.error;return{...t,error:n,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:n,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}};this.state=t(this.state),s.jG.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:"updated",action:e})})}};function l(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:(0,i.v_)(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}function u(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function c(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,n=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?n??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}},1808:(e,t,r)=>{let n;r.d(t,{p:()=>eu}),r(2115);var s=r(5339);let i=new WeakMap;class o extends s.aHM{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,n){let i=new s.Y9S(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let s={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,s).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(i.has(e)){let t=i.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let s=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(s,o).then(n=>(r=n,new Promise((n,i)=>{r._callbacks[s]={resolve:n,reject:i},r.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return a.catch(()=>!0).then(()=>{r&&s&&this._releaseTask(r,s)}),i.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new s.LoY;e.index&&t.setIndex(new s.THS(e.index.array,1));for(let r=0;r{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=a.toString(),s=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,r=new t.Decoder,o=new t.DecoderBuffer;o.Init(new Int8Array(s),s.byteLength);try{let e=function(e,t,r,n){let s,i,o=n.attributeIDs,a=n.attributeTypes,l=t.GetEncodedGeometryType(r);if(l===e.TRIANGULAR_MESH)s=new e.Mesh,i=t.DecodeBufferToMesh(r,s);else if(l===e.POINT_CLOUD)s=new e.PointCloud,i=t.DecodeBufferToPointCloud(r,s);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!i.ok()||0===s.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+i.error_msg());let u={index:null,attributes:[]};for(let r in o){let i,l,c=self[a[r]];if(n.useUniqueIDs)l=o[r],i=t.GetAttributeByUniqueId(s,l);else{if(-1===(l=t.GetAttributeId(s,e[o[r]])))continue;i=t.GetAttribute(s,l)}u.attributes.push(function(e,t,r,n,s,i){let o=i.num_components(),a=r.num_points()*o,l=a*s.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,s),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,i,u,l,c);let h=new s(e.HEAPF32.buffer,c,a).slice();return e._free(c),{name:n,array:h,itemSize:o}}(e,t,s,r,c,i))}return l===e.TRIANGULAR_MESH&&(u.index=function(e,t,r){let n=3*r.num_faces(),s=4*n,i=e._malloc(s);t.GetTrianglesUInt32Array(r,s,i);let o=new Uint32Array(e.HEAPF32.buffer,i,n).slice();return e._free(i),{array:o,itemSize:1}}(e,t,s)),e.destroy(s),u}(t,r,o,i),s=e.attributes.map(e=>e.array.buffer);e.index&&s.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},s)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(o),t.destroy(r)}})}}}function l(e,t){if(t===s.RJ4)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==s.rYR&&t!==s.O49)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e=2.0 are supported."));return}let a=new en(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});a.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===o[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}a.setExtensions(i),a.setPlugins(o),a.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,s){r.parse(e,t,n,s)})}}function f(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let p={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class B{constructor(e){this.parser=e,this.name=p.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,s.source,i)}}class T{constructor(e){this.parser=e,this.name=p.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,s=n.textures[e];if(!s.extensions||!s.extensions[t])return null;let i=s.extensions[t],o=n.images[i.source],a=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(a=e)}return this.detectSupport().then(function(s){if(s)return r.loadTextureImage(e,i.source,a);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class H{constructor(e){this.parser=e,this.name=p.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,s=n.textures[e];if(!s.extensions||!s.extensions[t])return null;let i=s.extensions[t],o=n.images[i.source],a=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(a=e)}return this.detectSupport().then(function(s){if(s)return r.loadTextureImage(e,i.source,a);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class w{constructor(e){this.name=p.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,i=e.count,o=e.byteStride,a=new Uint8Array(t,r,n);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(i,o,a,e.mode,e.filter).then(function(e){return e.buffer}):s.ready.then(function(){let t=new ArrayBuffer(i*o);return s.decodeGltfBuffer(new Uint8Array(t),i,o,a,e.mode,e.filter),t})})}}}class S{constructor(e){this.name=p.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==k.TRIANGLES&&e.mode!==k.TRIANGLE_STRIP&&e.mode!==k.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new s.kn4,r=new s.Pq0,a=new s.PTz,l=new s.Pq0(1,1,1),u=new s.ZLX(e.geometry,e.material,n);for(let e=0;e=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},W={CUBICSPLINE:void 0,LINEAR:s.PJ3,STEP:s.ljd},V={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function z(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function $(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function ee(e){let t="",r=Object.keys(e).sort();for(let n=0,s=r.length;n-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||r||n&&i<98?this.textureLoader=new s.Tap(this.options.manager):this.textureLoader=new s.Kzg(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new s.Y9S(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,n=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let i={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:r,userData:{}};return z(s,i,n),$(i,n),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(i)})).then(function(){for(let e of i.scenes)e.updateMatrixWorld();e(i)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,n=t.length;r{let r=this.associations.get(e);for(let[n,i]of(null!=r&&this.associations.set(t,r),e.children.entries()))s(i,t.children[n])};return s(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r=2&&o.setY(t,d[e*l+1]),l>=3&&o.setZ(t,d[e*l+2]),l>=4&&o.setW(t,d[e*l+3]),l>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,s=t.images[n],i=this.textureLoader;if(s.uri){let e=r.manager.getHandler(s.uri);null!==e&&(i=e)}return this.loadTextureImage(e,n,i)}loadTextureImage(e,t,r){let n=this,i=this.json,o=i.textures[e],a=i.images[t],l=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[l])return this.textureCache[l];let u=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=o.name||a.name||"",""===t.name&&"string"==typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(t.name=a.uri);let r=(i.samplers||{})[o.sampler]||{};return t.magFilter=N[r.magFilter]||s.k6q,t.minFilter=N[r.minFilter]||s.$_I,t.wrapS=X[r.wrapS]||s.GJx,t.wrapT=X[r.wrapT]||s.GJx,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[l]=u,u}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],o=self.URL||self.webkitURL,a=i.uri||"",l=!1;if(void 0!==i.bufferView)a=this.getDependency("bufferView",i.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:i.mimeType});return a=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let u=Promise.resolve(a).then(function(e){return new Promise(function(r,i){let o=r;!0===t.isImageBitmapLoader&&(o=function(e){let t=new s.gPd(e);t.needsUpdate=!0,r(t)}),t.load(s.r6x.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===l&&o.revokeObjectURL(a),$(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e});return this.sourceCache[e]=u,u}assignTexture(e,t,r,n){let s=this;return this.getDependency("texture",r.index).then(function(i){if(!i)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((i=i.clone()).channel=r.texCoord),s.extensions[p.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[p.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=s.associations.get(i);i=s.extensions[p.KHR_TEXTURE_TRANSFORM].extendTexture(i,e),s.associations.set(i,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?h:d),"colorSpace"in i?i.colorSpace=n:i.encoding=n===h?3001:3e3),e[t]=i,i})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new s.BH$,s.imn.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new s.mrM,s.imn.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||o){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return s._4j}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,o=n.materials[e],a={},l=o.extensions||{},u=[];if(l[p.KHR_MATERIALS_UNLIT]){let e=i[p.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),u.push(e.extendParams(a,o,r))}else{let n=o.pbrMetallicRoughness||{};if(a.color=new s.Q1f(1,1,1),a.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;a.color.setRGB(e[0],e[1],e[2],d),a.opacity=e[3]}void 0!==n.baseColorTexture&&u.push(r.assignTexture(a,"map",n.baseColorTexture,h)),a.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,a.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(u.push(r.assignTexture(a,"metalnessMap",n.metallicRoughnessTexture)),u.push(r.assignTexture(a,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),u.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)})))}!0===o.doubleSided&&(a.side=s.$EB);let c=o.alphaMode||V.OPAQUE;if(c===V.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,c===V.MASK&&(a.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&t!==s.V9B&&(u.push(r.assignTexture(a,"normalMap",o.normalTexture)),a.normalScale=new s.I9Y(1,1),void 0!==o.normalTexture.scale)){let e=o.normalTexture.scale;a.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&t!==s.V9B&&(u.push(r.assignTexture(a,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(a.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&t!==s.V9B){let e=o.emissiveFactor;a.emissive=new s.Q1f().setRGB(e[0],e[1],e[2],d)}return void 0!==o.emissiveTexture&&t!==s.V9B&&u.push(r.assignTexture(a,"emissiveMap",o.emissiveTexture,h)),Promise.all(u).then(function(){let n=new t(a);return o.name&&(n.name=o.name),$(n,o),r.associations.set(n,{materials:e}),o.extensions&&z(i,n,o),n})}createUniqueName(e){let t=s.Nwf.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let o=0,a=e.length;o0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r1?new s.YJl:1===t.length?t[0]:new s.B69)!==t[0])for(let e=0,r=t.length;e{let t=new Map;for(let[e,r]of n.associations)(e instanceof s.imn||e instanceof s.gPd)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let o,a=[],l=e.name?e.name:e.uuid,u=[];switch(Z[i.path]===Z.weights?e.traverse(function(e){e.morphTargetInfluences&&u.push(e.name?e.name:e.uuid)}):u.push(l),Z[i.path]){case Z.weights:o=s.Hit;break;case Z.rotation:o=s.MBL;break;case Z.position:case Z.scale:o=s.RiT;break;default:o=1===r.itemSize?s.Hit:s.RiT}let c=void 0!==n.interpolation?W[n.interpolation]:s.PJ3,h=this._getArrayFromAccessor(r);for(let e=0,r=u.length;e{r&&r(s),e&&(eo||(eo=new o),eo.setDecoderPath("string"==typeof e?e:ea),s.setDRACOLoader(eo)),t&&s.setMeshoptDecoder((()=>{let e;if(n)return n;let t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),r=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let s="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";WebAssembly.validate(t)&&(s="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");let i=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let n=0;for(let s=0;s{(e=t.instance).exports.__wasm_call_ctors()});function o(t,r,n,s,i,o){let a=e.exports.sbrk,l=n+3&-4,u=a(l*s),c=a(i.length),h=new Uint8Array(e.exports.memory.buffer);h.set(i,c);let d=t(u,n,s,c,i.length);if(0===d&&o&&o(u,l,s),r.set(h.subarray(u,u+n*s)),a(u-a(0)),0!==d)throw Error(`Malformed buffer data: ${d}`)}let a={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return n={ready:i,supported:!0,decodeVertexBuffer(t,r,n,s,i){o(e.exports.meshopt_decodeVertexBuffer,t,r,n,s,e.exports[a[i]])},decodeIndexBuffer(t,r,n,s){o(e.exports.meshopt_decodeIndexBuffer,t,r,n,s)},decodeIndexSequence(t,r,n,s){o(e.exports.meshopt_decodeIndexSequence,t,r,n,s)},decodeGltfBuffer(t,r,n,s,i,u){o(e.exports[l[i]],t,r,n,s,e.exports[a[u]])}}})())}}let eu=(e,t,r,n)=>(0,ei.G)(A,e,el(t,r,n));eu.preload=(e,t,r,n)=>ei.G.preload(A,e,el(t,r,n)),eu.clear=e=>ei.G.clear(A,e),eu.setDecoderPath=e=>{ea=e}},1975:(e,t)=>{t.ConcurrentRoot=1,t.ContinuousEventPriority=8,t.DefaultEventPriority=32,t.DiscreteEventPriority=2},2162:(e,t,r)=>{r.d(t,{k:()=>i});var n=r(7126),s=r(4049),i=class{#l;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,s.gn)(this.gcTime)&&(this.#l=n.zs.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(s.S$?1/0:3e5))}clearGcTimeout(){this.#l&&(n.zs.clearTimeout(this.#l),this.#l=void 0)}}},2454:(e,t,r)=>{r.d(t,{I:()=>y});var n=r(6195),s=r(4268),i=r(1668),o=r(8445),a=r(3515),l=r(4049),u=r(7126),c=class extends o.Q{constructor(e,t){super(),this.options=t,this.#n=e,this.#u=null,this.#c=(0,a.T)(),this.bindMethods(),this.setOptions(t)}#n;#h=void 0;#d=void 0;#A=void 0;#f;#p;#c;#u;#B;#C;#m;#b;#y;#g;#v=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#h.addObserver(this),h(this.#h,this.options)?this.#E():this.updateResult(),this.#F())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return d(this.#h,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return d(this.#h,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#M(),this.#R(),this.#h.removeObserver(this)}setOptions(e){let t=this.options,r=this.#h;if(this.options=this.#n.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,l.Eh)(this.options.enabled,this.#h))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#I(),this.#h.setOptions(this.options),t._defaulted&&!(0,l.f8)(this.options,t)&&this.#n.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#h,observer:this});let n=this.hasListeners();n&&A(this.#h,r,this.options,t)&&this.#E(),this.updateResult(),n&&(this.#h!==r||(0,l.Eh)(this.options.enabled,this.#h)!==(0,l.Eh)(t.enabled,this.#h)||(0,l.d2)(this.options.staleTime,this.#h)!==(0,l.d2)(t.staleTime,this.#h))&&this.#G();let s=this.#D();n&&(this.#h!==r||(0,l.Eh)(this.options.enabled,this.#h)!==(0,l.Eh)(t.enabled,this.#h)||s!==this.#g)&&this.#T(s)}getOptimisticResult(e){var t,r;let n=this.#n.getQueryCache().build(this.#n,e),s=this.createResult(n,e);return t=this,r=s,(0,l.f8)(t.getCurrentResult(),r)||(this.#A=s,this.#p=this.options,this.#f=this.#h.state),s}getCurrentResult(){return this.#A}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),t?.(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==this.#c.status||this.#c.reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){this.#v.add(e)}getCurrentQuery(){return this.#h}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#n.defaultQueryOptions(e),r=this.#n.getQueryCache().build(this.#n,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#E({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#A))}#E(e){this.#I();let t=this.#h.fetch(this.options,e);return e?.throwOnError||(t=t.catch(l.lQ)),t}#G(){this.#M();let e=(0,l.d2)(this.options.staleTime,this.#h);if(l.S$||this.#A.isStale||!(0,l.gn)(e))return;let t=(0,l.j3)(this.#A.dataUpdatedAt,e);this.#b=u.zs.setTimeout(()=>{this.#A.isStale||this.updateResult()},t+1)}#D(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#h):this.options.refetchInterval)??!1}#T(e){this.#R(),this.#g=e,!l.S$&&!1!==(0,l.Eh)(this.options.enabled,this.#h)&&(0,l.gn)(this.#g)&&0!==this.#g&&(this.#y=u.zs.setInterval(()=>{(this.options.refetchIntervalInBackground||n.m.isFocused())&&this.#E()},this.#g))}#F(){this.#G(),this.#T(this.#D())}#M(){this.#b&&(u.zs.clearTimeout(this.#b),this.#b=void 0)}#R(){this.#y&&(u.zs.clearInterval(this.#y),this.#y=void 0)}createResult(e,t){let r,n=this.#h,s=this.options,o=this.#A,u=this.#f,c=this.#p,d=e!==n?e.state:this.#d,{state:p}=e,B={...p},C=!1;if(t._optimisticResults){let r=this.hasListeners(),o=!r&&h(e,t),a=r&&A(e,n,t,s);(o||a)&&(B={...B,...(0,i.k)(p.data,e.options)}),"isRestoring"===t._optimisticResults&&(B.fetchStatus="idle")}let{error:m,errorUpdatedAt:b,status:y}=B;r=B.data;let g=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===y){let e;o?.isPlaceholderData&&t.placeholderData===c?.placeholderData?(e=o.data,g=!0):e="function"==typeof t.placeholderData?t.placeholderData(this.#m?.state.data,this.#m):t.placeholderData,void 0!==e&&(y="success",r=(0,l.pl)(o?.data,e,t),C=!0)}if(t.select&&void 0!==r&&!g)if(o&&r===u?.data&&t.select===this.#B)r=this.#C;else try{this.#B=t.select,r=t.select(r),r=(0,l.pl)(o?.data,r,t),this.#C=r,this.#u=null}catch(e){this.#u=e}this.#u&&(m=this.#u,r=this.#C,b=Date.now(),y="error");let v="fetching"===B.fetchStatus,E="pending"===y,F="error"===y,M=E&&v,R=void 0!==r,I={status:y,fetchStatus:B.fetchStatus,isPending:E,isSuccess:"success"===y,isError:F,isInitialLoading:M,isLoading:M,data:r,dataUpdatedAt:B.dataUpdatedAt,error:m,errorUpdatedAt:b,failureCount:B.fetchFailureCount,failureReason:B.fetchFailureReason,errorUpdateCount:B.errorUpdateCount,isFetched:B.dataUpdateCount>0||B.errorUpdateCount>0,isFetchedAfterMount:B.dataUpdateCount>d.dataUpdateCount||B.errorUpdateCount>d.errorUpdateCount,isFetching:v,isRefetching:v&&!E,isLoadingError:F&&!R,isPaused:"paused"===B.fetchStatus,isPlaceholderData:C,isRefetchError:F&&R,isStale:f(e,t),refetch:this.refetch,promise:this.#c,isEnabled:!1!==(0,l.Eh)(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=e=>{"error"===I.status?e.reject(I.error):void 0!==I.data&&e.resolve(I.data)},r=()=>{t(this.#c=I.promise=(0,a.T)())},s=this.#c;switch(s.status){case"pending":e.queryHash===n.queryHash&&t(s);break;case"fulfilled":("error"===I.status||I.data!==s.value)&&r();break;case"rejected":("error"!==I.status||I.error!==s.reason)&&r()}}return I}updateResult(){let e=this.#A,t=this.createResult(this.#h,this.options);if(this.#f=this.#h.state,this.#p=this.options,void 0!==this.#f.data&&(this.#m=this.#h),(0,l.f8)(t,e))return;this.#A=t;let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!this.#v.size)return!0;let n=new Set(r??this.#v);return this.options.throwOnError&&n.add("error"),Object.keys(this.#A).some(t=>this.#A[t]!==e[t]&&n.has(t))};this.#H({listeners:r()})}#I(){let e=this.#n.getQueryCache().build(this.#n,this.options);if(e===this.#h)return;let t=this.#h;this.#h=e,this.#d=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#F()}#H(e){s.jG.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#A)}),this.#n.getQueryCache().notify({query:this.#h,type:"observerResultsUpdated"})})}};function h(e,t){return!1!==(0,l.Eh)(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&d(e,t,t.refetchOnMount)}function d(e,t,r){if(!1!==(0,l.Eh)(t.enabled,e)&&"static"!==(0,l.d2)(t.staleTime,e)){let n="function"==typeof r?r(e):r;return"always"===n||!1!==n&&f(e,t)}return!1}function A(e,t,r,n){return(e!==t||!1===(0,l.Eh)(n.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&f(e,r)}function f(e,t){return!1!==(0,l.Eh)(t.enabled,e)&&e.isStaleByTime((0,l.d2)(t.staleTime,e))}var p=r(2115),B=r(9776);r(5155);var C=p.createContext(function(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}()),m=p.createContext(!1);m.Provider;var b=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function y(e,t){return function(e,t,r){var n,i,o,a,u;let c=p.useContext(m),h=p.useContext(C),d=(0,B.jE)(r),A=d.defaultQueryOptions(e);if(null==(i=d.getDefaultOptions().queries)||null==(n=i._experimental_beforeQuery)||n.call(i,A),A._optimisticResults=c?"isRestoring":"optimistic",A.suspense){let e=e=>"static"===e?e:Math.max(e??1e3,1e3),t=A.staleTime;A.staleTime="function"==typeof t?(...r)=>e(t(...r)):e(t),"number"==typeof A.gcTime&&(A.gcTime=Math.max(A.gcTime,1e3))}(A.suspense||A.throwOnError||A.experimental_prefetchInRender)&&!h.isReset()&&(A.retryOnMount=!1),p.useEffect(()=>{h.clearReset()},[h]);let f=!d.getQueryCache().get(A.queryHash),[y]=p.useState(()=>new t(d,A)),g=y.getOptimisticResult(A),v=!c&&!1!==e.subscribed;if(p.useSyncExternalStore(p.useCallback(e=>{let t=v?y.subscribe(s.jG.batchCalls(e)):l.lQ;return y.updateResult(),t},[y,v]),()=>y.getCurrentResult(),()=>y.getCurrentResult()),p.useEffect(()=>{y.setOptions(A)},[A,y]),A?.suspense&&g.isPending)throw b(A,y,h);if((e=>{let{result:t,errorResetBoundary:r,throwOnError:n,query:s,suspense:i}=e;return t.isError&&!r.isReset()&&!t.isFetching&&s&&(i&&void 0===t.data||(0,l.GU)(n,[t.error,s]))})({result:g,errorResetBoundary:h,throwOnError:A.throwOnError,query:d.getQueryCache().get(A.queryHash),suspense:A.suspense}))throw g.error;if(null==(a=d.getDefaultOptions().queries)||null==(o=a._experimental_afterQuery)||o.call(a,A,g),A.experimental_prefetchInRender&&!l.S$&&g.isLoading&&g.isFetching&&!c){let e=f?b(A,y,h):null==(u=d.getQueryCache().get(A.queryHash))?void 0:u.promise;null==e||e.catch(l.lQ).finally(()=>{y.updateResult()})}return A.notifyOnChangeProps?g:y.trackResult(g)}(e,c,t)}},3049:(e,t,r)=>{r.d(t,{II:()=>c,cc:()=>u,v_:()=>l});var n=r(6195),s=r(3122),i=r(3515),o=r(4049);function a(e){return Math.min(1e3*2**e,3e4)}function l(e){return(e??"online")!=="online"||s.t.isOnline()}var u=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function c(e){let t,r=!1,c=0,h=(0,i.T)(),d=()=>n.m.isFocused()&&("always"===e.networkMode||s.t.isOnline())&&e.canRun(),A=()=>l(e.networkMode)&&e.canRun(),f=e=>{"pending"===h.status&&(t?.(),h.resolve(e))},p=e=>{"pending"===h.status&&(t?.(),h.reject(e))},B=()=>new Promise(r=>{t=e=>{("pending"!==h.status||d())&&r(e)},e.onPause?.()}).then(()=>{t=void 0,"pending"===h.status&&e.onContinue?.()}),C=()=>{let t;if("pending"!==h.status)return;let n=0===c?e.initialPromise:void 0;try{t=n??e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(f).catch(t=>{if("pending"!==h.status)return;let n=e.retry??3*!o.S$,s=e.retryDelay??a,i="function"==typeof s?s(c,t):s,l=!0===n||"number"==typeof n&&cd()?void 0:B()).then(()=>{r?p(t):C()})})};return{promise:h,status:()=>h.status,cancel:t=>{if("pending"===h.status){let r=new u(t);p(r),e.onCancel?.(r)}},continue:()=>(t?.(),h),cancelRetry:()=>{r=!0},continueRetry:()=>{r=!1},canStart:A,start:()=>(A()?C():B().then(C),h)}}},3122:(e,t,r)=>{r.d(t,{t:()=>i});var n=r(8445),s=r(4049),i=new class extends n.Q{#w=!0;#S;#O;constructor(){super(),this.#O=e=>{if(!s.S$&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#S||this.setEventListener(this.#O)}onUnsubscribe(){this.hasListeners()||(this.#S?.(),this.#S=void 0)}setEventListener(e){this.#O=e,this.#S?.(),this.#S=e(this.setOnline.bind(this))}setOnline(e){this.#w!==e&&(this.#w=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#w}}},3515:(e,t,r)=>{r.d(t,{T:()=>n});function n(){let e,t,r=new Promise((r,n)=>{e=r,t=n});function n(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{n({status:"fulfilled",value:t}),e(t)},r.reject=e=>{n({status:"rejected",reason:e}),t(e)},r}},3522:(e,t,r)=>{r.d(t,{E:()=>C});var n=r(4049),s=r(1668),i=r(4268),o=r(8445),a=class extends o.Q{constructor(e={}){super(),this.config=e,this.#P=new Map}#P;build(e,t,r){let i=t.queryKey,o=t.queryHash??(0,n.F$)(i,t),a=this.get(o);return a||(a=new s.X({client:e,queryKey:i,queryHash:o,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(i)}),this.add(a)),a}add(e){this.#P.has(e.queryHash)||(this.#P.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#P.get(e.queryHash);t&&(e.destroy(),t===e&&this.#P.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){i.jG.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#P.get(e)}getAll(){return[...this.#P.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>(0,n.MK)(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>(0,n.MK)(e,t)):t}notify(e){i.jG.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){i.jG.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){i.jG.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},l=r(2162),u=r(3049),c=class extends l.k{#n;#x;#J;#s;constructor(e){super(),this.#n=e.client,this.mutationId=e.mutationId,this.#J=e.mutationCache,this.#x=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#x.includes(e)||(this.#x.push(e),this.clearGcTimeout(),this.#J.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#x=this.#x.filter(t=>t!==e),this.scheduleGc(),this.#J.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#x.length||("pending"===this.state.status?this.scheduleGc():this.#J.remove(this))}continue(){return this.#s?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#a({type:"continue"})},r={client:this.#n,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#s=(0,u.II)({fn:()=>this.options.mutationFn?this.options.mutationFn(e,r):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#a({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#a({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#J.canRun(this)});let n="pending"===this.state.status,s=!this.#s.canStart();try{if(n)t();else{this.#a({type:"pending",variables:e,isPaused:s}),await this.#J.config.onMutate?.(e,this,r);let t=await this.options.onMutate?.(e,r);t!==this.state.context&&this.#a({type:"pending",context:t,variables:e,isPaused:s})}let i=await this.#s.start();return await this.#J.config.onSuccess?.(i,e,this.state.context,this,r),await this.options.onSuccess?.(i,e,this.state.context,r),await this.#J.config.onSettled?.(i,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(i,null,e,this.state.context,r),this.#a({type:"success",data:i}),i}catch(t){try{throw await this.#J.config.onError?.(t,e,this.state.context,this,r),await this.options.onError?.(t,e,this.state.context,r),await this.#J.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(void 0,t,e,this.state.context,r),t}finally{this.#a({type:"error",error:t})}}finally{this.#J.runNext(this)}}#a(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),i.jG.batch(()=>{this.#x.forEach(t=>{t.onMutationUpdate(e)}),this.#J.notify({mutation:this,type:"updated",action:e})})}},h=class extends o.Q{constructor(e={}){super(),this.config=e,this.#L=new Set,this.#U=new Map,this.#Q=0}#L;#U;#Q;build(e,t,r){let n=new c({client:e,mutationCache:this,mutationId:++this.#Q,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){this.#L.add(e);let t=d(e);if("string"==typeof t){let r=this.#U.get(t);r?r.push(e):this.#U.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#L.delete(e)){let t=d(e);if("string"==typeof t){let r=this.#U.get(t);if(r)if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&this.#U.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=d(e);if("string"!=typeof t)return!0;{let r=this.#U.get(t),n=r?.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=d(e);if("string"!=typeof t)return Promise.resolve();{let r=this.#U.get(t)?.find(t=>t!==e&&t.state.isPaused);return r?.continue()??Promise.resolve()}}clear(){i.jG.batch(()=>{this.#L.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#L.clear(),this.#U.clear()})}getAll(){return Array.from(this.#L)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>(0,n.nJ)(t,e))}findAll(e={}){return this.getAll().filter(t=>(0,n.nJ)(e,t))}notify(e){i.jG.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return i.jG.batch(()=>Promise.all(e.map(e=>e.continue().catch(n.lQ))))}};function d(e){return e.options.scope?.id}var A=r(6195),f=r(3122);function p(e){return{onFetch:(t,r)=>{let s=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,o=t.state.data?.pages||[],a=t.state.data?.pageParams||[],l={pages:[],pageParams:[]},u=0,c=async()=>{let r=!1,c=(0,n.ZM)(t.options,t.fetchOptions),h=async(e,s,i)=>{if(r)return Promise.reject();if(null==s&&e.pages.length)return Promise.resolve(e);let o=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:s,direction:i?"backward":"forward",meta:t.options.meta};return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(t.signal.aborted?r=!0:t.signal.addEventListener("abort",()=>{r=!0}),t.signal)}),e})(),a=await c(o),{maxPages:l}=t.options,u=i?n.ZZ:n.y9;return{pages:u(e.pages,a,l),pageParams:u(e.pageParams,s,l)}};if(i&&o.length){let e="backward"===i,t={pages:o,pageParams:a},r=(e?function(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}:B)(s,t);l=await h(t,r,e)}else{let t=e??o.length;do{let e=0===u?a[0]??s.initialPageParam:B(s,l);if(u>0&&null==e)break;l=await h(l,e),u++}while(ut.options.persister?.(c,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r):t.fetchFn=c}}}function B(e,{pages:t,pageParams:r}){let n=t.length-1;return t.length>0?e.getNextPageParam(t[n],t,r[n],r):void 0}var C=class{#j;#J;#i;#K;#k;#_;#N;#X;constructor(e={}){this.#j=e.queryCache||new a,this.#J=e.mutationCache||new h,this.#i=e.defaultOptions||{},this.#K=new Map,this.#k=new Map,this.#_=0}mount(){this.#_++,1===this.#_&&(this.#N=A.m.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#j.onFocus())}),this.#X=f.t.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#j.onOnline())}))}unmount(){this.#_--,0===this.#_&&(this.#N?.(),this.#N=void 0,this.#X?.(),this.#X=void 0)}isFetching(e){return this.#j.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#J.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#j.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),r=this.#j.build(this,t),s=r.state.data;return void 0===s?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime((0,n.d2)(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(s))}getQueriesData(e){return this.#j.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,r){let s=this.defaultQueryOptions({queryKey:e}),i=this.#j.get(s.queryHash),o=i?.state.data,a=(0,n.Zw)(t,o);if(void 0!==a)return this.#j.build(this,s).setData(a,{...r,manual:!0})}setQueriesData(e,t,r){return i.jG.batch(()=>this.#j.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#j.get(t.queryHash)?.state}removeQueries(e){let t=this.#j;i.jG.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=this.#j;return i.jG.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){let r={revert:!0,...t};return Promise.all(i.jG.batch(()=>this.#j.findAll(e).map(e=>e.cancel(r)))).then(n.lQ).catch(n.lQ)}invalidateQueries(e,t={}){return i.jG.batch(()=>(this.#j.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,t={}){let r={...t,cancelRefetch:t.cancelRefetch??!0};return Promise.all(i.jG.batch(()=>this.#j.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,r);return r.throwOnError||(t=t.catch(n.lQ)),"paused"===e.state.fetchStatus?Promise.resolve():t}))).then(n.lQ)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let r=this.#j.build(this,t);return r.isStaleByTime((0,n.d2)(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(n.lQ).catch(n.lQ)}fetchInfiniteQuery(e){return e.behavior=p(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(n.lQ).catch(n.lQ)}ensureInfiniteQueryData(e){return e.behavior=p(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return f.t.isOnline()?this.#J.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#j}getMutationCache(){return this.#J}getDefaultOptions(){return this.#i}setDefaultOptions(e){this.#i=e}setQueryDefaults(e,t){this.#K.set((0,n.EN)(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#K.values()],r={};return t.forEach(t=>{(0,n.Cp)(e,t.queryKey)&&Object.assign(r,t.defaultOptions)}),r}setMutationDefaults(e,t){this.#k.set((0,n.EN)(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#k.values()],r={};return t.forEach(t=>{(0,n.Cp)(e,t.mutationKey)&&Object.assign(r,t.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#i.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=(0,n.F$)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===n.hT&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#i.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#j.clear(),this.#J.clear()}}},3617:(e,t,r)=>{r.d(t,{o:()=>s});var n=r(5339);class s{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}new n.qUd(-1,1,1,-1,0,1);class i extends n.LoY{constructor(){super(),this.setAttribute("position",new n.qtW([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new n.qtW([0,2,0,0,2,0],2))}}new i},3654:(e,t,r)=>{var n=r(2115),s=r(4806),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=s.useSyncExternalStore,a=n.useRef,l=n.useEffect,u=n.useMemo,c=n.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,r,n,s){var h=a(null);if(null===h.current){var d={hasValue:!1,value:null};h.current=d}else d=h.current;var A=o(e,(h=u(function(){function e(e){if(!l){if(l=!0,o=e,e=n(e),void 0!==s&&d.hasValue){var t=d.value;if(s(t,e))return a=t}return a=e}if(t=a,i(o,e))return t;var r=n(e);return void 0!==s&&s(t,r)?(o=e,t):(o=e,a=r)}var o,a,l=!1,u=void 0===r?null:r;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,r,n,s]))[0],h[1]);return l(function(){d.hasValue=!0,d.value=A},[A]),c(A),A}},3808:(e,t,r)=>{r.d(t,{c:()=>i}),r(2115);var n=r(5339),s=r(99);function i(e,{path:t}){let[r]=(0,s.G)(n.ScU,[e],e=>e.setPath(t));return r}i.preload=(e,{path:t})=>s.G.preload(n.ScU,[e],e=>e.setPath(t))},4004:(e,t)=>{function r(e,t){var r=e.length;for(e.push(t);0>>1,s=e[n];if(0>>1;ni(l,r))ui(c,l)?(e[n]=c,e[u]=r,n=u):(e[n]=l,e[a]=r,n=a);else if(ui(c,r))e[n]=c,e[u]=r,n=u;else break}}return t}function i(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,a=performance;t.unstable_now=function(){return a.now()}}else{var l=Date,u=l.now();t.unstable_now=function(){return l.now()-u}}var c=[],h=[],d=1,A=null,f=3,p=!1,B=!1,C=!1,m="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,y="undefined"!=typeof setImmediate?setImmediate:null;function g(e){for(var t=n(h);null!==t;){if(null===t.callback)s(h);else if(t.startTime<=e)s(h),t.sortIndex=t.expirationTime,r(c,t);else break;t=n(h)}}function v(e){if(C=!1,g(e),!B)if(null!==n(c))B=!0,H();else{var t=n(h);null!==t&&w(v,t.startTime-e)}}var E=!1,F=-1,M=5,R=-1;function I(){return!(t.unstable_now()-Re&&I());){var a=A.callback;if("function"==typeof a){A.callback=null,f=A.priorityLevel;var l=a(A.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof l){A.callback=l,g(e),r=!0;break t}A===n(c)&&s(c),g(e)}else s(c);A=n(c)}if(null!==A)r=!0;else{var u=n(h);null!==u&&w(v,u.startTime-e),r=!1}}break e}finally{A=null,f=i,p=!1}}}finally{r?o():E=!1}}}if("function"==typeof y)o=function(){y(G)};else if("undefined"!=typeof MessageChannel){var D=new MessageChannel,T=D.port2;D.port1.onmessage=G,o=function(){T.postMessage(null)}}else o=function(){m(G,0)};function H(){E||(E=!0,o())}function w(e,r){F=m(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){B||p||(B=!0,H())},t.unstable_forceFrameRate=function(e){0>e||125o?(e.sortIndex=i,r(h,e),null===n(c)&&e===n(h)&&(C?(b(F),F=-1):C=!0,w(v,i-o))):(e.sortIndex=a,r(c,e),B||p||(B=!0,H())),e},t.unstable_shouldYield=I,t.unstable_wrapCallback=function(e){var t=f;return function(){var r=f;f=t;try{return e.apply(this,arguments)}finally{f=r}}}},4049:(e,t,r)=>{r.d(t,{Cp:()=>p,EN:()=>f,Eh:()=>c,F$:()=>A,GU:()=>I,MK:()=>h,S$:()=>s,ZM:()=>R,ZZ:()=>F,Zw:()=>o,d2:()=>u,f8:()=>C,gn:()=>a,hT:()=>M,j3:()=>l,lQ:()=>i,nJ:()=>d,pl:()=>v,y9:()=>E,yy:()=>g});var n=r(7126),s="undefined"==typeof window||"Deno"in globalThis;function i(){}function o(e,t){return"function"==typeof e?e(t):e}function a(e){return"number"==typeof e&&e>=0&&e!==1/0}function l(e,t){return Math.max(e+(t||0)-Date.now(),0)}function u(e,t){return"function"==typeof e?e(t):e}function c(e,t){return"function"==typeof e?e(t):e}function h(e,t){let{type:r="all",exact:n,fetchStatus:s,predicate:i,queryKey:o,stale:a}=e;if(o){if(n){if(t.queryHash!==A(o,t.options))return!1}else if(!p(t.queryKey,o))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof a||t.isStale()===a)&&(!s||s===t.state.fetchStatus)&&(!i||!!i(t))}function d(e,t){let{exact:r,status:n,predicate:s,mutationKey:i}=e;if(i){if(!t.options.mutationKey)return!1;if(r){if(f(t.options.mutationKey)!==f(i))return!1}else if(!p(t.options.mutationKey,i))return!1}return(!n||t.state.status===n)&&(!s||!!s(t))}function A(e,t){return(t?.queryKeyHashFn||f)(e)}function f(e){return JSON.stringify(e,(e,t)=>b(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function p(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>p(e[r],t[r]))}var B=Object.prototype.hasOwnProperty;function C(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}function m(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function b(e){if(!y(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!y(r)&&!!r.hasOwnProperty("isPrototypeOf")&&Object.getPrototypeOf(e)===Object.prototype}function y(e){return"[object Object]"===Object.prototype.toString.call(e)}function g(e){return new Promise(t=>{n.zs.setTimeout(t,e)})}function v(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?function e(t,r){if(t===r)return t;let n=m(t)&&m(r);if(!n&&!(b(t)&&b(r)))return r;let s=(n?t:Object.keys(t)).length,i=n?r:Object.keys(r),o=i.length,a=n?Array(o):{},l=0;for(let u=0;ur?n.slice(1):n}function F(e,t,r=0){let n=[t,...e];return r&&n.length>r?n.slice(0,-1):n}var M=Symbol();function R(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==M?e.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`))}function I(e,t){return"function"==typeof e?e(...t):!!e}},4268:(e,t,r)=>{r.d(t,{jG:()=>s});var n=r(7126).Zq,s=function(){let e=[],t=0,r=e=>{e()},s=e=>{e()},i=n,o=n=>{t?e.push(n):i(()=>{r(n)})};return{batch:n=>{let o;t++;try{o=n()}finally{--t||(()=>{let t=e;e=[],t.length&&i(()=>{s(()=>{t.forEach(e=>{r(e)})})})})()}return o},batchCalls:e=>(...t)=>{o(()=>{e(...t)})},schedule:o,setNotifyFunction:e=>{r=e},setBatchNotifyFunction:e=>{s=e},setScheduler:e=>{i=e}}}()},4735:(e,t,r)=>{r.d(t,{Af:()=>a,Nz:()=>s,u5:()=>l,y3:()=>h});var n=r(2115);function s(e,t,r){if(!e)return;if(!0===r(e))return e;let n=t?e.return:e.child;for(;n;){let e=s(n,t,r);if(e)return e;n=t?null:n.sibling}}function i(e){try{return Object.defineProperties(e,{_currentRenderer:{get:()=>null,set(){}},_currentRenderer2:{get:()=>null,set(){}}})}catch(t){return e}}(()=>{var e,t;return"undefined"!=typeof window&&((null==(e=window.document)?void 0:e.createElement)||(null==(t=window.navigator)?void 0:t.product)==="ReactNative")})()?n.useLayoutEffect:n.useEffect;let o=i(n.createContext(null));class a extends n.Component{render(){return n.createElement(o.Provider,{value:this._reactInternals},this.props.children)}}function l(){let e=n.useContext(o);if(null===e)throw Error("its-fine: useFiber must be called within a !");let t=n.useId();return n.useMemo(()=>{for(let r of[e,null==e?void 0:e.alternate]){if(!r)continue;let e=s(r,!1,e=>{let r=e.memoizedState;for(;r;){if(r.memoizedState===t)return!0;r=r.next}});if(e)return e}},[e,t])}let u=Symbol.for("react.context"),c=e=>null!==e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===u;function h(){let e=function(){let e=l(),[t]=n.useState(()=>new Map);t.clear();let r=e;for(;r;){let e=r.type;c(e)&&e!==o&&!t.has(e)&&t.set(e,n.use(i(e))),r=r.return}return t}();return n.useMemo(()=>Array.from(e.keys()).reduce((t,r)=>s=>n.createElement(t,null,n.createElement(r.Provider,{...s,value:e.get(r)})),e=>n.createElement(a,{...e})),[e])}},4806:(e,t,r)=>{e.exports=r(125)},4943:(e,t,r)=>{e.exports=r(4004)},5951:(e,t,r)=>{r.d(t,{zo:()=>a});var n=r(2115),s=r(5339),i=r(99);let o=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function a(e,t){let r=(0,i.C)(e=>e.gl),a=(0,i.G)(s.Tap,o(e)?Object.values(e):e);return(0,n.useLayoutEffect)(()=>{null==t||t(a)},[t]),(0,n.useEffect)(()=>{if("initTexture"in r){let e=[];Array.isArray(a)?e=a:a instanceof s.gPd?e=[a]:o(a)&&(e=Object.values(a)),e.forEach(e=>{e instanceof s.gPd&&r.initTexture(e)})}},[r,a]),(0,n.useMemo)(()=>{if(!o(e))return a;{let t={},r=0;for(let n in e)t[n]=a[r++];return t}},[e,a])}a.preload=e=>i.G.preload(s.Tap,e),a.clear=e=>i.G.clear(s.Tap,e)},6195:(e,t,r)=>{r.d(t,{m:()=>i});var n=r(8445),s=r(4049),i=new class extends n.Q{#Y;#S;#O;constructor(){super(),this.#O=e=>{if(!s.S$&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#S||this.setEventListener(this.#O)}onUnsubscribe(){this.hasListeners()||(this.#S?.(),this.#S=void 0)}setEventListener(e){this.#O=e,this.#S?.(),this.#S=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){this.#Y!==e&&(this.#Y=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#Y?this.#Y:globalThis.document?.visibilityState!=="hidden"}}},6362:(e,t,r)=>{e.exports=r(979)},7126:(e,t,r)=>{r.d(t,{Zq:()=>i,zs:()=>s});var n={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},s=new class{#q=n;#Z=!1;setTimeoutProvider(e){this.#q=e}setTimeout(e,t){return this.#q.setTimeout(e,t)}clearTimeout(e){this.#q.clearTimeout(e)}setInterval(e,t){return this.#q.setInterval(e,t)}clearInterval(e){this.#q.clearInterval(e)}};function i(e){setTimeout(e,0)}},8254:(e,t,r)=>{function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;ta});var s=r(2115),i=r(99),o=r(5339);let a=s.forwardRef(({envMap:e,resolution:t=256,frames:r=1/0,makeDefault:a,children:l,...u},c)=>{let h=(0,i.C)(({set:e})=>e),d=(0,i.C)(({camera:e})=>e),A=(0,i.C)(({size:e})=>e),f=s.useRef(null);s.useImperativeHandle(c,()=>f.current,[]);let p=s.useRef(null),B=function(e,t,r){let n=(0,i.C)(e=>e.size),a=(0,i.C)(e=>e.viewport),l="number"==typeof e?e:n.width*a.dpr,u=n.height*a.dpr,c=("number"==typeof e?void 0:e)||{},{samples:h=0,depth:d,...A}=c,f=null!=d?d:c.depthBuffer,p=s.useMemo(()=>{let e=new o.nWS(l,u,{minFilter:o.k6q,magFilter:o.k6q,type:o.ix0,...A});return f&&(e.depthTexture=new o.VCu(l,u,o.RQf)),e.samples=h,e},[]);return s.useLayoutEffect(()=>{p.setSize(l,u),h&&(p.samples=h)},[h,p,l,u]),s.useEffect(()=>()=>p.dispose(),[]),p}(t);s.useLayoutEffect(()=>{u.manual||(f.current.aspect=A.width/A.height)},[A,u]),s.useLayoutEffect(()=>{f.current.updateProjectionMatrix()});let C=0,m=null,b="function"==typeof l;return(0,i.D)(t=>{b&&(r===1/0||C{if(a)return h(()=>({camera:f.current})),()=>h(()=>({camera:d}))},[f,a,h]),s.createElement(s.Fragment,null,s.createElement("perspectiveCamera",n({ref:f},u),!b&&l),s.createElement("group",{ref:p},b&&l(B.texture)))})},8381:(e,t,r)=>{r.d(t,{s0:()=>b,jW:()=>g});var n=r(5155),s=r(2115),i=r(5339),o=r(99),a=r(3303);function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}new i.I9Y,new i.I9Y;function u(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}var c=function e(t,r,n){var s=this;u(this,e),l(this,"dot2",function(e,t){return s.x*e+s.y*t}),l(this,"dot3",function(e,t,r){return s.x*e+s.y*t+s.z*r}),this.x=t,this.y=r,this.z=n},h=[new c(1,1,0),new c(-1,1,0),new c(1,-1,0),new c(-1,-1,0),new c(1,0,1),new c(-1,0,1),new c(1,0,-1),new c(-1,0,-1),new c(0,1,1),new c(0,-1,1),new c(0,1,-1),new c(0,-1,-1)],d=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],A=Array(512),f=Array(512);!function(e){e>0&&e<1&&(e*=65536),(e=Math.floor(e))<256&&(e|=e<<8);for(var t,r=0;r<256;r++)t=1&r?d[r]^255&e:d[r]^e>>8&255,A[r]=A[r+256]=t,f[r]=f[r+256]=h[t%12]}(0);function p(e){var t=function(e){if("number"==typeof e)e=Math.abs(e);else if("string"==typeof e){var t=e;e=0;for(var r=0;r(2&e.getAttributes())==2,b=(0,s.memo)((0,s.forwardRef)(({children:e,camera:t,scene:r,resolutionScale:l,enabled:u=!0,renderPriority:c=1,autoClear:h=!0,depthBuffer:d,enableNormalPass:A,stencilBuffer:f,multisampling:p=8,frameBufferType:B=i.ix0},b)=>{let{gl:y,scene:g,camera:v,size:E}=(0,o.C)(),F=r||g,M=t||v,[R,I,G]=(0,s.useMemo)(()=>{let e=new a.s0(y,{depthBuffer:d,stencilBuffer:f,multisampling:p,frameBufferType:B});e.addPass(new a.AH(F,M));let t=null,r=null;return A&&((r=new a.Xe(F,M)).enabled=!1,e.addPass(r),void 0!==l&&((t=new a.SP({normalBuffer:r.texture,resolutionScale:l})).enabled=!1,e.addPass(t))),[e,r,t]},[M,y,d,f,p,B,F,A,l]);(0,s.useEffect)(()=>R?.setSize(E.width,E.height),[R,E]),(0,o.D)((e,t)=>{if(u){let e=y.autoClear;y.autoClear=h,f&&!h&&y.clearStencil(),R.render(t),y.autoClear=e}},u?c:0);let D=(0,s.useRef)(null);(0,s.useLayoutEffect)(()=>{let e=[],t=D.current.__r3f;if(t&&R){let r=t.children;for(let t=0;t{for(let t of e)R?.removePass(t);I&&(I.enabled=!1),G&&(G.enabled=!1)}},[R,e,M,I,G]),(0,s.useEffect)(()=>{let e=y.toneMapping;return y.toneMapping=i.y_p,()=>{y.toneMapping=e}},[y]);let T=(0,s.useMemo)(()=>({composer:R,normalPass:I,downSamplingPass:G,resolutionScale:l,camera:M,scene:F}),[R,I,G,l,M,F]);return(0,s.useImperativeHandle)(b,()=>R,[R]),(0,n.jsx)(C.Provider,{value:T,children:(0,n.jsx)("group",{ref:D,children:e})})}));a.Mj,a.bv,a.i,a.hH;var y=(e=>(e[e.Linear=0]="Linear",e[e.Radial=1]="Radial",e[e.MirroredLinear=2]="MirroredLinear",e))(y||{});a.Mj,a.To;a.Mj;a.Mj;a.Mj;let g=(0,s.forwardRef)(({halfRes:e,screenSpaceRadius:t,quality:r,depthAwareUpsampling:i=!0,aoRadius:a=5,aoSamples:l=16,denoiseSamples:u=4,denoiseRadius:c=12,distanceFalloff:h=1,intensity:d=1,color:A,renderMode:f=0},p)=>{let{camera:C,scene:m}=(0,o.C)(),b=(0,s.useMemo)(()=>new B.ae(m,C),[C,m]);return(0,s.useLayoutEffect)(()=>{(0,o.s)(b.configuration,{color:A,aoRadius:a,distanceFalloff:h,intensity:d,aoSamples:l,denoiseSamples:u,denoiseRadius:c,screenSpaceRadius:t,renderMode:f,halfRes:e,depthAwareUpsampling:i})},[t,A,a,h,d,l,u,c,f,e,i,b]),(0,s.useLayoutEffect)(()=>{r&&b.setQualityMode(r.charAt(0).toUpperCase()+r.slice(1))},[b,r]),(0,n.jsx)("primitive",{ref:p,object:b})})},8445:(e,t,r)=>{r.d(t,{Q:()=>n});var n=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},8807:(e,t,r)=>{e.exports=r(7719)},8828:(e,t,r)=>{e.exports=r(3654)},8870:(e,t,r)=>{e.exports=r(1975)},8992:(e,t,r)=>{r.d(t,{tH:()=>o});var n=r(2115);let s=(0,n.createContext)(null),i={didCatch:!1,error:null};class o extends n.Component{static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){let{error:e}=this.state;if(null!==e){for(var t,r,n=arguments.length,s=Array(n),o=0;o0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)){var s,o;null==(s=(o=this.props).onReset)||s.call(o,{next:n,prev:e.resetKeys,reason:"keys"}),this.setState(i)}}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:i}=this.props,{didCatch:o,error:a}=this.state,l=e;if(o){let e={error:a,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)l=t(e);else if(r)l=(0,n.createElement)(r,e);else if(void 0!==i)l=i;else throw a}return(0,n.createElement)(s.Provider,{value:{didCatch:o,error:a,resetErrorBoundary:this.resetErrorBoundary}},l)}constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=i}}},9776:(e,t,r)=>{r.d(t,{Ht:()=>a,jE:()=>o});var n=r(2115),s=r(5155),i=n.createContext(void 0),o=e=>{let t=n.useContext(i);if(e)return e;if(!t)throw Error("No QueryClient set, use QueryClientProvider to set one");return t},a=e=>{let{client:t,children:r}=e;return n.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),(0,s.jsx)(i.Provider,{value:t,children:r})}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/323-245b617c6268e9ac.js b/docs/_next/static/chunks/323-245b617c6268e9ac.js deleted file mode 100644 index 38fdef3e..00000000 --- a/docs/_next/static/chunks/323-245b617c6268e9ac.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[323],{9323:(e,t,s)=>{s.d(t,{B:()=>i});var r=s(5339);function n(e,t){if(t===r.RJ4)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==r.rYR&&t!==r.O49)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let s=e.getIndex();if(null===s){let t=[],r=e.getAttribute("position");if(void 0===r)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e=2.0 are supported."));return}let c=new J(n,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===o[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}c.setExtensions(i),c.setPlugins(o),c.parse(s,r)}parseAsync(e,t){let s=this;return new Promise(function(r,n){s.parse(e,t,r,n)})}}function o(){let e={};return{get:function(t){return e[t]},add:function(t,s){e[t]=s},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let a={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class l{constructor(e){this.parser=e,this.name=a.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let s=0,r=t.length;s=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,n.source,i)}}class v{constructor(e){this.parser=e,this.name=a.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,s=this.parser,r=s.json,n=r.textures[e];if(!n.extensions||!n.extensions[t])return null;let i=n.extensions[t],o=r.images[i.source],a=s.textureLoader;if(o.uri){let e=s.options.manager.getHandler(o.uri);null!==e&&(a=e)}return s.loadTextureImage(e,i.source,a)}}class A{constructor(e){this.parser=e,this.name=a.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,s=this.parser,r=s.json,n=r.textures[e];if(!n.extensions||!n.extensions[t])return null;let i=n.extensions[t],o=r.images[i.source],a=s.textureLoader;if(o.uri){let e=s.options.manager.getHandler(o.uri);null!==e&&(a=e)}return s.loadTextureImage(e,i.source,a)}}class S{constructor(e){this.name=a.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,s=t.bufferViews[e];if(!s.extensions||!s.extensions[this.name])return null;{let e=s.extensions[this.name],r=this.parser.getDependency("buffer",e.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return r.then(function(t){let s=e.byteOffset||0,r=e.byteLength||0,i=e.count,o=e.byteStride,a=new Uint8Array(t,s,r);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(i,o,a,e.mode,e.filter).then(function(e){return e.buffer}):n.ready.then(function(){let t=new ArrayBuffer(i*o);return n.decodeGltfBuffer(new Uint8Array(t),i,o,a,e.mode,e.filter),t})})}}}class w{constructor(e){this.name=a.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,s=t.nodes[e];if(!s.extensions||!s.extensions[this.name]||void 0===s.mesh)return null;for(let e of t.meshes[s.mesh].primitives)if(e.mode!==H.TRIANGLES&&e.mode!==H.TRIANGLE_STRIP&&e.mode!==H.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=s.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),s=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of s){let t=new r.kn4,s=new r.Pq0,a=new r.PTz,l=new r.Pq0(1,1,1),u=new r.ZLX(e.geometry,e.material,n);for(let e=0;e-1)?e.match(/Firefox\/([0-9]+)\./)[1]:-1}"undefined"==typeof createImageBitmap||s&&n<17||i&&a<98?this.textureLoader=new r.Tap(this.options.manager):this.textureLoader=new r.Kzg(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new r.Y9S(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let s=this,r=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(t){let i={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:s,userData:{}};return V(n,i,r),X(i,r),Promise.all(s._invokeAll(function(e){return e.afterRoot&&e.afterRoot(i)})).then(function(){for(let e of i.scenes)e.updateMatrixWorld();e(i)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],s=this.json.meshes||[];for(let s=0,r=t.length;s{let s=this.associations.get(e);for(let[r,i]of(null!=s&&this.associations.set(t,s),e.children.entries()))n(i,t.children[r])};return n(s,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let s=0;s=2&&o.setY(t,d[e*l+1]),l>=3&&o.setZ(t,d[e*l+2]),l>=4&&o.setW(t,d[e*l+3]),l>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}o.normalized=p}return o})}loadTexture(e){let t=this.json,s=this.options,r=t.textures[e].source,n=t.images[r],i=this.textureLoader;if(n.uri){let e=s.manager.getHandler(n.uri);null!==e&&(i=e)}return this.loadTextureImage(e,r,i)}loadTextureImage(e,t,s){let n=this,i=this.json,o=i.textures[e],a=i.images[t],l=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[l])return this.textureCache[l];let u=this.loadImageSource(t,s).then(function(t){t.flipY=!1,t.name=o.name||a.name||"",""===t.name&&"string"==typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(t.name=a.uri);let s=(i.samplers||{})[o.sampler]||{};return t.magFilter=F[s.magFilter]||r.k6q,t.minFilter=F[s.minFilter]||r.$_I,t.wrapS=U[s.wrapS]||r.GJx,t.wrapT=U[s.wrapT]||r.GJx,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==r.hxR&&t.minFilter!==r.k6q,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[l]=u,u}loadImageSource(e,t){let s=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=s.images[e],o=self.URL||self.webkitURL,a=i.uri||"",l=!1;if(void 0!==i.bufferView)a=this.getDependency("bufferView",i.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:i.mimeType});return a=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let u=Promise.resolve(a).then(function(e){return new Promise(function(s,i){let o=s;!0===t.isImageBitmapLoader&&(o=function(e){let t=new r.gPd(e);t.needsUpdate=!0,s(t)}),t.load(r.r6x.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===l&&o.revokeObjectURL(a),X(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":t.search(/\.ktx2($|\?)/i)>0||0===t.search(/^data\:image\/ktx2/)?"image/ktx2":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e});return this.sourceCache[e]=u,u}assignTexture(e,t,s,r){let n=this;return this.getDependency("texture",s.index).then(function(i){if(!i)return null;if(void 0!==s.texCoord&&s.texCoord>0&&((i=i.clone()).channel=s.texCoord),n.extensions[a.KHR_TEXTURE_TRANSFORM]){let e=void 0!==s.extensions?s.extensions[a.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=n.associations.get(i);i=n.extensions[a.KHR_TEXTURE_TRANSFORM].extendTexture(i,e),n.associations.set(i,t)}}return void 0!==r&&(i.colorSpace=r),e[t]=i,i})}assignFinalMaterial(e){let t=e.geometry,s=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+s.uuid,t=this.cache.get(e);t||(t=new r.BH$,r.imn.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,t.sizeAttenuation=!1,this.cache.add(e,t)),s=t}else if(e.isLine){let e="LineBasicMaterial:"+s.uuid,t=this.cache.get(e);t||(t=new r.mrM,r.imn.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,this.cache.add(e,t)),s=t}if(n||i||o){let e="ClonedMaterial:"+s.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=s.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(s))),s=t}e.material=s}getMaterialType(){return r._4j}loadMaterial(e){let t,s=this,n=this.json,i=this.extensions,o=n.materials[e],l={},u=o.extensions||{},c=[];if(u[a.KHR_MATERIALS_UNLIT]){let e=i[a.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),c.push(e.extendParams(l,o,s))}else{let n=o.pbrMetallicRoughness||{};if(l.color=new r.Q1f(1,1,1),l.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;l.color.setRGB(e[0],e[1],e[2],r.Zr2),l.opacity=e[3]}void 0!==n.baseColorTexture&&c.push(s.assignTexture(l,"map",n.baseColorTexture,r.er$)),l.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,l.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(c.push(s.assignTexture(l,"metalnessMap",n.metallicRoughnessTexture)),c.push(s.assignTexture(l,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,l)})))}!0===o.doubleSided&&(l.side=r.$EB);let h=o.alphaMode||K.OPAQUE;if(h===K.BLEND?(l.transparent=!0,l.depthWrite=!1):(l.transparent=!1,h===K.MASK&&(l.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&t!==r.V9B&&(c.push(s.assignTexture(l,"normalMap",o.normalTexture)),l.normalScale=new r.I9Y(1,1),void 0!==o.normalTexture.scale)){let e=o.normalTexture.scale;l.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&t!==r.V9B&&(c.push(s.assignTexture(l,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(l.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&t!==r.V9B){let e=o.emissiveFactor;l.emissive=new r.Q1f().setRGB(e[0],e[1],e[2],r.Zr2)}return void 0!==o.emissiveTexture&&t!==r.V9B&&c.push(s.assignTexture(l,"emissiveMap",o.emissiveTexture,r.er$)),Promise.all(c).then(function(){let r=new t(l);return o.name&&(r.name=o.name),X(r,o),s.associations.set(r,{materials:e}),o.extensions&&V(i,r,o),r})}createUniqueName(e){let t=r.Nwf.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,s=this.extensions,n=this.primitiveCache,i=[];for(let o=0,l=e.length;o0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let s=0,r=t.weights.length;s1?new r.YJl:1===t.length?t[0]:new r.B69)!==t[0])for(let e=0,s=t.length;e1){let e=n.associations.get(a);n.associations.set(a,{...e})}}else n.associations.set(a,{});return n.associations.get(a).nodes=e,a}),this.nodeCache[e]}loadScene(e){let t=this.extensions,s=this.json.scenes[e],n=this,i=new r.YJl;s.name&&(i.name=n.createUniqueName(s.name)),X(i,s),s.extensions&&V(t,i,s);let o=s.nodes||[],a=[];for(let e=0,t=o.length;e{let t=new Map;for(let[e,s]of n.associations)(e instanceof r.imn||e instanceof r.gPd)&&t.set(e,s);return e.traverse(e=>{let s=n.associations.get(e);null!=s&&t.set(e,s)}),t})(i),i})}_createAnimationTracks(e,t,s,n,i){let o,a=[],l=e.name?e.name:e.uuid,u=[];switch(G[i.path]===G.weights?e.traverse(function(e){e.morphTargetInfluences&&u.push(e.name?e.name:e.uuid)}):u.push(l),G[i.path]){case G.weights:o=r.Hit;break;case G.rotation:o=r.MBL;break;case G.translation:case G.scale:o=r.RiT;break;default:o=1===s.itemSize?r.Hit:r.RiT}let c=void 0!==n.interpolation?j[n.interpolation]:r.PJ3,h=this._getArrayFromAccessor(s);for(let e=0,s=u.length;e{r.d(t,{AH:()=>k,Mj:()=>A,SP:()=>q,To:()=>ei,Vu:()=>eo,Xe:()=>eu,bv:()=>N,hH:()=>Z,i:()=>Y,oF:()=>a,s0:()=>v});var i=r(5339),s=class{constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}get autoReset(){return this._autoReset}set autoReset(e){"undefined"!=typeof document&&void 0!==document.hidden&&(e?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=e)}get delta(){return .001*this._delta}get fixedDelta(){return .001*this._fixedDelta}set fixedDelta(e){this._fixedDelta=1e3*e}get elapsed(){return .001*this._elapsed}update(e){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(void 0!==e?e:performance.now())-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}getDelta(){return this.delta}getElapsed(){return this.elapsed}handleEvent(e){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}},n=(()=>{let e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]),r=new i.LoY;return r.setAttribute("position",new i.THS(e,3)),r.setAttribute("uv",new i.THS(t,2)),r})(),a=class e{static get fullscreenGeometry(){return n}constructor(e="Pass",t=new i.Z58,r=new i.qUd){this.name=e,this.renderer=null,this.scene=t,this.camera=r,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(e){if(this.rtt===e){let t=this.fullscreenMaterial;null!==t&&(t.needsUpdate=!0),this.rtt=!e}}set mainScene(e){}set mainCamera(e){}setRenderer(e){this.renderer=e}isEnabled(){return this.enabled}setEnabled(e){this.enabled=e}get fullscreenMaterial(){return null!==this.screen?this.screen.material:null}set fullscreenMaterial(t){let r=this.screen;null!==r?r.material=t:((r=new i.eaF(e.fullscreenGeometry,t)).frustumCulled=!1,null===this.scene&&(this.scene=new i.Z58),this.scene.add(r),this.screen=r)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e,t=i.Rkk){}render(e,t,r,i,s){throw Error("Render method not implemented!")}setSize(e,t){}initialize(e,t,r){}dispose(){for(let t of Object.keys(this)){let r=this[t];(r instanceof i.nWS||r instanceof i.imn||r instanceof i.gPd||r instanceof e)&&this[t].dispose()}null!==this.fullscreenMaterial&&this.fullscreenMaterial.dispose()}},l=class extends a{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(e,t,r,i,s){let n=e.state.buffers.stencil;n.setLocked(!1),n.setTest(!1)}},o=`#ifdef COLOR_WRITE +#include +#include +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#endif +#ifdef DEPTH_WRITE +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +} +#endif +#ifdef USE_WEIGHTS +uniform vec4 channelWeights; +#endif +uniform float opacity;varying vec2 vUv;void main(){ +#ifdef COLOR_WRITE +vec4 texel=texture2D(inputBuffer,vUv); +#ifdef USE_WEIGHTS +texel*=channelWeights; +#endif +gl_FragColor=opacity*texel; +#ifdef COLOR_SPACE_CONVERSION +#include +#endif +#include +#else +gl_FragColor=vec4(0.0); +#endif +#ifdef DEPTH_WRITE +gl_FragDepth=readDepth(vUv); +#endif +}`,u="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",h=class extends i.BKk{constructor(){super({name:"CopyMaterial",defines:{DEPTH_PACKING:"0",COLOR_WRITE:"1"},uniforms:{inputBuffer:new i.nc$(null),depthBuffer:new i.nc$(null),channelWeights:new i.nc$(null),opacity:new i.nc$(1)},blending:i.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:o,vertexShader:u}),this.depthFunc=i.lGu}get inputBuffer(){return this.uniforms.inputBuffer.value}set inputBuffer(e){let t=null!==e;this.colorWrite!==t&&(t?this.defines.COLOR_WRITE=!0:delete this.defines.COLOR_WRITE,this.colorWrite=t,this.needsUpdate=!0),this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){let t=null!==e;this.depthWrite!==t&&(t?this.defines.DEPTH_WRITE=!0:delete this.defines.DEPTH_WRITE,this.depthTest=t,this.depthWrite=t,this.needsUpdate=!0),this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get channelWeights(){return this.uniforms.channelWeights.value}set channelWeights(e){null!==e?(this.defines.USE_WEIGHTS="1",this.uniforms.channelWeights.value=e):delete this.defines.USE_WEIGHTS,this.needsUpdate=!0}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}},c=class extends a{constructor(e,t=!0){super("CopyPass"),this.fullscreenMaterial=new h,this.needsSwap=!1,this.renderTarget=e,void 0===e&&(this.renderTarget=new i.nWS(1,1,{minFilter:i.k6q,magFilter:i.k6q,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=t}get resize(){return this.autoResize}set resize(e){this.autoResize=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(e){this.autoResize=e}render(e,t,r,i,s){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){this.autoResize&&this.renderTarget.setSize(e,t)}initialize(e,t,r){void 0!==r&&(this.renderTarget.texture.type=r,r!==i.OUM?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":null!==e&&e.outputColorSpace===i.er$&&(this.renderTarget.texture.colorSpace=i.er$))}},d=new i.Q1f,f=class extends a{constructor(e=!0,t=!0,r=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=r,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(e,t,r){this.color=e,this.depth=t,this.stencil=r}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,r,i,s){let n=this.overrideClearColor,a=this.overrideClearAlpha,l=e.getClearAlpha(),o=null!==n,u=a>=0;o?(e.getClearColor(d),e.setClearColor(n,u?a:l)):u&&e.setClearAlpha(a),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),o?e.setClearColor(d,l):u&&e.setClearAlpha(l)}},p=class extends a{constructor(e,t){super("MaskPass",e,t),this.needsSwap=!1,this.clearPass=new f(!1,!1,!0),this.inverse=!1}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get inverted(){return this.inverse}set inverted(e){this.inverse=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(e){this.inverted=e}render(e,t,r,i,s){let n=e.getContext(),a=e.state.buffers,l=this.scene,o=this.camera,u=this.clearPass,h=+!this.inverted;a.color.setMask(!1),a.depth.setMask(!1),a.color.setLocked(!0),a.depth.setLocked(!0),a.stencil.setTest(!0),a.stencil.setOp(n.REPLACE,n.REPLACE,n.REPLACE),a.stencil.setFunc(n.ALWAYS,h,0xffffffff),a.stencil.setClear(1-h),a.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?u.render(e,null):(u.render(e,t),u.render(e,r))),this.renderToScreen?e.setRenderTarget(null):(e.setRenderTarget(t),e.render(l,o),e.setRenderTarget(r)),e.render(l,o),a.color.setLocked(!1),a.depth.setLocked(!1),a.stencil.setLocked(!1),a.stencil.setFunc(n.EQUAL,1,0xffffffff),a.stencil.setOp(n.KEEP,n.KEEP,n.KEEP),a.stencil.setLocked(!0)}},v=class{constructor(e=null,{depthBuffer:t=!0,stencilBuffer:r=!1,multisampling:i=0,frameBufferType:n}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,r,n,i),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new c,this.depthTexture=null,this.passes=[],this.timer=new s,this.autoRenderToScreen=!0,this.setRenderer(e)}get multisampling(){return this.inputBuffer.samples||0}set multisampling(e){let t=this.inputBuffer,r=this.multisampling;r>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):r!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,null!==e){let t=e.getSize(new i.I9Y),r=e.getContext().getContextAttributes().alpha,s=this.inputBuffer.texture.type;for(let n of(s===i.OUM&&e.outputColorSpace===i.er$&&(this.inputBuffer.texture.colorSpace=i.er$,this.outputBuffer.texture.colorSpace=i.er$,this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height),this.passes))n.initialize(e,r,s)}}replaceRenderer(e,t=!0){let r=this.renderer,i=r.domElement.parentNode;return this.setRenderer(e),t&&null!==i&&(i.removeChild(r.domElement),i.appendChild(e.domElement)),r}createDepthTexture(){let e=this.depthTexture=new i.VCu;return this.inputBuffer.depthTexture=e,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(e.format=i.dcC,e.type=i.V3x):e.type=i.bkx,e}deleteDepthTexture(){if(null!==this.depthTexture)for(let e of(this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose(),this.passes))e.setDepthTexture(null)}createBuffer(e,t,r,s){let n=this.renderer,a=null===n?new i.I9Y:n.getDrawingBufferSize(new i.I9Y),l={minFilter:i.k6q,magFilter:i.k6q,stencilBuffer:t,depthBuffer:e,type:r},o=new i.nWS(a.width,a.height,l);return s>0&&(o.samples=s),r===i.OUM&&null!==n&&n.outputColorSpace===i.er$&&(o.texture.colorSpace=i.er$),o.texture.name="EffectComposer.Buffer",o.texture.generateMipmaps=!1,o}setMainScene(e){for(let t of this.passes)t.mainScene=e}setMainCamera(e){for(let t of this.passes)t.mainCamera=e}addPass(e,t){let r=this.passes,s=this.renderer,n=s.getDrawingBufferSize(new i.I9Y),a=s.getContext().getContextAttributes().alpha,l=this.inputBuffer.texture.type;if(e.setRenderer(s),e.setSize(n.width,n.height),e.initialize(s,a,l),this.autoRenderToScreen&&(r.length>0&&(r[r.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),void 0!==t?r.splice(t,0,e):r.push(e),this.autoRenderToScreen&&(r[r.length-1].renderToScreen=!0),e.needsDepthTexture||null!==this.depthTexture)if(null===this.depthTexture){let t=this.createDepthTexture();for(e of r)e.setDepthTexture(t)}else e.setDepthTexture(this.depthTexture)}removePass(e){let t=this.passes,r=t.indexOf(e);-1!==r&&t.splice(r,1).length>0&&(null!==this.depthTexture&&(t.reduce((e,t)=>e||t.needsDepthTexture,!1)||(e.getDepthTexture()===this.depthTexture&&e.setDepthTexture(null),this.deleteDepthTexture())),this.autoRenderToScreen&&r===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0)))}removeAllPasses(){let e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){let t,r,i,s=this.renderer,n=this.copyPass,a=this.inputBuffer,o=this.outputBuffer,u=!1;for(let h of(void 0===e&&(this.timer.update(),e=this.timer.getDelta()),this.passes))h.enabled&&(h.render(s,a,o,e,u),h.needsSwap&&(u&&(n.renderToScreen=h.renderToScreen,t=s.getContext(),(r=s.state.buffers.stencil).setFunc(t.NOTEQUAL,1,0xffffffff),n.render(s,a,o,e,u),r.setFunc(t.EQUAL,1,0xffffffff)),i=a,a=o,o=i),h instanceof p?u=!0:h instanceof l&&(u=!1))}setSize(e,t,r){let s=this.renderer,n=s.getSize(new i.I9Y);(void 0===e||void 0===t)&&(e=n.width,t=n.height),(n.width!==e||n.height!==t)&&s.setSize(e,t,r);let a=s.getDrawingBufferSize(new i.I9Y);for(let e of(this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height),this.passes))e.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(let e of this.passes)e.dispose();this.passes=[],null!==this.inputBuffer&&this.inputBuffer.dispose(),null!==this.outputBuffer&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),a.fullscreenGeometry.dispose()}},m={NONE:0,DEPTH:1,CONVOLUTION:2},g={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},y=class{constructor(){this.shaderParts=new Map([[g.FRAGMENT_HEAD,null],[g.FRAGMENT_MAIN_UV,null],[g.FRAGMENT_MAIN_IMAGE,null],[g.VERTEX_HEAD,null],[g.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=m.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=i.Zr2}},S=!1,x=class{constructor(e=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(e),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case i.$EB:t=this.materialsFlatShadedDoubleSide;break;case i.hsX:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded}else switch(e.material.side){case i.$EB:t=this.materialsDoubleSide;break;case i.hsX:t=this.materialsBackSide;break;default:t=this.materials}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}cloneMaterial(e){if(!(e instanceof i.BKk))return e.clone();let t=e.uniforms,r=new Map;for(let e in t){let i=t[e].value;i.isRenderTargetTexture&&(t[e].value=null,r.set(e,i))}let s=e.clone();for(let e of r)t[e[0]].value=e[1],s.uniforms[e[0]].value=e[1];return s}setMaterial(e){if(this.disposeMaterials(),this.material=e,null!==e){let t=this.materials=[this.cloneMaterial(e),this.cloneMaterial(e),this.cloneMaterial(e)];for(let r of t)r.uniforms=Object.assign({},e.uniforms),r.side=i.hB5;t[2].skinning=!0,this.materialsBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=i.hsX,r}),this.materialsDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=i.$EB,r}),this.materialsFlatShaded=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r}),this.materialsFlatShadedBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=i.hsX,r}),this.materialsFlatShadedDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=i.$EB,r})}}render(e,t,r){let i=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,S){let i=this.originalMaterials;for(let s of(this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,r),i))s[0].material=s[1];this.meshCount!==i.size&&i.clear()}else{let i=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,r),t.overrideMaterial=i}e.shadowMap.enabled=i}disposeMaterials(){if(null!==this.material)for(let e of this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide))e.dispose()}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return S}static set workaroundEnabled(e){S=e}},w=class extends i.Qev{constructor(e,t=-1,r=-1,s=1){super(),this.resizable=e,this.baseSize=new i.I9Y(1,1),this.preferredSize=new i.I9Y(t,r),this.target=this.preferredSize,this.s=s,this.effectiveSize=new i.I9Y,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){let e=this.baseSize,t=this.preferredSize,r=this.effectiveSize,i=this.scale;-1!==t.width?r.width=t.width:-1!==t.height?r.width=Math.round(t.height*(e.width/Math.max(e.height,1))):r.width=Math.round(e.width*i),-1!==t.height?r.height=t.height:-1!==t.width?r.height=Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):r.height=Math.round(e.height*i)}get width(){return this.effectiveSize.width}set width(e){this.preferredWidth=e}get height(){return this.effectiveSize.height}set height(e){this.preferredHeight=e}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(e){this.s!==e&&(this.s=e,this.preferredSize.setScalar(-1),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(e){this.scale=e}get baseWidth(){return this.baseSize.width}set baseWidth(e){this.baseSize.width!==e&&(this.baseSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(e){this.baseWidth=e}get baseHeight(){return this.baseSize.height}set baseHeight(e){this.baseSize.height!==e&&(this.baseSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(e){this.baseHeight=e}setBaseSize(e,t){(this.baseSize.width!==e||this.baseSize.height!==t)&&(this.baseSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(e){this.preferredSize.width!==e&&(this.preferredSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(e){this.preferredWidth=e}get preferredHeight(){return this.preferredSize.height}set preferredHeight(e){this.preferredSize.height!==e&&(this.preferredSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(e){this.preferredHeight=e}setPreferredSize(e,t){(this.preferredSize.width!==e||this.preferredSize.height!==t)&&(this.preferredSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(e){this.s=e.scale,this.baseSize.set(e.baseWidth,e.baseHeight),this.preferredSize.set(e.preferredWidth,e.preferredHeight),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return -1}};var T={ADD:0,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},U=new Map([[T.ADD,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb+y.rgb,y.a),y.a*opacity);}"],[T.AVERAGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4((x.rgb+y.rgb)*0.5,y.a),y.a*opacity);}"],[T.COLOR,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.xy,xHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.COLOR_BURN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb,b=y.rgb;vec3 z=mix(step(0.0,b)*(1.0-min(vec3(1.0),(1.0-a)/b)),vec3(1.0),step(1.0,a));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.COLOR_DODGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb,b=y.rgb;vec3 z=step(0.0,a)*mix(min(vec3(1.0),a/max(1.0-b,1e-9)),vec3(1.0),step(1.0,b));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.DARKEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(min(x.rgb,y.rgb),y.a),y.a*opacity);}"],[T.DIFFERENCE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(abs(x.rgb-y.rgb),y.a),y.a*opacity);}"],[T.DIVIDE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb/max(y.rgb,1e-12),y.a),y.a*opacity);}"],[T.DST,null],[T.EXCLUSION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4((x.rgb+y.rgb-2.0*x.rgb*y.rgb),y.a),y.a*opacity);}"],[T.HARD_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=min(x.rgb,1.0);vec3 b=min(y.rgb,1.0);vec3 z=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,b));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.HARD_MIX,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(step(1.0,x.rgb+y.rgb),y.a),y.a*opacity);}"],[T.HUE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.x,xHSL.yz));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.INVERT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(1.0-y.rgb,y.a),y.a*opacity);}"],[T.INVERT_RGB,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(y.rgb*(1.0-x.rgb),y.a),y.a*opacity);}"],[T.LIGHTEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(max(x.rgb,y.rgb),y.a),y.a*opacity);}"],[T.LINEAR_BURN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(clamp(y.rgb+x.rgb-1.0,0.0,1.0),y.a),y.a*opacity);}"],[T.LINEAR_DODGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(min(x.rgb+y.rgb,1.0),y.a),y.a*opacity);}"],[T.LINEAR_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(clamp(2.0*y.rgb+x.rgb-1.0,0.0,1.0),y.a),y.a*opacity);}"],[T.LUMINOSITY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.xy,yHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.MULTIPLY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb*y.rgb,y.a),y.a*opacity);}"],[T.NEGATION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(1.0-abs(1.0-x.rgb-y.rgb),y.a),y.a*opacity);}"],[T.NORMAL,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,y.a*opacity);}"],[T.OVERLAY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(2.0*y.rgb*x.rgb,1.0-2.0*(1.0-y.rgb)*(1.0-x.rgb),step(0.5,x.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.PIN_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 y2=2.0*y.rgb;vec3 z=mix(mix(y2,x.rgb,step(0.5*x.rgb,y.rgb)),max(y2-1.0,vec3(0.0)),step(x.rgb,y2-1.0));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.REFLECT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(min(x.rgb*x.rgb/max(1.0-y.rgb,1e-12),1.0),y.rgb,step(1.0,y.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.SATURATION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.x,yHSL.y,xHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.SCREEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb+y.rgb-min(x.rgb*y.rgb,1.0),y.a),y.a*opacity);}"],[T.SOFT_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb;vec3 b=y.rgb;vec3 y2=2.0*b;vec3 w=step(0.5,b);vec3 c=a-(1.0-y2)*a*(1.0-a);vec3 d=mix(a+(y2-1.0)*(sqrt(a)-a),a+(y2-1.0)*a*((16.0*a-12.0)*a+3.0),w*(1.0-step(0.25,a)));vec3 z=mix(c,d,w);return mix(x,vec4(z,y.a),y.a*opacity);}"],[T.SRC,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y;}"],[T.SUBTRACT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(max(x.rgb+y.rgb-1.0,0.0),y.a),y.a*opacity);}"],[T.VIVID_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(max(1.0-min((1.0-x.rgb)/(2.0*y.rgb),1.0),0.0),min(x.rgb/(2.0*(1.0-y.rgb)),1.0),step(0.5,y.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"]]),E=class extends i.Qev{constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new i.nc$(t)}getOpacity(){return this.opacity.value}setOpacity(e){this.opacity.value=e}get blendFunction(){return this._blendFunction}set blendFunction(e){this._blendFunction=e,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(e){this.blendFunction=e}getShaderCode(){return U.get(this.blendFunction)}};i.GOR;var A=class extends i.Qev{constructor(e,t,{attributes:r=m.NONE,blendFunction:s=T.NORMAL,defines:n=new Map,uniforms:a=new Map,extensions:l=null,vertexShader:o=null}={}){super(),this.name=e,this.renderer=null,this.attributes=r,this.fragmentShader=t,this.vertexShader=o,this.defines=n,this.uniforms=a,this.extensions=l,this.blendMode=new E(s),this.blendMode.addEventListener("change",e=>this.setChanged()),this._inputColorSpace=i.Zr2,this._outputColorSpace=i.jf0}get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(e){this._inputColorSpace=e,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e,this.setChanged()}set mainScene(e){}set mainCamera(e){}getName(){return this.name}setRenderer(e){this.renderer=e}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(e){this.attributes=e,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(e){this.fragmentShader=e,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(e){this.vertexShader=e,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(e,t=i.Rkk){}update(e,t,r){}setSize(e,t){}initialize(e,t,r){}dispose(){for(let e of Object.keys(this)){let t=this[e];(t instanceof i.nWS||t instanceof i.imn||t instanceof i.gPd||t instanceof a)&&this[e].dispose()}}},b={MEDIUM:2,LARGE:3},M=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25; +#include +}`,R=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],B=class extends i.BKk{constructor(e=new i.IUQ){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new i.nc$(null),texelSize:new i.nc$(new i.IUQ),scale:new i.nc$(1),kernel:new i.nc$(0)},blending:i.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:M,vertexShader:"uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}"}),this.setTexelSize(e.x,e.y),this.kernelSize=b.MEDIUM}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return R[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(){return this.uniforms.scale.value}setScale(e){this.uniforms.scale.value=e}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(e){this.uniforms.kernel.value=e}setKernel(e){this.kernel=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t,.5*e,.5*t)}setSize(e,t){let r=1/e,i=1/t;this.uniforms.texelSize.value.set(r,i,.5*r,.5*i)}},_=class extends a{constructor({kernelSize:e=b.MEDIUM,resolutionScale:t=.5,width:r=w.AUTO_SIZE,height:s=w.AUTO_SIZE,resolutionX:n=r,resolutionY:a=s}={}){super("KawaseBlurPass"),this.renderTargetA=new i.nWS(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";let l=this.resolution=new w(this,n,a,t);l.addEventListener("change",e=>this.setSize(l.baseWidth,l.baseHeight)),this._blurMaterial=new B,this._blurMaterial.kernelSize=e,this.copyMaterial=new h}getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(e){this._blurMaterial=e}get dithering(){return this.copyMaterial.dithering}set dithering(e){this.copyMaterial.dithering=e}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(e){this.blurMaterial.kernelSize=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get scale(){return this.blurMaterial.scale}set scale(e){this.blurMaterial.scale=e}getScale(){return this.blurMaterial.scale}setScale(e){this.blurMaterial.scale=e}getKernelSize(){return this.kernelSize}setKernelSize(e){this.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,i,s){let n=this.scene,a=this.camera,l=this.renderTargetA,o=this.renderTargetB,u=this.blurMaterial,h=u.kernelSequence,c=t;this.fullscreenMaterial=u;for(let t=0,r=h.length;t +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#ifdef RANGE +uniform vec2 range; +#elif defined(THRESHOLD) +uniform float threshold;uniform float smoothing; +#endif +varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);float mask=1.0; +#ifdef RANGE +float low=step(range.x,l);float high=step(l,range.y);mask=low*high; +#elif defined(THRESHOLD) +mask=smoothstep(threshold,threshold+smoothing,l); +#endif +#ifdef COLOR +gl_FragColor=texel*mask; +#else +gl_FragColor=vec4(l*mask); +#endif +}`,P=class extends i.BKk{constructor(e=!1,t=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:i.sPf.replace(/\D+/g,"")},uniforms:{inputBuffer:new i.nc$(null),threshold:new i.nc$(0),smoothing:new i.nc$(1),range:new i.nc$(null)},blending:i.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:F,vertexShader:u}),this.colorOutput=e,this.luminanceRange=t}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get threshold(){return this.uniforms.threshold.value}set threshold(e){this.smoothing>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.threshold.value=e}getThreshold(){return this.threshold}setThreshold(e){this.threshold=e}get smoothing(){return this.uniforms.smoothing.value}set smoothing(e){this.threshold>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.smoothing.value=e}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(e){this.smoothing=e}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(e){}get colorOutput(){return void 0!==this.defines.COLOR}set colorOutput(e){e?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(e){return this.colorOutput}setColorOutputEnabled(e){this.colorOutput=e}get useRange(){return null!==this.luminanceRange}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){null!==e?this.defines.RANGE="1":delete this.defines.RANGE,this.uniforms.range.value=e,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(e){this.luminanceRange=e}},I=class extends a{constructor({renderTarget:e,luminanceRange:t,colorOutput:r,resolutionScale:s=1,width:n=w.AUTO_SIZE,height:a=w.AUTO_SIZE,resolutionX:l=n,resolutionY:o=a}={}){super("LuminancePass"),this.fullscreenMaterial=new P(r,t),this.needsSwap=!1,this.renderTarget=e,void 0===this.renderTarget&&(this.renderTarget=new i.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="LuminancePass.Target");let u=this.resolution=new w(this,l,o,s);u.addEventListener("change",e=>this.setSize(u.baseWidth,u.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(e,t,r,i,s){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height)}initialize(e,t,r){void 0!==r&&r!==i.OUM&&(this.renderTarget.texture.type=r,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},D=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#define WEIGHT_INNER 0.125 +#define WEIGHT_OUTER 0.0555555 +varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c; +#include +}`,z=class extends i.BKk{constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new i.nc$(null),texelSize:new i.nc$(new i.I9Y)},blending:i.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:D,vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},C=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer; +#else +uniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer; +#endif +uniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius); +#include +}`,O=class extends i.BKk{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new i.nc$(null),supportBuffer:new i.nc$(null),texelSize:new i.nc$(new i.I9Y),radius:new i.nc$(.85)},blending:i.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:C,vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}set supportBuffer(e){this.uniforms.supportBuffer.value=e}get radius(){return this.uniforms.radius.value}set radius(e){this.uniforms.radius.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},H=class extends a{constructor(){super("MipmapBlurPass"),this.needsSwap=!1,this.renderTarget=new i.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Upsampling.Mipmap0",this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new z,this.upsamplingMaterial=new O,this.resolution=new i.I9Y}get texture(){return this.renderTarget.texture}get levels(){return this.downsamplingMipmaps.length}set levels(e){if(this.levels!==e){let t=this.renderTarget;this.dispose(),this.downsamplingMipmaps=[],this.upsamplingMipmaps=[];for(let r=0;r=0;--t){let r=h[t];o.setSize(c.width,c.height),o.inputBuffer=c.texture,o.supportBuffer=u[t].texture,e.setRenderTarget(r),e.render(n,a),c=r}}setSize(e,t){let r=this.resolution;r.set(e,t);let i=r.width,s=r.height;for(let e=0,t=this.downsamplingMipmaps.length;ethis.setSize(p.baseWidth,p.baseHeight))}get texture(){return this.mipmapBlurPass.enabled?this.mipmapBlurPass.texture:this.renderTarget.texture}getTexture(){return this.texture}getResolution(){return this.resolution}getBlurPass(){return this.blurPass}getLuminancePass(){return this.luminancePass}get luminanceMaterial(){return this.luminancePass.fullscreenMaterial}getLuminanceMaterial(){return this.luminancePass.fullscreenMaterial}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get dithering(){return this.blurPass.dithering}set dithering(e){this.blurPass.dithering=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}get distinction(){return console.warn(this.name,"distinction was removed"),1}set distinction(e){console.warn(this.name,"distinction was removed")}get intensity(){return this.uniforms.get("intensity").value}set intensity(e){this.uniforms.get("intensity").value=e}getIntensity(){return this.intensity}setIntensity(e){this.intensity=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}update(e,t,r){let i=this.renderTarget,s=this.luminancePass;s.enabled?(s.render(e,t),this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,s.renderTarget):this.blurPass.render(e,s.renderTarget,i)):this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,t):this.blurPass.render(e,t,i)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.blurPass.resolution.copy(r),this.luminancePass.setSize(e,t),this.mipmapBlurPass.setSize(e,t)}initialize(e,t,r){this.blurPass.initialize(e,t,r),this.luminancePass.initialize(e,t,r),this.mipmapBlurPass.initialize(e,t,r),void 0!==r&&(this.renderTarget.texture.type=r,null!==e&&e.outputColorSpace===i.er$&&(this.renderTarget.texture.colorSpace=i.er$))}};i.BKk;i.BKk;i.BKk,i.GYF;i.BKk;var k=class extends a{constructor(e,t,r=null){super("RenderPass",e,t),this.needsSwap=!1,this.clearPass=new f,this.overrideMaterialManager=null===r?null:new x(r),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get renderToScreen(){return super.renderToScreen}set renderToScreen(e){super.renderToScreen=e,this.clearPass.renderToScreen=e}get overrideMaterial(){let e=this.overrideMaterialManager;return null!==e?e.material:null}set overrideMaterial(e){let t=this.overrideMaterialManager;null!==e?null!==t?t.setMaterial(e):this.overrideMaterialManager=new x(e):null!==t&&(t.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(e){this.overrideMaterial=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getSelection(){return this.selection}setSelection(e){this.selection=e}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,r,i,s){let n=this.scene,a=this.camera,l=this.selection,o=a.layers.mask,u=n.background,h=e.shadowMap.autoUpdate,c=this.renderToScreen?null:t;null!==l&&a.layers.set(l.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||null!==this.clearPass.overrideClearColor)&&(n.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(c),null!==this.overrideMaterialManager?this.overrideMaterialManager.render(e,n,a):e.render(n,a),a.layers.mask=o,n.background=u,e.shadowMap.autoUpdate=h}},G={SCALE_UP:"lut.scaleup"};function W(e,t,r){let i=document.createElement("canvas"),s=i.getContext("2d");if(i.width=e,i.height=t,r instanceof Image)s.drawImage(r,0,0);else{let i=s.createImageData(e,t);i.data.set(r),s.putImageData(i,0,0)}return i}var V=class e{constructor(e=0,t=0,r=null){this.width=e,this.height=t,this.data=r}toCanvas(){return"undefined"==typeof document?null:W(this.width,this.height,this.data)}static from(t){let r,{width:i,height:s}=t;if(t instanceof Image){let e=W(i,s,t);null!==e&&(r=e.getContext("2d").getImageData(0,0,i,s).data)}else r=t.data;return new e(i,s,r)}},$=new i.Q1f;(class e extends i.dYF{constructor(e,t){super(e,t,t,t),this.type=i.RQf,this.format=i.GWd,this.minFilter=i.k6q,this.magFilter=i.k6q,this.wrapS=i.ghU,this.wrapT=i.ghU,this.wrapR=i.ghU,this.unpackAlignment=1,this.needsUpdate=!0,this.colorSpace=i.Zr2,this.domainMin=new i.Pq0(0,0,0),this.domainMax=new i.Pq0(1,1,1)}get isLookupTexture3D(){return!0}scaleUp(t,r=!0){let i=this.image;return t<=i.width?Promise.reject(Error("The target size must be greater than the current size")):new Promise((s,n)=>{let a=URL.createObjectURL(new Blob(['"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w{let t=a.data,r=t.data;switch(t.operation){case O.SCALE_UP:r=v.expand(r,t.size);break}postMessage(r,[r.buffer]),close()});})();\n'],{type:"text/javascript"})),l=new Worker(a);l.addEventListener("error",e=>n(e.error)),l.addEventListener("message",r=>{let i=new e(r.data,t);this.colorSpace=i.colorSpace,i.type=this.type,i.name=this.name,URL.revokeObjectURL(a),s(i)});let o=r?[i.data.buffer]:[];l.postMessage({operation:G.SCALE_UP,data:i.data,size:t},o)})}applyLUT(e){let t=this.image,r=e.image,s=Math.min(t.width,t.height,t.depth);if(s!==Math.min(r.width,r.height,r.depth))console.error("Size mismatch");else if(e.type!==i.RQf||this.type!==i.RQf)console.error("Both LUTs must be FloatType textures");else if(e.format!==i.GWd||this.format!==i.GWd)console.error("Both LUTs must be RGBA textures");else{let e=t.data,i=r.data,n=s**2,a=s-1;for(let t=0,r=s**3;tn){r=new Uint8Array(e.length);for(let t=0;t +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +#ifdef DOWNSAMPLE_NORMALS +uniform lowp sampler2D normalBuffer; +#endif +varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +}int findBestDepth(const in float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])*0.25;float distances[4];distances[0]=abs(c-samples[0]);distances[1]=abs(c-samples[1]);distances[2]=abs(c-samples[2]);distances[3]=abs(c-samples[3]);float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]this.setSize(o.baseWidth,o.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(e,t=i.Rkk){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t}render(e,t,r,i,s){e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.fullscreenMaterial.setSize(e,t)}initialize(e,t,r){let i=e.getContext();if(!(i.getExtension("EXT_color_buffer_float")||i.getExtension("EXT_color_buffer_half_float")))throw Error("Rendering to float texture is not supported.")}},J=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform vec4 maskParams;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;float linearGradientMask(const in float x){return smoothstep(maskParams.x,maskParams.y,x)-smoothstep(maskParams.w,maskParams.z,x);}void main(){vec2 dUv=vOffset*(1.0-linearGradientMask(vUv2.y));vec4 sum=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y-dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y-dUv.y));gl_FragColor=sum*0.25; +#include +}`,ee=class extends B{constructor({kernelSize:e=b.MEDIUM,offset:t=0,rotation:r=0,focusArea:s=.4,feather:n=.3}={}){super(),this.fragmentShader=J,this.vertexShader="uniform vec4 texelSize;uniform float kernel;uniform float scale;uniform float aspect;uniform vec2 rotation;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;void main(){vec2 uv=position.xy*0.5+0.5;vUv=uv;vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));vOffset=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;gl_Position=vec4(position.xy,1.0,1.0);}",this.kernelSize=e,this.uniforms.aspect=new i.nc$(1),this.uniforms.rotation=new i.nc$(new i.I9Y),this.uniforms.maskParams=new i.nc$(new i.IUQ),this._offset=t,this._focusArea=s,this._feather=n,this.rotation=r,this.updateParams()}updateParams(){let e=this.uniforms.maskParams.value,t=Math.max(this.focusArea,0),r=Math.max(t-this.feather,0);e.set(this.offset-t,this.offset-r,this.offset+t,this.offset+r)}get rotation(){return Math.acos(this.uniforms.rotation.value.x)}set rotation(e){this.uniforms.rotation.value.set(Math.cos(e),Math.sin(e))}get offset(){return this._offset}set offset(e){this._offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.updateParams()}setSize(e,t){super.setSize(e,t),this.uniforms.aspect.value=e/t}},et=class extends _{constructor({offset:e=0,rotation:t=0,focusArea:r=.4,feather:i=.3,kernelSize:s=b.MEDIUM,resolutionScale:n=.5,resolutionX:a=w.AUTO_SIZE,resolutionY:l=w.AUTO_SIZE}={}){super({kernelSize:s,resolutionScale:n,resolutionX:a,resolutionY:l}),this.blurMaterial=new ee({kernelSize:s,offset:e,rotation:t,focusArea:r,feather:i})}},er=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D map; +#else +uniform lowp sampler2D map; +#endif +uniform vec2 maskParams;varying vec2 vUv2;float linearGradientMask(const in float x){return step(maskParams.x,x)-step(maskParams.y,x);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float mask=linearGradientMask(vUv2.y);vec4 texel=texture2D(map,uv);outputColor=mix(texel,inputColor,mask);}`,ei=class extends A{constructor({blendFunction:e,offset:t=0,rotation:r=0,focusArea:s=.4,feather:n=.3,kernelSize:a=b.MEDIUM,resolutionScale:l=.5,resolutionX:o=w.AUTO_SIZE,resolutionY:u=w.AUTO_SIZE}={}){super("TiltShiftEffect",er,{vertexShader:"uniform vec2 rotation;varying vec2 vUv2;void mainSupport(const in vec2 uv){vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));}",blendFunction:e,uniforms:new Map([["rotation",new i.nc$(new i.I9Y)],["maskParams",new i.nc$(new i.I9Y)],["map",new i.nc$(null)]])}),this._offset=t,this._focusArea=s,this._feather=n,this.renderTarget=new i.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="TiltShift.Target",this.uniforms.get("map").value=this.renderTarget.texture,this.blurPass=new et({kernelSize:a,resolutionScale:l,resolutionX:o,resolutionY:u,offset:t,rotation:r,focusArea:s,feather:n});let h=this.resolution=new w(this,o,u,l);h.addEventListener("change",e=>this.setSize(h.baseWidth,h.baseHeight)),this.rotation=r,this.updateParams()}updateParams(){let e=this.uniforms.get("maskParams").value,t=Math.max(this.focusArea-this.feather,0);e.set(this.offset-t,this.offset+t)}get rotation(){return Math.acos(this.uniforms.get("rotation").value.x)}set rotation(e){this.uniforms.get("rotation").value.set(Math.cos(e),Math.sin(e)),this.blurPass.blurMaterial.rotation=e}get offset(){return this._offset}set offset(e){this._offset=e,this.blurPass.blurMaterial.offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.blurPass.blurMaterial.focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.blurPass.blurMaterial.feather=e,this.updateParams()}get bias(){return 0}set bias(e){}update(e,t,r){this.blurPass.render(e,t,this.renderTarget)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.blurPass.resolution.copy(r)}initialize(e,t,r){this.blurPass.initialize(e,t,r),void 0!==r&&(this.renderTarget.texture.type=r,null!==e&&e.outputColorSpace===i.er$&&(this.renderTarget.texture.colorSpace=i.er$))}};i.BKk;i.BKk;i.BKk;var es=`#include +#include +#include +#define packFloatToRGBA(v) packDepthToRGBA(v) +#define unpackRGBAToFloat(v) unpackRGBAToDepth(v) +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#if DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;vec4 sRGBToLinear(const in vec4 value){return 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);}float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;}float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNear,cameraFar); +#else +return orthographicDepthToViewZ(depth,cameraNear,cameraFar); +#endif +}vec3 RGBToHCV(const in vec3 RGB){vec4 P=mix(vec4(RGB.bg,-1.0,2.0/3.0),vec4(RGB.gb,0.0,-1.0/3.0),step(RGB.b,RGB.g));vec4 Q=mix(vec4(P.xyw,RGB.r),vec4(RGB.r,P.yzx),step(P.x,RGB.r));float C=Q.x-min(Q.w,Q.y);float H=abs((Q.w-Q.y)/(6.0*C+EPSILON)+Q.z);return vec3(H,C,Q.x);}vec3 RGBToHSL(const in vec3 RGB){vec3 HCV=RGBToHCV(RGB);float L=HCV.z-HCV.y*0.5;float S=HCV.y/(1.0-abs(L*2.0-1.0)+EPSILON);return vec3(HCV.x,S,L);}vec3 HueToRGB(const in float H){float R=abs(H*6.0-3.0)-1.0;float G=2.0-abs(H*6.0-2.0);float B=2.0-abs(H*6.0-4.0);return clamp(vec3(R,G,B),0.0,1.0);}vec3 HSLToRGB(const in vec3 HSL){vec3 RGB=HueToRGB(HSL.x);float C=(1.0-abs(2.0*HSL.z-1.0))*HSL.y;return(RGB-0.5)*C+HSL.z;}FRAGMENT_HEAD void main(){FRAGMENT_MAIN_UV vec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGE color0.a=clamp(color0.a,0.0,1.0);gl_FragColor=color0; +#ifdef ENCODE_OUTPUT +#include +#endif +#include +}`,en=class extends i.BKk{constructor(e,t,r,s,n=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:i.sPf.replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new i.nc$(null),depthBuffer:new i.nc$(null),resolution:new i.nc$(new i.I9Y),texelSize:new i.nc$(new i.I9Y),cameraNear:new i.nc$(.3),cameraFar:new i.nc$(1e3),aspect:new i.nc$(1),time:new i.nc$(0)},blending:i.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:n}),e&&this.setShaderParts(e),t&&this.setDefines(t),r&&this.setUniforms(r),this.copyCameraSettings(s)}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=i.Rkk){this.depthBuffer=e,this.depthPacking=t}setShaderData(e){this.setShaderParts(e.shaderParts),this.setDefines(e.defines),this.setUniforms(e.uniforms),this.setExtensions(e.extensions)}setShaderParts(e){return this.fragmentShader=es.replace(g.FRAGMENT_HEAD,e.get(g.FRAGMENT_HEAD)||"").replace(g.FRAGMENT_MAIN_UV,e.get(g.FRAGMENT_MAIN_UV)||"").replace(g.FRAGMENT_MAIN_IMAGE,e.get(g.FRAGMENT_MAIN_IMAGE)||""),this.vertexShader="uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}".replace(g.VERTEX_HEAD,e.get(g.VERTEX_HEAD)||"").replace(g.VERTEX_MAIN_SUPPORT,e.get(g.VERTEX_MAIN_SUPPORT)||""),this.needsUpdate=!0,this}setDefines(e){for(let t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(let t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){for(let t of(this.extensions={},e))this.extensions[t]=!0;return this}get encodeOutput(){return void 0!==this.defines.ENCODE_OUTPUT}set encodeOutput(e){this.encodeOutput!==e&&(e?this.defines.ENCODE_OUTPUT="1":delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(e){return this.encodeOutput}setOutputEncodingEnabled(e){this.encodeOutput=e}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}setDeltaTime(e){this.uniforms.time.value+=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof i.ubm?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let r=this.uniforms;r.resolution.value.set(e,t),r.texelSize.value.set(1/e,1/t),r.aspect.value=e/t}static get Section(){return g}};i.BKk,i.sPf.replace(/\D+/g,"");var ea=255/256;function el(e,t,r){for(let i of t){let t="$1"+e+i.charAt(0).toUpperCase()+i.slice(1),s=RegExp("([^\\.])(\\b"+i+"\\b)","g");for(let e of r.entries())null!==e[1]&&r.set(e[0],e[1].replace(s,t))}}new Float32Array([255/256/0x1000000,255/256/65536,255/256/256,255/256]),new Float32Array([ea,ea/256,ea/65536,1/0x1000000]);var eo=class extends a{constructor(e,...t){super("EffectPass"),this.fullscreenMaterial=new en(null,null,null,e),this.listener=e=>this.handleEvent(e),this.effects=[],this.setEffects(t),this.skipRendering=!1,this.minTime=1,this.maxTime=1/0,this.timeScale=1}set mainScene(e){for(let t of this.effects)t.mainScene=e}set mainCamera(e){for(let t of(this.fullscreenMaterial.copyCameraSettings(e),this.effects))t.mainCamera=e}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(e){this.fullscreenMaterial.encodeOutput=e}get dithering(){return this.fullscreenMaterial.dithering}set dithering(e){let t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}setEffects(e){for(let e of this.effects)e.removeEventListener("change",this.listener);for(let t of(this.effects=e.sort((e,t)=>t.attributes-e.attributes),this.effects))t.addEventListener("change",this.listener)}updateMaterial(){let e=new y,t=0;for(let r of this.effects)if(r.blendMode.blendFunction===T.DST)e.attributes|=r.getAttributes()&m.DEPTH;else if((e.attributes&r.getAttributes()&m.CONVOLUTION)!=0)throw Error(`Convolution effects cannot be merged (${r.name})`);else!function(e,t,r){let s=t.getFragmentShader(),n=t.getVertexShader(),a=void 0!==s&&/mainImage/.test(s),l=void 0!==s&&/mainUv/.test(s);if(r.attributes|=t.getAttributes(),void 0===s)throw Error(`Missing fragment shader (${t.name})`);if(l&&(r.attributes&m.CONVOLUTION)!=0)throw Error(`Effects that transform UVs are incompatible with convolution effects (${t.name})`);if(a||l){let o=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,u=r.shaderParts,h=u.get(g.FRAGMENT_HEAD)||"",c=u.get(g.FRAGMENT_MAIN_UV)||"",d=u.get(g.FRAGMENT_MAIN_IMAGE)||"",f=u.get(g.VERTEX_HEAD)||"",p=u.get(g.VERTEX_MAIN_SUPPORT)||"",v=new Set,y=new Set;if(l&&(c+=` ${e}MainUv(UV); +`,r.uvTransformation=!0),null!==n&&/mainSupport/.test(n)){let t=/mainSupport *\([\w\s]*?uv\s*?\)/.test(n);for(let i of(p+=` ${e}MainSupport(`,p+=t?"vUv);\n":");\n",n.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g)))for(let e of i[1].split(/\s*,\s*/))r.varyings.add(e),v.add(e),y.add(e);for(let e of n.matchAll(o))y.add(e[1])}for(let e of s.matchAll(o))y.add(e[1]);for(let e of t.defines.keys())y.add(e.replace(/\([\w\s,]*\)/g,""));for(let e of t.uniforms.keys())y.add(e);y.delete("while"),y.delete("for"),y.delete("if"),t.uniforms.forEach((t,i)=>r.uniforms.set(e+i.charAt(0).toUpperCase()+i.slice(1),t)),t.defines.forEach((t,i)=>r.defines.set(e+i.charAt(0).toUpperCase()+i.slice(1),t));let S=new Map([["fragment",s],["vertex",n]]);el(e,y,r.defines),el(e,y,S),s=S.get("fragment"),n=S.get("vertex");let x=t.blendMode;if(r.blendModes.set(x.blendFunction,x),a){null!==t.inputColorSpace&&t.inputColorSpace!==r.colorSpace&&(d+=t.inputColorSpace===i.er$?"color0 = sRGBTransferOETF(color0);\n ":"color0 = sRGBToLinear(color0);\n "),t.outputColorSpace!==i.jf0?r.colorSpace=t.outputColorSpace:null!==t.inputColorSpace&&(r.colorSpace=t.inputColorSpace),d+=`${e}MainImage(color0, UV, `,(r.attributes&m.DEPTH)!=0&&/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/.test(s)&&(d+="depth, ",r.readDepth=!0),d+="color1);\n ";let n=e+"BlendOpacity";r.uniforms.set(n,x.opacity),d+=`color0 = blend${x.blendFunction}(color0, color1, ${n}); + + `,h+=`uniform float ${n}; + +`}if(h+=s+"\n",null!==n&&(f+=n+"\n"),u.set(g.FRAGMENT_HEAD,h),u.set(g.FRAGMENT_MAIN_UV,c),u.set(g.FRAGMENT_MAIN_IMAGE,d),u.set(g.VERTEX_HEAD,f),u.set(g.VERTEX_MAIN_SUPPORT,p),null!==t.extensions)for(let e of t.extensions)r.extensions.add(e)}else throw Error(`Could not find mainImage or mainUv function (${t.name})`)}("e"+t++,r,e);let r=e.shaderParts.get(g.FRAGMENT_HEAD),s=e.shaderParts.get(g.FRAGMENT_MAIN_IMAGE),n=e.shaderParts.get(g.FRAGMENT_MAIN_UV),a=/\bblend\b/g;for(let t of e.blendModes.values())r+=t.getShaderCode().replace(a,`blend${t.blendFunction}`)+"\n";for(let[t,a]of((e.attributes&m.DEPTH)!=0?(e.readDepth&&(s="float depth = readDepth(UV);\n\n "+s),this.needsDepthTexture=null===this.getDepthTexture()):this.needsDepthTexture=!1,e.colorSpace===i.er$&&(s+="color0 = sRGBToLinear(color0);\n "),e.uvTransformation?(n="vec2 transformedUv = vUv;\n"+n,e.defines.set("UV","transformedUv")):e.defines.set("UV","vUv"),e.shaderParts.set(g.FRAGMENT_HEAD,r),e.shaderParts.set(g.FRAGMENT_MAIN_IMAGE,s),e.shaderParts.set(g.FRAGMENT_MAIN_UV,n),e.shaderParts))null!==a&&e.shaderParts.set(t,a.trim().replace(/^#/,"\n#"));this.skipRendering=0===t,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(e)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e,t=i.Rkk){for(let r of(this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t,this.effects))r.setDepthTexture(e,t)}render(e,t,r,i,s){for(let r of this.effects)r.update(e,t,i);if(!this.skipRendering||this.renderToScreen){let s=this.fullscreenMaterial;s.inputBuffer=t.texture,s.time+=i*this.timeScale,e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}}setSize(e,t){for(let r of(this.fullscreenMaterial.setSize(e,t),this.effects))r.setSize(e,t)}initialize(e,t,r){for(let i of(this.renderer=e,this.effects))i.initialize(e,t,r);this.updateMaterial(),void 0!==r&&r!==i.OUM&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){for(let e of(super.dispose(),this.effects))e.removeEventListener("change",this.listener),e.dispose()}handleEvent(e){"change"===e.type&&this.recompile()}},eu=class extends a{constructor(e,t,{renderTarget:r,resolutionScale:s=1,width:n=w.AUTO_SIZE,height:a=w.AUTO_SIZE,resolutionX:l=n,resolutionY:o=a}={}){super("NormalPass"),this.needsSwap=!1,this.renderPass=new k(e,t,new i.qBx);let u=this.renderPass;u.ignoreBackground=!0,u.skipShadowMapUpdate=!0;let h=u.getClearPass();h.overrideClearColor=new i.Q1f(7829503),h.overrideClearAlpha=1,this.renderTarget=r,void 0===this.renderTarget&&(this.renderTarget=new i.nWS(1,1,{minFilter:i.hxR,magFilter:i.hxR}),this.renderTarget.texture.name="NormalPass.Target");let c=this.resolution=new w(this,l,o,s);c.addEventListener("change",e=>this.setSize(c.baseWidth,c.baseHeight))}set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,i,s){let n=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,n,n)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height)}};function eh(e,t,r,i){var s;return(s=e+(t-e)*.75)+(r+(i-r)*.75-s)*.875}new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array(2),new Float32Array(2),new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125]),new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4]),new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3]),eh(0,0,0,0),new Float32Array([0,0,0,0]),eh(0,0,0,1),new Float32Array([0,0,0,1]),eh(0,0,1,0),new Float32Array([0,0,1,0]),eh(0,0,1,1),new Float32Array([0,0,1,1]),eh(0,1,0,0),new Float32Array([0,1,0,0]),eh(0,1,0,1),new Float32Array([0,1,0,1]),eh(0,1,1,0),new Float32Array([0,1,1,0]),eh(0,1,1,1),new Float32Array([0,1,1,1]),eh(1,0,0,0),new Float32Array([1,0,0,0]),eh(1,0,0,1),new Float32Array([1,0,0,1]),eh(1,0,1,0),new Float32Array([1,0,1,0]),eh(1,0,1,1),new Float32Array([1,0,1,1]),eh(1,1,0,0),new Float32Array([1,1,0,0]),eh(1,1,0,1),new Float32Array([1,1,0,1]),eh(1,1,1,0),new Float32Array([1,1,1,0]),eh(1,1,1,1),new Float32Array([1,1,1,1])}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/page-6749c033bbbab822.js b/docs/_next/static/chunks/app/page-6749c033bbbab822.js deleted file mode 100644 index 3aa0e69b..00000000 --- a/docs/_next/static/chunks/app/page-6749c033bbbab822.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{6179:(s,e,t)=>{Promise.resolve().then(t.bind(t,9547))},6538:s=>{"use strict";class e extends SyntaxError{format(s){let e="Error: "+this.message;if(this.location){let t=null,i=s.find(s=>s.source===this.location.source);i&&(t=i.text.split(/\r\n|\n|\r/g));let r=this.location.start,a=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(r):r,l=this.location.source+":"+a.line+":"+a.column;if(t){let s=this.location.end,i="".padEnd(a.line.toString().length," "),n=t[r.line-1],u=(r.line===s.line?s.column:n.length+1)-r.column||1;e+="\n --\x3e "+l+"\n"+i+" |\n"+a.line+" | "+n+"\n"+i+" | "+"".padEnd(r.column-1," ")+"".padEnd(u,"^")}else e+="\n at "+l}return e}static buildMessage(s,e){function t(s){return s.codePointAt(0).toString(16).toUpperCase()}let i=Object.prototype.hasOwnProperty.call(RegExp.prototype,"unicode")?RegExp("[\\p{C}\\p{Mn}\\p{Mc}]","gu"):null;function r(s){return i?s.replace(i,s=>"\\u{"+t(s)+"}"):s}function a(s){return r(s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,s=>"\\x0"+t(s)).replace(/[\x10-\x1F\x7F-\x9F]/g,s=>"\\x"+t(s)))}function l(s){return r(s.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,s=>"\\x0"+t(s)).replace(/[\x10-\x1F\x7F-\x9F]/g,s=>"\\x"+t(s)))}let n={literal:s=>'"'+a(s.text)+'"',class(s){let e=s.parts.map(s=>Array.isArray(s)?l(s[0])+"-"+l(s[1]):l(s));return"["+(s.inverted?"^":"")+e.join("")+"]"+(s.unicode?"u":"")},any:()=>"any character",end:()=>"end of input",other:s=>s.description};function u(s){return n[s.type](s)}return"Expected "+function(s){let e=s.map(u);if(e.sort(),e.length>0){let s=1;for(let t=1;t=K.length)t=K.length-1;else for(t=e;!K[--t];);for(i={line:(i=K[t]).line,column:i.column};tJ&&(J=X,Y=[]),Y.push(s))}function si(){let e,t,i,a;for(e=X,t=[],i=sr();i!==r;)t.push(i),i=sr();return(i=X,Z++,s.length>X?(a=s.charAt(X),X++):(a=r,0===Z&&st(T)),Z--,a===r?i=void 0:(X=i,i=r),i!==r)?e=t.filter(Boolean):(X=e,e=r),e}function sr(){let e,t,i;if((e=sa())===r&&(e=sl())===r&&(e=su())===r&&(e=function(){let e,t,i,a,l,n,v,d,p,o,c,x,_,g,k,m,h,T;if(e=X,s.substr(X,10)===u?(t=u,X+=10):(t=r,0===Z&&st(D)),t!==r){for(i=[],a=so();a!==r;)i.push(a),a=so();if((a=sx())!==r){for(l=[],n=so();n!==r;)l.push(n),n=so();if(40===s.charCodeAt(X)?(n="(",X++):(n=r,0===Z&&st(b)),n!==r){for(v=[],d=so();d!==r;)v.push(d),d=so();for((d=s_())===r&&(d=null),p=[],o=so();o!==r;)p.push(o),o=so();if(41===s.charCodeAt(X)?(o=")",X++):(o=r,0===Z&&st(P)),o!==r){for(c=[],x=so();x!==r;)c.push(x),x=so();if(x=X,58===s.charCodeAt(X)?(_=":",X++):(_=r,0===Z&&st(y)),_!==r){for(g=[],k=so();k!==r;)g.push(k),k=so();(k=s_())!==r?x=_=[_,g,k]:(X=x,x=r)}else X=x,x=r;for(x===r&&(x=null),_=[],g=so();g!==r;)_.push(g),g=so();if(123===s.charCodeAt(X)?(g="{",X++):(g=r,0===Z&&st(M)),g!==r){for(k=[],m=sn();m!==r;)k.push(m),m=sn();if(125===s.charCodeAt(X)?(m="}",X++):(m=r,0===Z&&st(z)),m!==r){for(h=[],T=sc();T!==r;)h.push(T),T=sc();e={type:"datablock",className:a,instanceName:d,body:k.filter(Boolean)}}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r;return e}())===r){if(e=X,t=[],(i=so())!==r)for(;i!==r;)t.push(i),i=so();else t=r;t!==r&&(t=null),e=t}return e}function sa(){let e,t,i,a,l;if(e=X,"//"===s.substr(X,2)?(t="//",X+=2):(t=r,0===Z&&st(f)),t!==r){for(i=X,a=[],l=s.charAt(X),o.test(l)?X++:(l=r,0===Z&&st(L));l!==r;)a.push(l),l=s.charAt(X),o.test(l)?X++:(l=r,0===Z&&st(L));e={type:"comment",text:i=s.substring(i,X)}}else X=e,e=r;return e}function sl(){let e,t,i,a,l,n,u,d,p,o,c,x,_,g,k,m;if(e=X,s.substr(X,4)===v?(t=v,X+=4):(t=r,0===Z&&st(w)),t!==r){for(i=[],a=so();a!==r;)i.push(a),a=so();if((a=sx())!==r){for(l=[],n=so();n!==r;)l.push(n),n=so();if(40===s.charCodeAt(X)?(n="(",X++):(n=r,0===Z&&st(b)),n!==r){for(u=[],d=so();d!==r;)u.push(d),d=so();for((d=s_())===r&&(d=null),p=[],o=so();o!==r;)p.push(o),o=so();if(41===s.charCodeAt(X)?(o=")",X++):(o=r,0===Z&&st(P)),o!==r){for(c=[],x=so();x!==r;)c.push(x),x=so();if(123===s.charCodeAt(X)?(x="{",X++):(x=r,0===Z&&st(M)),x!==r){for(_=[],g=sn();g!==r;)_.push(g),g=sn();if(125===s.charCodeAt(X)?(g="}",X++):(g=r,0===Z&&st(z)),g!==r){for(k=[],m=sc();m!==r;)k.push(m),m=sc();e={type:"instance",className:a,instanceName:d,body:_.filter(Boolean)}}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r;return e}function sn(){let s,e,t;if(s=X,e=[],(t=so())!==r)for(;t!==r;)e.push(t),t=so();else e=r;return e!==r&&(e=null),(s=e)===r&&(s=su())===r&&(s=sl())===r&&(s=sa()),s}function su(){let e,t,i,a,l,n,u;if(e=X,(t=function(){let s,e,t,i;if(s=X,(e=sx())!==r){for(t=[],i=sg();i!==r;)t.push(i),i=sg();s={name:e,index:t}}else X=s,s=r;return s}())!==r){for(i=[],a=so();a!==r;)i.push(a),a=so();if(61===s.charCodeAt(X)?(a="=",X++):(a=r,0===Z&&st(W)),a!==r){let i,a,v;for(l=[],n=so();n!==r;)l.push(n),n=so();if((i=function(){let e,t,i,a;if(e=X,34===s.charCodeAt(X)?(t='"',X++):(t=r,0===Z&&st(A)),t!==r){for(i=[],(a=sv())===r&&(a=sd());a!==r;)i.push(a),(a=sv())===r&&(a=sd());(34===s.charCodeAt(X)?(a='"',X++):(a=r,0===Z&&st(A)),a!==r)?e={type:"string",value:i.join("")}:(X=e,e=r)}else X=e,e=r;if(e===r)if(e=X,39===s.charCodeAt(X)?(t="'",X++):(t=r,0===Z&&st(O)),t!==r){for(i=[],(a=sv())===r&&(a=sp());a!==r;)i.push(a),(a=sv())===r&&(a=sp());(39===s.charCodeAt(X)?(a="'",X++):(a=r,0===Z&&st(O)),a!==r)?e={type:"string",value:i.join("")}:(X=e,e=r)}else X=e,e=r;return e}())===r&&(i=sk())===r&&(i=sl())===r&&(s.substr(X,4)===d?(v=d,X+=4):(v=r,0===Z&&st(j)),v===r&&(s.substr(X,5)===p?(v=p,X+=5):(v=r,0===Z&&st(U))),v!==r&&(v={type:"boolean",value:"true"===v}),(i=v)===r)&&(i=X,(a=sx())!==r&&(a={type:"reference",value:a}),i=a),(n=i)!==r)59===s.charCodeAt(X)?(u=";",X++):(u=r,0===Z&&st(H)),u===r&&(u=null),e={type:"definition",target:t,value:n};else X=e,e=r}else X=e,e=r}else X=e,e=r;return e}function sv(){let e,t,i;return(e=X,92===s.charCodeAt(X)?(t="\\",X++):(t=r,0===Z&&st(V)),t!==r&&(s.length>X?(i=s.charAt(X),X++):(i=r,0===Z&&st(T)),i!==r))?e=i:(X=e,e=r),e}function sd(){let e,t,i;if(e=X,t=[],i=s.charAt(X),c.test(i)?X++:(i=r,0===Z&&st(R)),i!==r)for(;i!==r;)t.push(i),i=s.charAt(X),c.test(i)?X++:(i=r,0===Z&&st(R));else t=r;return t!==r?s.substring(e,X):t}function sp(){let e,t,i;if(e=X,t=[],i=s.charAt(X),x.test(i)?X++:(i=r,0===Z&&st(S)),i!==r)for(;i!==r;)t.push(i),i=s.charAt(X),x.test(i)?X++:(i=r,0===Z&&st(S));else t=r;return t!==r?s.substring(e,X):t}function so(){let e;return e=s.charAt(X),_.test(e)?X++:(e=r,0===Z&&st(C)),e!==r&&(e=null),e}function sc(){let e;return 59===s.charCodeAt(X)?(e=";",X++):(e=r,0===Z&&st(H)),e}function sx(){let e,t,i,a,l,n;if(e=X,t=X,i=s.charAt(X),g.test(i)?X++:(i=r,0===Z&&st(N)),i===r&&(i=null),a=s.charAt(X),k.test(a)?X++:(a=r,0===Z&&st(G)),a!==r){for(l=[],n=s.charAt(X),m.test(n)?X++:(n=r,0===Z&&st(B));n!==r;)l.push(n),n=s.charAt(X),m.test(n)?X++:(n=r,0===Z&&st(B));t=i=[i,a,l]}else X=t,t=r;return t!==r?s.substring(e,X):t}function s_(){let s;return(s=sx())===r&&(s=sk()),s}function sg(){let e,t,i,a;return(e=function(){let e,t,i,a,l,n;if(e=X,91===s.charCodeAt(X)?(t="[",X++):(t=r,0===Z&&st(F)),t!==r){let t;for(i=[],a=so();a!==r;)i.push(a),a=so();if((t=sk())===r&&(t=sx()),(a=t)!==r){for(l=[],n=so();n!==r;)l.push(n),n=so();(93===s.charCodeAt(X)?(n="]",X++):(n=r,0===Z&&st(q)),n!==r)?e=a:(X=e,e=r)}else X=e,e=r}else X=e,e=r;return e}())===r&&((t=X,46===s.charCodeAt(X)?(i=".",X++):(i=r,0===Z&&st(E)),i!==r&&(a=sx())!==r)?t=a:(X=t,t=r),e=t),e}function sk(){let e,t,i;if(e=X,t=[],i=s.charAt(X),h.test(i)?X++:(i=r,0===Z&&st(I)),i!==r)for(;i!==r;)t.push(i),i=s.charAt(X),h.test(i)?X++:(i=r,0===Z&&st(I));else t=r;return(e=t!==r?s.substring(e,X):t)!==r&&(e={type:"number",value:parseFloat(e)}),e}let sm=(i=n())!==r&&X===s.length;function sh(){var t,a,l;throw i!==r&&X0&&void 0!==arguments[0]?arguments[0]:X,t=s.codePointAt(e);return void 0===t?"":String.fromCodePoint(t)}(J):null,l=J{"use strict";t.r(e),t.d(e,{default:()=>b});var i=t(5155),r=t(2115),a=t(7548),l=t(5339);let n=JSON.parse('{"BridgeTooFarReadme.txt":["DynamixFinalPack.vl2"],"Devil\'sElbowReadme.txt":["DynamixFinalPack.vl2"],"Dopplegangers.txt":["DesertWind.vl2","centaur.vl2"],"EULA.txt":["base.vl2"],"Info.txt":["yHDTextures2.0.vl2"],"InnerSanctumReadme.txt":["DynamixFinalPack.vl2"],"IsleOfManReadme.txt":["DynamixFinalPack.vl2"],"LICENSE":["SkiFreeGameType.vl2"],"PantheonReadme.txt":["DynamixFinalPack.vl2"],"ReadMe.txt":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"TWL-MapPack Readme.txt":["TWL-MapPack.vl2"],"TWL2-Map Pack Readme.txt":["TWL2-MapPack.vl2"],"TridentReadme.txt":["DynamixFinalPack.vl2"],"UKEULA.txt":["base.vl2"],"Xtra_missions/Attrition.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Chasmaclysmic.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DBS_Smoothed.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DX_Badlands.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DX_Desert.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DX_Ice.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Badlands.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Desert.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Ice.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Lush.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HillKingLT.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/MapAssets.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Moonwalk.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Pariah_Mirrored.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/PlanetX.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/PuliVeivari.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Ravine.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Rush.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Badlands.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Desert.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Ice.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Lush.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Night.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Normal.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Stripmine.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/VanDamnedLT.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/T2Intro.wav":["audio.vl2"],"audio/Windloop2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal4.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal5.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal6.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal7.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/birdfrog.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/Bonuses/Nouns/airplane.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/astronaut.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/atmosphere.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/balloon.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/bats.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/beeswarm.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/birdofprey.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/blimp.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/bluejay.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/budgie.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/butterfly.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/camel.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/captain.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cat.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cheetah.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/chickadee.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cloud.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/colonel.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/condor.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cougar.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cow.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/coyote.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/crow.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/dog.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/donkey.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/dove.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/dragonfly.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/flamingo.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/fly.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/general.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/goldfinch.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/grasshopper.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/helicopter.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/hornet.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/horse.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/hurricane.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/iguana.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/jaguar.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/llama.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/major.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/moon.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/msquito.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/ostrich.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/owl.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/ozone.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/parakeet.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/pelican.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/puppy.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/shark.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/snake.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/special1.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/special2.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/special3.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/swallow.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/tiger.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/tornado.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/turtle.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/warnipple.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/wasp.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/wolf.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/zebra.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/zeppellin.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_passback1_prayer.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_passback2_moyoyo.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_passback3_rocket.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_perppass1_blast.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_perppass2_deepdish.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_perppass3_bunnybump.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_straipass1_yoyo.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_straipass2_skydive.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_straipass3_jolt.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/gadget3.wav":["TR2final105-client.vl2"],"audio/fx/Bonuses/high-level1-frozen.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level2-shooting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level3-dangling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level4-blazing.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level5-raining.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level6-falling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_passback1_jab.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_passback2_backbreaker.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_passback3_leetlob.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_perppass1_peeler.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_perppass2_blender.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_perppass3_glasssmash.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_straipass1_bullet.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_straipass2_heist.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_straipass3_smackshot.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level1-sharp.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level2-spitting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level3-whipped.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level4-popping.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level5-bursting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/mario-6notes.wav":["TR2final105-client.vl2"],"audio/fx/Bonuses/med-level1-modest.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level2-ripped.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level3-shining.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level4-slick.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level5-sprinkling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level6-brilliant.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_passback1_bomb.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_passback2_deliverance.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_passback3_crank.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_perppass1_fling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_perppass2_quark.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_perppass3_juggletoss.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_straipass1_ascension.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_straipass2_elevator.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level1-suspended.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level2-skeeting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level3-hanging.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level4-arcing.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level5-pouring.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level6-elite.wav":["TR2final093-extras.vl2"],"audio/fx/armor/breath_bio_uw.wav":["audio.vl2"],"audio/fx/armor/breath_fem_uw.wav":["audio.vl2"],"audio/fx/armor/breath_uw.wav":["audio.vl2"],"audio/fx/armor/bubbletrail.wav":["audio.vl2"],"audio/fx/armor/bubbletrail2.wav":["audio.vl2"],"audio/fx/armor/general_water_bigsplash.wav":["audio.vl2"],"audio/fx/armor/general_water_exit.wav":["audio.vl2"],"audio/fx/armor/general_water_exit2.wav":["audio.vl2"],"audio/fx/armor/general_water_medsplash.wav":["audio.vl2"],"audio/fx/armor/general_water_smallsplash.wav":["audio.vl2"],"audio/fx/armor/general_water_smallsplash2.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_hard.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_metal.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_snow.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_soft.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_uw.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_water.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_hard.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_metal.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_snow.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_soft.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_uw.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_water.wav":["audio.vl2"],"audio/fx/armor/heavy_land_hard.wav":["audio.vl2"],"audio/fx/armor/heavy_land_snow.wav":["audio.vl2"],"audio/fx/armor/heavy_land_soft.wav":["audio.vl2"],"audio/fx/armor/light_LF_bubbles.wav":["audio.vl2"],"audio/fx/armor/light_LF_hard.wav":["audio.vl2"],"audio/fx/armor/light_LF_metal.wav":["audio.vl2"],"audio/fx/armor/light_LF_snow.wav":["audio.vl2"],"audio/fx/armor/light_LF_soft.wav":["audio.vl2"],"audio/fx/armor/light_LF_uw.wav":["audio.vl2"],"audio/fx/armor/light_LF_wade.wav":["audio.vl2"],"audio/fx/armor/light_LF_water.wav":["audio.vl2"],"audio/fx/armor/light_RF_bubbles.wav":["audio.vl2"],"audio/fx/armor/light_RF_hard.wav":["audio.vl2"],"audio/fx/armor/light_RF_metal.wav":["audio.vl2"],"audio/fx/armor/light_RF_snow.wav":["audio.vl2"],"audio/fx/armor/light_RF_soft.wav":["audio.vl2"],"audio/fx/armor/light_RF_uw.wav":["audio.vl2"],"audio/fx/armor/light_RF_wade.wav":["audio.vl2"],"audio/fx/armor/light_RF_water.wav":["audio.vl2"],"audio/fx/armor/light_land_hard.wav":["audio.vl2"],"audio/fx/armor/light_land_metal.wav":["audio.vl2"],"audio/fx/armor/light_land_snow.wav":["audio.vl2"],"audio/fx/armor/light_land_soft.wav":["audio.vl2"],"audio/fx/armor/med_LF_hard.wav":["audio.vl2"],"audio/fx/armor/med_LF_metal.wav":["audio.vl2"],"audio/fx/armor/med_LF_snow.wav":["audio.vl2"],"audio/fx/armor/med_LF_soft.wav":["audio.vl2"],"audio/fx/armor/med_LF_uw.wav":["audio.vl2"],"audio/fx/armor/med_LF_water.wav":["audio.vl2"],"audio/fx/armor/med_RF_hard.wav":["audio.vl2"],"audio/fx/armor/med_RF_metal.wav":["audio.vl2"],"audio/fx/armor/med_RF_snow.wav":["audio.vl2"],"audio/fx/armor/med_RF_soft.wav":["audio.vl2"],"audio/fx/armor/med_RF_uw.wav":["audio.vl2"],"audio/fx/armor/med_RF_water.wav":["audio.vl2"],"audio/fx/armor/med_land_hard.wav":["audio.vl2"],"audio/fx/armor/med_land_snow.wav":["audio.vl2"],"audio/fx/armor/med_land_soft.wav":["audio.vl2"],"audio/fx/armor/ski_soft.wav":["audio.vl2"],"audio/fx/armor/thrust.wav":["audio.vl2"],"audio/fx/armor/thrust_uw.wav":["audio.vl2"],"audio/fx/bonuses/TRex.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/evillaugh.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/qseq1.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/qseq2.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/qseq3.wav":["TR2final105-client.vl2"],"audio/fx/environment/IrisStaticSweep.wav":["TWL-MapPack.vl2"],"audio/fx/environment/SalDefenceWarning.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/Salbaseambience.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/Salwindsand.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/base_1.wav":["audio.vl2"],"audio/fx/environment/base_2.wav":["audio.vl2"],"audio/fx/environment/base_3.wav":["audio.vl2"],"audio/fx/environment/base_pulse_1.wav":["audio.vl2"],"audio/fx/environment/base_pulse_2.wav":["audio.vl2"],"audio/fx/environment/bird_echo1.wav":["audio.vl2"],"audio/fx/environment/bird_echo2.wav":["audio.vl2"],"audio/fx/environment/bird_echo3.wav":["audio.vl2"],"audio/fx/environment/bird_echo4.wav":["audio.vl2"],"audio/fx/environment/bird_echo5.wav":["audio.vl2"],"audio/fx/environment/bubbles1.wav":["audio.vl2"],"audio/fx/environment/bubbles2.wav":["audio.vl2"],"audio/fx/environment/caynonwind144k.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/coldwind1.wav":["audio.vl2"],"audio/fx/environment/crickets.wav":["audio.vl2"],"audio/fx/environment/crickets_drygrass.wav":["audio.vl2"],"audio/fx/environment/ctmelody1.WAV":["audio.vl2"],"audio/fx/environment/ctmelody2.WAV":["audio.vl2"],"audio/fx/environment/ctmelody3.WAV":["audio.vl2"],"audio/fx/environment/ctmelody4.WAV":["audio.vl2"],"audio/fx/environment/desertowl.wav":["audio.vl2"],"audio/fx/environment/dnabird1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnabird3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnacloseriver.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnacricketnight.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaforest1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaforest2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnafrog.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnagabbiano.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaghost.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnanightengale.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaoceano.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaoceano2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaoceano3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnapanelsounds.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnapanelsounds2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnapigeon.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnastormblows.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnawolf.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnawolf2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/drywind.wav":["audio.vl2"],"audio/fx/environment/drywind2.wav":["audio.vl2"],"audio/fx/environment/fly_swarm.wav":["audio.vl2"],"audio/fx/environment/fog.wav":["audio.vl2"],"audio/fx/environment/frog1.wav":["audio.vl2"],"audio/fx/environment/frog2.wav":["audio.vl2"],"audio/fx/environment/gravel1.wav":["audio.vl2"],"audio/fx/environment/gravel2.wav":["audio.vl2"],"audio/fx/environment/gravel3.wav":["audio.vl2"],"audio/fx/environment/growl1.wav":["audio.vl2"],"audio/fx/environment/growl2.wav":["audio.vl2"],"audio/fx/environment/growl3.wav":["audio.vl2"],"audio/fx/environment/growl4.wav":["audio.vl2"],"audio/fx/environment/growl5.wav":["audio.vl2"],"audio/fx/environment/howlingwind1.wav":["audio.vl2"],"audio/fx/environment/howlingwind2.wav":["audio.vl2"],"audio/fx/environment/howlingwind3.wav":["audio.vl2"],"audio/fx/environment/icecrack1.wav":["audio.vl2"],"audio/fx/environment/icecrack2.wav":["audio.vl2"],"audio/fx/environment/icefall1.wav":["audio.vl2"],"audio/fx/environment/icefall2.wav":["audio.vl2"],"audio/fx/environment/icefall3.wav":["audio.vl2"],"audio/fx/environment/lakewaves.wav":["audio.vl2"],"audio/fx/environment/lakewaves2.wav":["audio.vl2"],"audio/fx/environment/lavabloop1.wav":["audio.vl2"],"audio/fx/environment/lavabloop2.wav":["audio.vl2"],"audio/fx/environment/lavabloop3.wav":["audio.vl2"],"audio/fx/environment/lavabloop4.wav":["audio.vl2"],"audio/fx/environment/lavabloop5.wav":["audio.vl2"],"audio/fx/environment/lavabloop6.wav":["audio.vl2"],"audio/fx/environment/lavabloop7.wav":["audio.vl2"],"audio/fx/environment/lavahiss.wav":["audio.vl2"],"audio/fx/environment/lavahostile.wav":["audio.vl2"],"audio/fx/environment/lavamellow1.wav":["audio.vl2"],"audio/fx/environment/leavesrustling.wav":["audio.vl2"],"audio/fx/environment/moaningwind1.wav":["audio.vl2"],"audio/fx/environment/oceanwaves.wav":["audio.vl2"],"audio/fx/environment/rain_hard_1.wav":["audio.vl2"],"audio/fx/environment/rain_hard_2.wav":["audio.vl2"],"audio/fx/environment/rain_light_1.wav":["audio.vl2"],"audio/fx/environment/rain_light_2.wav":["audio.vl2"],"audio/fx/environment/rain_medium_1.wav":["audio.vl2"],"audio/fx/environment/rain_medium_2.wav":["audio.vl2"],"audio/fx/environment/rain_medium_3.wav":["audio.vl2"],"audio/fx/environment/river1.wav":["audio.vl2"],"audio/fx/environment/river2.wav":["audio.vl2"],"audio/fx/environment/river3.wav":["audio.vl2"],"audio/fx/environment/rockslide1.wav":["audio.vl2"],"audio/fx/environment/rockslide2.wav":["audio.vl2"],"audio/fx/environment/rumblingthunder.wav":["audio.vl2"],"audio/fx/environment/sandpatter1.wav":["audio.vl2"],"audio/fx/environment/sandpatter2.wav":["audio.vl2"],"audio/fx/environment/sandstorm.wav":["audio.vl2"],"audio/fx/environment/sandstorm2.wav":["audio.vl2"],"audio/fx/environment/seagull1.wav":["TR2final105-client.vl2"],"audio/fx/environment/snowfall1.wav":["audio.vl2"],"audio/fx/environment/snowfall2.wav":["audio.vl2"],"audio/fx/environment/snowfall3.wav":["audio.vl2"],"audio/fx/environment/snowfall4.wav":["audio.vl2"],"audio/fx/environment/snowstorm1.wav":["audio.vl2"],"audio/fx/environment/snowstorm2.wav":["audio.vl2"],"audio/fx/environment/sys-boilingwater.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-lava1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-lava2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-lavastream.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-ocean.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-riverfast.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-riverslow.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-thunder1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-thunderaway.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-windstream.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/wetwind.wav":["audio.vl2"],"audio/fx/environment/whispers.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/wind_sandstorm.wav":["audio.vl2"],"audio/fx/environment/yeti_howl1.wav":["audio.vl2"],"audio/fx/environment/yeti_howl2.wav":["audio.vl2"],"audio/fx/explosions/deployables_explosion.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl03.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl10.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl23.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl27.wav":["audio.vl2"],"audio/fx/explosions/grenade_flash_explode.wav":["audio.vl2"],"audio/fx/explosions/vehicle_explosion.wav":["audio.vl2"],"audio/fx/misc/Cheer.wav":["TR2final105-client.vl2"],"audio/fx/misc/Flag1.wav":["TR2final105-client.vl2"],"audio/fx/misc/Flair.wav":["TR2final105-client.vl2"],"audio/fx/misc/MA1.wav":["TR2final105-client.vl2"],"audio/fx/misc/MA2.wav":["TR2final105-client.vl2"],"audio/fx/misc/MA3.wav":["TR2final105-client.vl2"],"audio/fx/misc/SHIELDH1.WAV":["audio.vl2"],"audio/fx/misc/Siege_Switching.WAV":["audio.vl2"],"audio/fx/misc/Yardsale.WAV":["audio.vl2"],"audio/fx/misc/bounty_bonus.wav":["audio.vl2"],"audio/fx/misc/bounty_completed.wav":["audio.vl2"],"audio/fx/misc/bounty_objrem1.wav":["audio.vl2"],"audio/fx/misc/bounty_objrem2.wav":["audio.vl2"],"audio/fx/misc/cannonshot.wav":["TR2final105-client.vl2"],"audio/fx/misc/cannonstart.wav":["TR2final105-client.vl2"],"audio/fx/misc/carscreech.wav":["TR2final105-client.vl2"],"audio/fx/misc/coin.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd-clap.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd-dis2.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd2.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd3.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdfade.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition1a.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition1b.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition2a.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition2b.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition3a.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition3b.wav":["TR2final105-client.vl2"],"audio/fx/misc/diagnostic_beep.wav":["audio.vl2"],"audio/fx/misc/diagnostic_on.wav":["audio.vl2"],"audio/fx/misc/downloading.wav":["audio.vl2"],"audio/fx/misc/flag_capture.wav":["audio.vl2"],"audio/fx/misc/flag_drop.wav":["audio.vl2"],"audio/fx/misc/flag_lost.wav":["audio.vl2"],"audio/fx/misc/flag_mined_female.wav":["audio.vl2"],"audio/fx/misc/flag_mined_male.wav":["audio.vl2"],"audio/fx/misc/flag_return.wav":["audio.vl2"],"audio/fx/misc/flag_snatch.wav":["audio.vl2"],"audio/fx/misc/flag_taken.wav":["audio.vl2"],"audio/fx/misc/flagcapture.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagenemy.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagflap.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagfriend.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagreturn.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagself.wav":["TR2final105-client.vl2"],"audio/fx/misc/flipflop_lost.wav":["audio.vl2"],"audio/fx/misc/flipflop_taken.wav":["audio.vl2"],"audio/fx/misc/gameover.wav":["TR2final105-client.vl2"],"audio/fx/misc/gamestart.wav":["TR2final105-client.vl2"],"audio/fx/misc/goal.wav":["TR2final105-client.vl2"],"audio/fx/misc/gridjump.wav":["TR2final105-client.vl2"],"audio/fx/misc/health_patch.wav":["audio.vl2"],"audio/fx/misc/heartbeat.wav":["audio.vl2"],"audio/fx/misc/hunters_1.wav":["audio.vl2"],"audio/fx/misc/hunters_10.wav":["audio.vl2"],"audio/fx/misc/hunters_15.wav":["audio.vl2"],"audio/fx/misc/hunters_2.wav":["audio.vl2"],"audio/fx/misc/hunters_3.wav":["audio.vl2"],"audio/fx/misc/hunters_30.wav":["audio.vl2"],"audio/fx/misc/hunters_4.wav":["audio.vl2"],"audio/fx/misc/hunters_5.wav":["audio.vl2"],"audio/fx/misc/hunters_60.wav":["audio.vl2"],"audio/fx/misc/hunters_flag_snatch.wav":["audio.vl2"],"audio/fx/misc/hunters_greed.wav":["audio.vl2"],"audio/fx/misc/hunters_horde.wav":["audio.vl2"],"audio/fx/misc/launcher.wav":["TR2final105-client.vl2"],"audio/fx/misc/lightning_impact.wav":["audio.vl2"],"audio/fx/misc/mine.deploy.WAV":["audio.vl2"],"audio/fx/misc/misc.error.wav":["audio.vl2"],"audio/fx/misc/missed.wav":["TR2final105-client.vl2"],"audio/fx/misc/nexus_cap.wav":["audio.vl2"],"audio/fx/misc/nexus_idle.wav":["audio.vl2"],"audio/fx/misc/red_alert.wav":["audio.vl2"],"audio/fx/misc/red_alert_short.wav":["TR2final105-client.vl2"],"audio/fx/misc/rolechange.wav":["TR2final105-client.vl2"],"audio/fx/misc/slapshot.wav":["TR2final105-client.vl2"],"audio/fx/misc/static.wav":["audio.vl2"],"audio/fx/misc/switch_taken.wav":["audio.vl2"],"audio/fx/misc/target_waypoint.wav":["audio.vl2"],"audio/fx/misc/vote_fails.wav":["audio.vl2"],"audio/fx/misc/vote_initiated.wav":["audio.vl2"],"audio/fx/misc/vote_passes.wav":["audio.vl2"],"audio/fx/misc/warning_beep.wav":["audio.vl2"],"audio/fx/misc/whistle.wav":["TR2final105-client.vl2"],"audio/fx/packs/cloak_on.wav":["audio.vl2"],"audio/fx/packs/inventory_deploy.wav":["audio.vl2"],"audio/fx/packs/packs.pickupPack.wav":["audio.vl2"],"audio/fx/packs/packs.repairPackOn.wav":["audio.vl2"],"audio/fx/packs/packs.throwPack.wav":["audio.vl2"],"audio/fx/packs/repair_use.wav":["audio.vl2"],"audio/fx/packs/satchel_pack_activate.wav":["audio.vl2"],"audio/fx/packs/satchel_pack_detonate.wav":["audio.vl2"],"audio/fx/packs/sensorjammerpack_on.wav":["audio.vl2"],"audio/fx/packs/shield_hit.wav":["audio.vl2"],"audio/fx/packs/shield_on.WAV":["audio.vl2"],"audio/fx/packs/turret_place.wav":["audio.vl2"],"audio/fx/powered/base_power_loop.wav":["audio.vl2"],"audio/fx/powered/base_power_off.wav":["audio.vl2"],"audio/fx/powered/base_power_on.wav":["audio.vl2"],"audio/fx/powered/dep_inv_station.wav":["audio.vl2"],"audio/fx/powered/generator_hum.wav":["audio.vl2"],"audio/fx/powered/inv_pad_appear.wav":["audio.vl2"],"audio/fx/powered/inv_pad_off.wav":["audio.vl2"],"audio/fx/powered/inv_pad_on.wav":["audio.vl2"],"audio/fx/powered/motion_sensor_activate.wav":["audio.vl2"],"audio/fx/powered/nexus_deny.wav":["audio.vl2"],"audio/fx/powered/sensor_activate.wav":["audio.vl2"],"audio/fx/powered/sensor_hum.wav":["audio.vl2"],"audio/fx/powered/station_denied.wav":["audio.vl2"],"audio/fx/powered/station_hum.wav":["audio.vl2"],"audio/fx/powered/turret_aa_activate.wav":["audio.vl2"],"audio/fx/powered/turret_aa_fire.wav":["audio.vl2"],"audio/fx/powered/turret_heavy_activate.wav":["audio.vl2"],"audio/fx/powered/turret_heavy_idle.wav":["audio.vl2"],"audio/fx/powered/turret_heavy_reload.wav":["audio.vl2"],"audio/fx/powered/turret_indoor_fire.wav":["audio.vl2"],"audio/fx/powered/turret_light_activate.wav":["audio.vl2"],"audio/fx/powered/turret_light_idle.wav":["audio.vl2"],"audio/fx/powered/turret_light_reload.wav":["audio.vl2"],"audio/fx/powered/turret_missile_activate.wav":["audio.vl2"],"audio/fx/powered/turret_missile_fire.wav":["audio.vl2"],"audio/fx/powered/turret_mortar_explode.wav":["audio.vl2"],"audio/fx/powered/turret_mortar_fire.wav":["audio.vl2"],"audio/fx/powered/turret_outdoor_fire.wav":["audio.vl2"],"audio/fx/powered/turret_plasma_explode.wav":["audio.vl2"],"audio/fx/powered/turret_plasma_fire.wav":["audio.vl2"],"audio/fx/powered/turret_sentry_activate.wav":["audio.vl2"],"audio/fx/powered/turret_sentry_fire.wav":["audio.vl2"],"audio/fx/powered/turret_sentry_impact.wav":["audio.vl2"],"audio/fx/powered/vehicle_pad_on.wav":["audio.vl2"],"audio/fx/powered/vehicle_screen_off.wav":["audio.vl2"],"audio/fx/powered/vehicle_screen_on.wav":["audio.vl2"],"audio/fx/powered/vehicle_screen_on2.wav":["audio.vl2"],"audio/fx/vehicles/MPB_close_lid.wav":["audio.vl2"],"audio/fx/vehicles/MPB_deploy.wav":["audio.vl2"],"audio/fx/vehicles/MPB_deploy_station.wav":["audio.vl2"],"audio/fx/vehicles/MPB_deploy_turret.wav":["audio.vl2"],"audio/fx/vehicles/MPB_undeploy_turret.wav":["audio.vl2"],"audio/fx/vehicles/MPB_undeploy_turret2.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_dryfire.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_impact.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_projectile.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_reload.wav":["audio.vl2"],"audio/fx/vehicles/bomber_boost.wav":["audio.vl2"],"audio/fx/vehicles/bomber_engine.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_activate.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_dryfire.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_fire.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_reload.wav":["audio.vl2"],"audio/fx/vehicles/cockpit_activate.wav":["audio.vl2"],"audio/fx/vehicles/crash_grav_soft.wav":["audio.vl2"],"audio/fx/vehicles/crash_ground_vehicle.wav":["audio.vl2"],"audio/fx/vehicles/crash_hard.wav":["audio.vl2"],"audio/fx/vehicles/crash_soft.wav":["audio.vl2"],"audio/fx/vehicles/htransport_boost.wav":["audio.vl2"],"audio/fx/vehicles/htransport_thrust.wav":["audio.vl2"],"audio/fx/vehicles/inventory_pad_appear.wav":["audio.vl2"],"audio/fx/vehicles/inventory_pad_on.wav":["audio.vl2"],"audio/fx/vehicles/mount.wav":["audio.vl2"],"audio/fx/vehicles/mount_dis.wav":["audio.vl2"],"audio/fx/vehicles/mpb_boost.wav":["audio.vl2"],"audio/fx/vehicles/mpb_inv_station.wav":["audio.vl2"],"audio/fx/vehicles/mpb_thrust.wav":["audio.vl2"],"audio/fx/vehicles/outrider_boost.wav":["audio.vl2"],"audio/fx/vehicles/outrider_engine.wav":["audio.vl2"],"audio/fx/vehicles/outrider_skid.wav":["audio.vl2"],"audio/fx/vehicles/shrike_blaster.wav":["audio.vl2"],"audio/fx/vehicles/shrike_blaster_projectile.wav":["audio.vl2"],"audio/fx/vehicles/shrike_blaster_projectile_impact.wav":["audio.vl2"],"audio/fx/vehicles/shrike_boost.wav":["audio.vl2"],"audio/fx/vehicles/shrike_engine.wav":["audio.vl2"],"audio/fx/vehicles/tank_activate.wav":["audio.vl2"],"audio/fx/vehicles/tank_boost.wav":["audio.vl2"],"audio/fx/vehicles/tank_chaingun.wav":["audio.vl2"],"audio/fx/vehicles/tank_engine.wav":["audio.vl2"],"audio/fx/vehicles/tank_mortar_fire.wav":["audio.vl2"],"audio/fx/vehicles/tank_skid.wav":["audio.vl2"],"audio/fx/vehicles/wake_shrike_n_tank.wav":["audio.vl2"],"audio/fx/vehicles/wake_wildcat.wav":["audio.vl2"],"audio/fx/weapons/ELF_fire.wav":["audio.vl2"],"audio/fx/weapons/ELF_hit.wav":["audio.vl2"],"audio/fx/weapons/ELF_underwater.wav":["audio.vl2"],"audio/fx/weapons/TR2spinfusor_fire.wav":["TR2final105-client.vl2"],"audio/fx/weapons/blaster_activate.wav":["audio.vl2"],"audio/fx/weapons/blaster_fire.WAV":["audio.vl2"],"audio/fx/weapons/blaster_impact.wav":["audio.vl2"],"audio/fx/weapons/blaster_projectile.wav":["audio.vl2"],"audio/fx/weapons/cg_hard1.wav":["audio.vl2"],"audio/fx/weapons/cg_hard2.wav":["audio.vl2"],"audio/fx/weapons/cg_hard3.wav":["audio.vl2"],"audio/fx/weapons/cg_hard4.wav":["audio.vl2"],"audio/fx/weapons/cg_metal1.wav":["audio.vl2"],"audio/fx/weapons/cg_metal2.wav":["audio.vl2"],"audio/fx/weapons/cg_metal3.wav":["audio.vl2"],"audio/fx/weapons/cg_metal4.wav":["audio.vl2"],"audio/fx/weapons/cg_soft1.wav":["audio.vl2"],"audio/fx/weapons/cg_soft2.wav":["audio.vl2"],"audio/fx/weapons/cg_soft3.wav":["audio.vl2"],"audio/fx/weapons/cg_soft4.wav":["audio.vl2"],"audio/fx/weapons/cg_water1.wav":["audio.vl2"],"audio/fx/weapons/cg_water2.wav":["audio.vl2"],"audio/fx/weapons/cg_water3.wav":["audio.vl2"],"audio/fx/weapons/cg_water4.wav":["audio.vl2"],"audio/fx/weapons/chaingun_activate.wav":["audio.vl2"],"audio/fx/weapons/chaingun_dryfire.wav":["audio.vl2"],"audio/fx/weapons/chaingun_fire.wav":["audio.vl2"],"audio/fx/weapons/chaingun_impact.wav":["audio.vl2"],"audio/fx/weapons/chaingun_off.wav":["audio.vl2"],"audio/fx/weapons/chaingun_projectile.wav":["audio.vl2"],"audio/fx/weapons/chaingun_spindown.wav":["audio.vl2"],"audio/fx/weapons/chaingun_spinup.wav":["audio.vl2"],"audio/fx/weapons/chaingun_start.wav":["audio.vl2"],"audio/fx/weapons/generic_switch.wav":["audio.vl2"],"audio/fx/weapons/grenade_camera_activate.wav":["audio.vl2"],"audio/fx/weapons/grenade_camera_attach.wav":["audio.vl2"],"audio/fx/weapons/grenade_explode.wav":["audio.vl2"],"audio/fx/weapons/grenade_explode_UW.wav":["audio.vl2"],"audio/fx/weapons/grenade_flash_explode.wav":["audio.vl2"],"audio/fx/weapons/grenade_switch.wav":["audio.vl2"],"audio/fx/weapons/grenade_throw.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_activate.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_dryfire.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_fire.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_projectile.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_reload.wav":["audio.vl2"],"audio/fx/weapons/mine_deploy.wav":["audio.vl2"],"audio/fx/weapons/mine_detonate.wav":["audio.vl2"],"audio/fx/weapons/mine_detonate_UW.wav":["audio.vl2"],"audio/fx/weapons/mine_switch.wav":["audio.vl2"],"audio/fx/weapons/missile_fire.wav":["audio.vl2"],"audio/fx/weapons/missile_firer_lock.wav":["audio.vl2"],"audio/fx/weapons/missile_firer_search.wav":["audio.vl2"],"audio/fx/weapons/missile_launcher_activate.wav":["audio.vl2"],"audio/fx/weapons/missile_launcher_dryfire.wav":["audio.vl2"],"audio/fx/weapons/missile_projectile.wav":["audio.vl2"],"audio/fx/weapons/missile_target_inbound.wav":["audio.vl2"],"audio/fx/weapons/missile_target_lock.wav":["audio.vl2"],"audio/fx/weapons/mortar_activate.wav":["audio.vl2"],"audio/fx/weapons/mortar_dryfire.wav":["audio.vl2"],"audio/fx/weapons/mortar_explode.wav":["audio.vl2"],"audio/fx/weapons/mortar_explode_UW.wav":["audio.vl2"],"audio/fx/weapons/mortar_fire.wav":["audio.vl2"],"audio/fx/weapons/mortar_projectile.wav":["audio.vl2"],"audio/fx/weapons/mortar_reload.wav":["audio.vl2"],"audio/fx/weapons/plasma_dryfire.wav":["audio.vl2"],"audio/fx/weapons/plasma_fizzle.wav":["audio.vl2"],"audio/fx/weapons/plasma_rifle_activate.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_fire.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_idle.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_projectile.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_projectile_die.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_projectile_hit.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_reload.WAV":["audio.vl2"],"audio/fx/weapons/shocklance_activate.wav":["audio.vl2"],"audio/fx/weapons/shocklance_dryfire.wav":["audio.vl2"],"audio/fx/weapons/shocklance_fire.wav":["audio.vl2"],"audio/fx/weapons/shocklance_miss.wav":["audio.vl2"],"audio/fx/weapons/shocklance_reload.wav":["audio.vl2"],"audio/fx/weapons/sniper_activate.wav":["audio.vl2"],"audio/fx/weapons/sniper_fire.wav":["audio.vl2"],"audio/fx/weapons/sniper_impact.wav":["audio.vl2"],"audio/fx/weapons/sniper_miss.wav":["audio.vl2"],"audio/fx/weapons/sniper_underwater.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_activate.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_dryfire.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_fire.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_idle.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_impact.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_impact_UW.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_projectile.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_reload.sfk":["audio.vl2"],"audio/fx/weapons/spinfusor_reload.wav":["audio.vl2"],"audio/fx/weapons/targetinglaser_paint.wav":["audio.vl2"],"audio/fx/weapons/temp.wav":["audio.vl2"],"audio/fx/weapons/throw_grenade.wav":["audio.vl2"],"audio/fx/weapons/throw_mine.wav":["audio.vl2"],"audio/fx/weapons/weapon.missilereload.wav":["audio.vl2"],"audio/gui/buttonDown.wav":["audio.vl2"],"audio/gui/buttonOver.wav":["audio.vl2"],"audio/gui/command_hum.wav":["audio.vl2"],"audio/gui/command_off.wav":["audio.vl2"],"audio/gui/command_on.wav":["audio.vl2"],"audio/gui/inventory_hum.wav":["audio.vl2"],"audio/gui/inventory_off.wav":["audio.vl2"],"audio/gui/inventory_on.wav":["audio.vl2"],"audio/gui/launchMenuOpen.wav":["audio.vl2"],"audio/gui/launchMenuOver.wav":["audio.vl2"],"audio/gui/loading_hum.wav":["audio.vl2"],"audio/gui/objective_notification.wav":["audio.vl2"],"audio/gui/shell_hum.wav":["audio.vl2"],"audio/gui/vote_nopass.wav":["audio.vl2"],"audio/gui/vote_pass.wav":["audio.vl2"],"audio/gui/youvegotmail.wav":["audio.vl2"],"audio/gui/youvegotmail2.WAV":["audio.vl2"],"audio/space_bird_3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/turret_2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/turret_3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/voice/Training/Briefings/SkiFree.brief01.WAV":["SkiFreeGameType.vl2"],"classic_maps.txt":["Classic_maps_v1.vl2"],"console_end.cs":["base.vl2"],"effects/Armor.ifr":["base.vl2"],"effects/explosions.ifr":["base.vl2"],"effects/gui.ifr":["base.vl2"],"effects/misc.ifr":["base.vl2"],"effects/packs.ifr":["base.vl2"],"effects/powered.ifr":["base.vl2"],"effects/vehicles.ifr":["base.vl2"],"effects/weapons.ifr":["base.vl2"],"flags.png":["zflags.vl2"],"fonts/Arial Bold_10.gft":["base.vl2"],"fonts/Arial Bold_12.gft":["base.vl2"],"fonts/Arial Bold_13.gft":["base.vl2"],"fonts/Arial Bold_14.gft":["base.vl2"],"fonts/Arial Bold_16.gft":["base.vl2"],"fonts/Arial Bold_18.gft":["base.vl2"],"fonts/Arial Bold_24.gft":["base.vl2"],"fonts/Arial Bold_32.gft":["base.vl2"],"fonts/Arial_12.gft":["base.vl2"],"fonts/Arial_13.gft":["base.vl2"],"fonts/Arial_14.gft":["base.vl2"],"fonts/Arial_16.gft":["base.vl2"],"fonts/Arial_18.gft":["base.vl2"],"fonts/Arial_20.gft":["base.vl2"],"fonts/Lucida Console_12.gft":["base.vl2"],"fonts/Sui Generis_14.gft":["base.vl2"],"fonts/Sui Generis_20.gft":["base.vl2"],"fonts/Sui Generis_22.gft":["base.vl2"],"fonts/Univers Bold_16.gft":["base.vl2"],"fonts/Univers Bold_18.gft":["base.vl2"],"fonts/Univers Condensed Bold_20.gft":["base.vl2"],"fonts/Univers Condensed_10.gft":["base.vl2"],"fonts/Univers Condensed_12.gft":["base.vl2"],"fonts/Univers Condensed_14.gft":["base.vl2"],"fonts/Univers Condensed_18.gft":["base.vl2"],"fonts/Univers Condensed_20.gft":["base.vl2"],"fonts/Univers Condensed_22.gft":["base.vl2"],"fonts/Univers condensed bold_28.gft":["base.vl2"],"fonts/Univers condensed_28.gft":["base.vl2"],"fonts/Univers condensed_30.gft":["base.vl2"],"fonts/Univers italic_16.gft":["base.vl2"],"fonts/Univers italic_18.gft":["base.vl2"],"fonts/Univers_12.gft":["base.vl2"],"fonts/Univers_14.gft":["base.vl2"],"fonts/Univers_16.gft":["base.vl2"],"fonts/Univers_18.gft":["base.vl2"],"fonts/Univers_22.gft":["base.vl2"],"fonts/Verdana Bold_12.gft":["base.vl2"],"fonts/Verdana Bold_13.gft":["base.vl2"],"fonts/Verdana Bold_14.gft":["base.vl2"],"fonts/Verdana Bold_16.gft":["base.vl2"],"fonts/Verdana Bold_24.gft":["base.vl2"],"fonts/Verdana Bold_36.gft":["base.vl2"],"fonts/Verdana Italic_12.gft":["base.vl2"],"fonts/Verdana Italic_13.gft":["base.vl2"],"fonts/Verdana Italic_14.gft":["base.vl2"],"fonts/Verdana Italic_16.gft":["base.vl2"],"fonts/Verdana_10.gft":["base.vl2"],"fonts/Verdana_12.gft":["base.vl2"],"fonts/Verdana_13.gft":["base.vl2"],"fonts/Verdana_14.gft":["base.vl2"],"fonts/Verdana_16.gft":["base.vl2"],"fonts/Verdana_18.gft":["base.vl2"],"fonts/arial bold_20.gft":["base.vl2"],"fonts/arial bold_50.gft":["base.vl2"],"fonts/times_24.gft":["base.vl2"],"fonts/times_36.gft":["base.vl2"],"fonts/univers condensed_16.gft":["base.vl2"],"gui/AIEButtonBarDlg.gui":["scripts.vl2"],"gui/AIEFrameSetDlg.gui":["scripts.vl2"],"gui/AIEStatusbarDlg.gui":["scripts.vl2"],"gui/AIEWorkingDlg.gui":["scripts.vl2"],"gui/AIEditorGui.gui":["scripts.vl2"],"gui/AIEditorToolBar.gui":["scripts.vl2"],"gui/AddressDlg.gui":["scripts.vl2"],"gui/AdvancedHostDlg.gui":["scripts.vl2"],"gui/BrowserEditInfoDlg.gui":["scripts.vl2"],"gui/BrowserSearchDlg.gui":["scripts.vl2"],"gui/CenterPrint.gui":["scripts.vl2"],"gui/ChannelBanDlg.gui":["scripts.vl2"],"gui/ChannelKeyDlg.gui":["scripts.vl2"],"gui/ChannelOptionsDlg.gui":["scripts.vl2"],"gui/ChatDlg.gui":["scripts.vl2"],"gui/ChatGui.gui":["scripts.vl2"],"gui/ChatOptionsDlg.gui":["scripts.vl2"],"gui/ChooseFilterDlg.gui":["scripts.vl2"],"gui/CommanderChatDlg.gui":["scripts.vl2"],"gui/CommanderMapGui.gui":["scripts.vl2"],"gui/CommonLoadDlg.gui":["scripts.vl2"],"gui/CommonSaveDlg.gui":["scripts.vl2"],"gui/CompTestGui.gui":["scripts.vl2"],"gui/ConsoleDlg.gui":["scripts.vl2"],"gui/CreateAccountDlg.gui":["scripts.vl2"],"gui/CreateTribeDlg.gui":["scripts.vl2"],"gui/CreditsGui.gui":["scripts.vl2"],"gui/DebriefGui.gui":["scripts.vl2"],"gui/DebuggerBreakConditionDlg.gui":["scripts.vl2"],"gui/DebuggerConnectDlg.gui":["scripts.vl2"],"gui/DebuggerEditWatchDlg.gui":["scripts.vl2"],"gui/DebuggerFindDlg.gui":["scripts.vl2"],"gui/DebuggerGui.gui":["scripts.vl2"],"gui/DebuggerWatchDlg.gui":["scripts.vl2"],"gui/DemoLoadProgressDlg.gui":["scripts.vl2"],"gui/DemoPlaybackDlg.gui":["scripts.vl2"],"gui/DemoRenameFileDlg.gui":["scripts.vl2"],"gui/DetailSetDlg.gui":["scripts.vl2"],"gui/DriverInfoDlg.gui":["scripts.vl2"],"gui/EULADlg.gui":["scripts.vl2"],"gui/EditChatCommandDlg.gui":["scripts.vl2"],"gui/EditChatMenuDlg.gui":["scripts.vl2"],"gui/EditChatMenuGui.gui":["scripts.vl2"],"gui/EditorGui.gui":["scripts.vl2"],"gui/EditorSaveMissionDlg.gui":["scripts.vl2"],"gui/EditorToolBarGui.gui":["scripts.vl2"],"gui/EditorToolCreatorGui.gui":["scripts.vl2"],"gui/EditorToolInspectorGui.gui":["scripts.vl2"],"gui/EditorToolMissionAreaGui.gui":["scripts.vl2"],"gui/EditorToolThumbnailGui.gui":["scripts.vl2"],"gui/EditorToolTreeViewGui.gui":["scripts.vl2"],"gui/EditorToolbarDlg.gui":["scripts.vl2"],"gui/EmailBlockDlg.gui":["scripts.vl2"],"gui/EmailComposeDlg.gui":["scripts.vl2"],"gui/EmailGui.gui":["scripts.vl2"],"gui/EnterIPDlg.gui":["scripts.vl2"],"gui/FilterEditDlg.gui":["scripts.vl2"],"gui/FindServerDlg.gui":["scripts.vl2"],"gui/FrameOverlayGui.gui":["scripts.vl2"],"gui/GameGui.gui":["scripts.vl2"],"gui/GenDialog.gui":["scripts.vl2"],"gui/GuiEditorGui.gui":["scripts.vl2"],"gui/GuiTestGui.gui":["scripts.vl2"],"gui/HUDDlgs.gui":["scripts.vl2"],"gui/HelpDlg.gui":["scripts.vl2"],"gui/IHVTest.gui":["scripts.vl2"],"gui/ImmSplashDlg.gui":["scripts.vl2"],"gui/InspectAddFieldDlg.gui":["scripts.vl2"],"gui/InspectDlg.gui":["scripts.vl2"],"gui/InteriorDebug.gui":["scripts.vl2"],"gui/InteriorPreviewGui.gui":["scripts.vl2"],"gui/JoinChatDlg.gui":["scripts.vl2"],"gui/JoystickConfigDlg.gui":["scripts.vl2"],"gui/LaunchGui.gui":["scripts.vl2"],"gui/LaunchToolbarDlg.gui":["scripts.vl2"],"gui/LoadingGui.gui":["scripts.vl2"],"gui/LobbyGui.gui":["scripts.vl2"],"gui/LoginDlg.gui":["scripts.vl2"],"gui/LoginMessageBoxDlg.gui":["scripts.vl2"],"gui/MessageBoxDlg.gui":["scripts.vl2"],"gui/MessagePopupDlg.gui":["scripts.vl2"],"gui/MouseConfigDlg.gui":["scripts.vl2"],"gui/MoveThreadDlg.gui":["scripts.vl2"],"gui/NewMissionGui.gui":["scripts.vl2"],"gui/NewWarriorDlg.gui":["scripts.vl2"],"gui/OptionsDlg.gui":["scripts.vl2"],"gui/PanoramaGui.gui":["scripts.vl2"],"gui/PasswordDlg.gui":["scripts.vl2"],"gui/PickTeamDlg.gui":["scripts.vl2"],"gui/PlayGui.gui":["scripts.vl2"],"gui/RecordingsDlg.gui":["scripts.vl2"],"gui/RemapDlg.gui":["scripts.vl2"],"gui/ServerInfoDlg.gui":["scripts.vl2"],"gui/ShellLoadFileDlg.gui":["scripts.vl2"],"gui/ShellSaveFileDlg.gui":["scripts.vl2"],"gui/SinglePlayerEscapeDlg.gui":["scripts.vl2"],"gui/TR2DebriefGui.gui":["TR2final105-client.vl2"],"gui/TSShowDetailControlDlg.gui":["scripts.vl2"],"gui/TSShowEditScale.gui":["scripts.vl2"],"gui/TSShowGui.gui":["scripts.vl2"],"gui/TSShowLightDlg.gui":["scripts.vl2"],"gui/TSShowLoadDlg.gui":["scripts.vl2"],"gui/TSShowMiscDlg.gui":["scripts.vl2"],"gui/TSShowThreadControlDlg.gui":["scripts.vl2"],"gui/TSShowTranDurEditDlg.gui":["scripts.vl2"],"gui/TSShowTransitionDlg.gui":["scripts.vl2"],"gui/TaskHudDlg.gui":["scripts.vl2"],"gui/TerraformerFullScreenGui.gui":["scripts.vl2"],"gui/TerraformerGui.gui":["scripts.vl2"],"gui/TerraformerHeightfieldGui.gui":["scripts.vl2"],"gui/TerraformerTextureGui.gui":["scripts.vl2"],"gui/TerrainEditorButtonbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorExtraToolbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorFramesetDlg.gui":["scripts.vl2"],"gui/TerrainEditorGui.gui":["scripts.vl2"],"gui/TerrainEditorStatusbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorTextureSelectGui.gui":["scripts.vl2"],"gui/TerrainEditorToolbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorVSettingsGui.gui":["scripts.vl2"],"gui/TerrainEditorValuesSettingsGui.gui":["scripts.vl2"],"gui/TestGui.gui":["scripts.vl2"],"gui/TrainingGui.gui":["scripts.vl2"],"gui/TribeAdminMemberDlg.gui":["scripts.vl2"],"gui/TribeAndWarriorBrowserGui.gui":["scripts.vl2"],"gui/TribePropertiesDlg.gui":["scripts.vl2"],"gui/WarriorPropertiesDlg.gui":["scripts.vl2"],"gui/WorldEditorButtonbarDlg.gui":["scripts.vl2"],"gui/WorldEditorFramesetDlg.gui":["scripts.vl2"],"gui/WorldEditorGui.gui":["scripts.vl2"],"gui/WorldEditorSettingsDlg.gui":["scripts.vl2"],"gui/WorldEditorStatusbarDlg.gui":["scripts.vl2"],"gui/WorldEditorToolbarDlg.gui":["scripts.vl2"],"gui/cmdMapHelpText.gui":["scripts.vl2"],"gui/guiProfiles.cs":["scripts.vl2"],"gui/helpTextGui.gui":["scripts.vl2"],"gui/objectBuilderGui.gui":["scripts.vl2"],"gui/sceneLightingGui.gui":["scripts.vl2"],"help/1. About.hfl":["scripts.vl2"],"help/2. Mission Editor Overview.hfl":["scripts.vl2"],"help/3. World Editor.hfl":["scripts.vl2"],"help/4. Mission Area Editor.hfl":["scripts.vl2"],"help/5. Terrain Editor.hfl":["scripts.vl2"],"help/6. Terrain Terraform Editor.hfl":["scripts.vl2"],"help/7. Terrain Texture Editor.hfl":["scripts.vl2"],"help/8. Terrain Texture Painter.hfl":["scripts.vl2"],"input.log":["base.vl2"],"interiors/Euro4_Bleed_Base.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Euro4_Bleed_turret.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Euro4_Bleed_vpad.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Euro4_Dissention_dox_bb_bunkera_x2.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_Dissention_dox_bb_hangar_x2.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_Dissention_rilke_whitedwarf_mainbase.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_FrozenHope_inf_butch_fhope_base47.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_FrozenHope_inf_butch_fhope_flag6.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_FrozenHope_inf_butch_fhope_turret12.dif":["TWL2-MapPack.vl2"],"interiors/Euro_salgenroom2.dif":["TWL-MapPack.vl2"],"interiors/Euro_salproj1.dif":["TWL-MapPack.vl2"],"interiors/Euro_salturretsus1.dif":["TWL-MapPack.vl2"],"interiors/Euro_slblocks.dif":["TWL-MapPack.vl2"],"interiors/Euro_slinvstat.dif":["TWL-MapPack.vl2"],"interiors/Euro_slremo2.dif":["TWL-MapPack.vl2"],"interiors/Euro_slsusbr1.dif":["TWL-MapPack.vl2"],"interiors/Euro_slvehramp1.dif":["TWL-MapPack.vl2"],"interiors/Magellan_kab_magbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Magellan_kab_magflagstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Magellan_kab_turretstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/SpinCycle_spbase2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Starfallen.dif":["Classic_maps_v1.vl2"],"interiors/TL_bmiscpan_ruind.dif":["TWL2-MapPack.vl2"],"interiors/TL_btowr9.dif":["TWL2-MapPack.vl2"],"interiors/TL_drorck-base.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnumbase.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/TL_magnumflag.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnummisc.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnumturret.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnumvs.dif":["TWL2-MapPack.vl2"],"interiors/Vpad_Bunker.dif":["TWL-MapPack.vl2"],"interiors/Xtra_AF_airtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_AF_invowheel.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_AF_newbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Bastage_BT_MainBase_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Bastage_BT_bunktower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Bastage_BT_tunnel.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_bridge.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_lamp.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_main.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_turret.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Crown_tri_flag.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Crown_tri_turret.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_cross.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_cross2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_obtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_tombstone2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_tombstone3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_Base_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_BunkerA.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_Flagstand_mk2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_TurretPillar.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Hellfire_dbase_ccb1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Hellfire_dmisc_int_fstand_old.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Hellfire_dwall_ccb1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1_mod2a.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1_mod3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1_mod4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_bridge1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_bridge2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_platform2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_salgenroom2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_salproj1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_salturretsus1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slblocks.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slinvstat.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slremo2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slsusbr1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slvehramp1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ProjectX_tribalma5ters_coyboybebop_basecom1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ProjectX_tunneloflove.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepbridge4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepbridge4b.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepbridgeh4b.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepsab3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepsab4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Torrent_kif_bigbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Torrent_kif_torrent_turret_tower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_attackgate.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_base.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_gate.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_guntower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_medtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_vpad.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_WSol_Flagstand_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_WSol_GenBase_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_WSol_Turret_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Xerxes_Turret.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Xerxes_Turret2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Xerxes_proto.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ZV_bbunk_ccb1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ZV_ccb_be_spire1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_infernoflagstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_stormflagstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_tower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_vbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_beachchair01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_dmisc_-nefflagstand1_x2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ghostdance_proto.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_base01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_bunker01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_stand01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_tower01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_bridge.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_bridge_tunnel.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_lush_mainbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_rip.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_xing.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_rst_transitbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_rst_transitstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_t_base0.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_cardiacbase.dif":["S8maps.vl2"],"interiors/anthem_cardiacbridge.dif":["S8maps.vl2"],"interiors/anthem_cardiacstand.dif":["S8maps.vl2"],"interiors/anthem_cardiactower.dif":["S8maps.vl2"],"interiors/anthem_cardiacturret.dif":["S8maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipebasemini.dif":["S5maps.vl2"],"interiors/anthem_pipebunker.dif":["S5maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-badlands.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-beach.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-desert.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-ice.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-lava.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2.dif":["S5maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pitbase.dif":["S5maps.vl2"],"interiors/anthem_pitstand.dif":["S5maps.vl2"],"interiors/anthemblock.dif":["S5maps.vl2"],"interiors/bbase1.dif":["interiors.vl2"],"interiors/bbase4cm.dif":["interiors.vl2"],"interiors/bbase6.dif":["interiors.vl2"],"interiors/bbase7.dif":["interiors.vl2"],"interiors/bbase9.dif":["interiors.vl2"],"interiors/bbase_-nefvbase_x.dif":["TWL-MapPack.vl2"],"interiors/bbase_-nefvbase_x2.dif":["TWL-MapPack.vl2"],"interiors/bbase_ccb1.dif":["TWL-MapPack.vl2"],"interiors/bbase_ccb5.dif":["Classic_maps_v1.vl2"],"interiors/bbase_nefhillside.dif":["Classic_maps_v1.vl2"],"interiors/bbrdg0.dif":["interiors.vl2"],"interiors/bbrdg1.dif":["interiors.vl2"],"interiors/bbrdg2.dif":["interiors.vl2"],"interiors/bbrdg3.dif":["interiors.vl2"],"interiors/bbrdg4.dif":["interiors.vl2"],"interiors/bbrdg5.dif":["interiors.vl2"],"interiors/bbrdg6.dif":["interiors.vl2"],"interiors/bbrdg7.dif":["interiors.vl2"],"interiors/bbrdg8.dif":["interiors.vl2"],"interiors/bbrdg9.dif":["interiors.vl2"],"interiors/bbrdga.dif":["interiors.vl2"],"interiors/bbrdgb.dif":["interiors.vl2"],"interiors/bbrdgn.dif":["interiors.vl2"],"interiors/bbrdgo.dif":["interiors.vl2"],"interiors/bbunk1.dif":["interiors.vl2"],"interiors/bbunk2.dif":["interiors.vl2"],"interiors/bbunk5.dif":["interiors.vl2"],"interiors/bbunk7.dif":["interiors.vl2"],"interiors/bbunk8.dif":["interiors.vl2"],"interiors/bbunk9.dif":["interiors.vl2"],"interiors/bbunkb.dif":["interiors.vl2"],"interiors/bbunkc.dif":["interiors.vl2"],"interiors/bbunkd.dif":["interiors.vl2"],"interiors/bbunke.dif":["Classic_maps_v1.vl2","DynamixFinalPack.vl2"],"interiors/bmisc1.dif":["interiors.vl2"],"interiors/bmisc2.dif":["interiors.vl2"],"interiors/bmisc3.dif":["interiors.vl2"],"interiors/bmisc4.dif":["interiors.vl2"],"interiors/bmisc5.dif":["interiors.vl2"],"interiors/bmisc6.dif":["interiors.vl2"],"interiors/bmisc7.dif":["interiors.vl2"],"interiors/bmisc8.dif":["interiors.vl2"],"interiors/bmisc9.dif":["interiors.vl2"],"interiors/bmisc_-nef_flagstand1_x.dif":["TR2final105-client.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmisc_-nef_flagstand1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmisc_nefledge1.dif":["Classic_maps_v1.vl2"],"interiors/bmisc_neftrstand1.dif":["TR2final105-client.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmisc_nefvbay.dif":["Classic_maps_v1.vl2"],"interiors/bmiscpan_bridge0.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_bridge0_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_bunker1.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_bunker1_x.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_bunker1_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruina.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruina_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinb.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinb_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinc.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinc_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruind.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruind_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruine.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruine_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinf.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinf_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruing.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruing_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinh.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinh_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruini.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_tower1.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_tower1_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_tower2.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_tower2_x.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_tower2_x2.dif":["TWL-MapPack.vl2"],"interiors/bplat1.dif":["interiors.vl2"],"interiors/bplat2.dif":["interiors.vl2"],"interiors/bplat3.dif":["interiors.vl2"],"interiors/bplat4.dif":["interiors.vl2"],"interiors/bplat6.dif":["interiors.vl2"],"interiors/bpower1.dif":["interiors.vl2"],"interiors/brock6.dif":["interiors.vl2"],"interiors/brock7.dif":["interiors.vl2"],"interiors/brock8.dif":["interiors.vl2"],"interiors/brocka.dif":["interiors.vl2"],"interiors/brockc.dif":["interiors.vl2"],"interiors/bspir1.dif":["interiors.vl2"],"interiors/bspir2.dif":["interiors.vl2"],"interiors/bspir3.dif":["interiors.vl2"],"interiors/bspir4.dif":["interiors.vl2"],"interiors/bspir5.dif":["interiors.vl2"],"interiors/btf_base1.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_bridge1.dif":["DynamixFinalPack.vl2"],"interiors/btf_bridge2.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_bridge3.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_genbunk.dif":["DynamixFinalPack.vl2"],"interiors/btf_turretplatform.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_turretplatform_c.dif":["Classic_maps_v1.vl2"],"interiors/btf_turretplatform_x.dif":["TWL-MapPack.vl2"],"interiors/btf_turretplatform_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/btowr2.dif":["interiors.vl2"],"interiors/btowr5-Lava.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/btowr5.dif":["interiors.vl2"],"interiors/btowr6.dif":["interiors.vl2"],"interiors/btowr8.dif":["interiors.vl2"],"interiors/btowr9.dif":["DynamixFinalPack.vl2"],"interiors/btowr_ccb1.dif":["TWL2-MapPack.vl2"],"interiors/btowra.dif":["interiors.vl2"],"interiors/bvpad.dif":["interiors.vl2"],"interiors/bwall1.dif":["interiors.vl2"],"interiors/bwall2.dif":["interiors.vl2"],"interiors/bwall3.dif":["interiors.vl2"],"interiors/bwall4.dif":["interiors.vl2"],"interiors/cannon.dif":["TR2final105-client.vl2"],"interiors/cannon2.dif":["TR2final105-client.vl2"],"interiors/cap.dif":["TR2final105-client.vl2"],"interiors/ccb_be_tower1a_x2.dif":["TWL-MapPack.vl2"],"interiors/ccb_be_tower1b_x2.dif":["S5maps.vl2","TWL-MapPack.vl2","TWL2-MapPack.vl2"],"interiors/ccbase1.dif":["TWL2-MapPack.vl2"],"interiors/ccbase2.dif":["TWL2-MapPack.vl2"],"interiors/ccflagstand.dif":["TWL2-MapPack.vl2"],"interiors/cctower.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/centaur.dif":["S5maps.vl2"],"interiors/centower.dif":["S5maps.vl2"],"interiors/conbase.dif":["TWL2-MapPack.vl2"],"interiors/conspire.dif":["TWL2-MapPack.vl2"],"interiors/damnationstand.dif":["S5maps.vl2"],"interiors/dbase2.dif":["interiors.vl2"],"interiors/dbase3.dif":["interiors.vl2"],"interiors/dbase4.dif":["interiors.vl2"],"interiors/dbase5.dif":["DynamixFinalPack.vl2"],"interiors/dbase6.dif":["DynamixFinalPack.vl2"],"interiors/dbase_-nefbase1_x.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_-nefbase1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_-nefbase2_x.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_-nefbase2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_broadside_nef.dif":["Classic_maps_v1.vl2"],"interiors/dbase_nefRaindance.dif":["Classic_maps_v1.vl2"],"interiors/dbase_neffloat1.dif":["Classic_maps_v1.vl2"],"interiors/dbase_neffloat2.dif":["Classic_maps_v1.vl2"],"interiors/dbase_neficeridge.dif":["Classic_maps_v1.vl2"],"interiors/dbase_tokrz_scarabrae.dif":["Classic_maps_v1.vl2"],"interiors/dbrdg1.dif":["interiors.vl2"],"interiors/dbrdg10.dif":["interiors.vl2"],"interiors/dbrdg11.dif":["interiors.vl2"],"interiors/dbrdg2.dif":["interiors.vl2"],"interiors/dbrdg3.dif":["interiors.vl2"],"interiors/dbrdg3a.dif":["interiors.vl2"],"interiors/dbrdg4.dif":["interiors.vl2"],"interiors/dbrdg5.dif":["interiors.vl2"],"interiors/dbrdg6.dif":["interiors.vl2"],"interiors/dbrdg7.dif":["interiors.vl2"],"interiors/dbrdg7a.dif":["interiors.vl2"],"interiors/dbrdg8.dif":["interiors.vl2"],"interiors/dbrdg9.dif":["interiors.vl2"],"interiors/dbrdg9a.dif":["interiors.vl2"],"interiors/dbunk5.dif":["interiors.vl2"],"interiors/dbunk6.dif":["interiors.vl2"],"interiors/dbunk_nef_invbunk1.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_nefcliffside.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_nefdcbunk.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_nefsmall.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_rf04.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbunk_snowblind.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_stonehenge1.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_vbunk1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc1.dif":["DynamixFinalPack.vl2","interiors.vl2"],"interiors/dmisc1_x.dif":["TWL-MapPack.vl2"],"interiors/dmisc1_x2.dif":["TWL-MapPack.vl2"],"interiors/dmisc_-nefflagstand1_x.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dmisc_-nefflagstand1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dmisc_nefbridge.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefflagstand2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefflagstand3.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefobj1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefobj2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefplat1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefplug1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefrdbridge1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_neftower1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_neftower2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_neftower3.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_stonehenge1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_stonehenge2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_stonehenge3.dif":["Classic_maps_v1.vl2"],"interiors/doubleramp2.dif":["TR2final105-client.vl2"],"interiors/dox_bb_box_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_bunkera_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_bunkerb_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_droptop_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_fstand_x2.dif":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"interiors/dox_bb_hangar_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_platform_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_rig_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_rustbox_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_sandcastle_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_slab_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_spade_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_steelsheet2_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_steelsheet_x2.dif":["TWL-MapPack.vl2"],"interiors/dplat1.dif":["interiors.vl2"],"interiors/dplat2.dif":["DynamixFinalPack.vl2","interiors.vl2"],"interiors/dplat3.dif":["interiors.vl2"],"interiors/dpole1.dif":["interiors.vl2"],"interiors/drock6.dif":["interiors.vl2"],"interiors/drock7.dif":["interiors.vl2"],"interiors/drock8.dif":["interiors.vl2"],"interiors/drocka.dif":["interiors.vl2"],"interiors/dspir1.dif":["interiors.vl2"],"interiors/dspir2.dif":["interiors.vl2"],"interiors/dspir3.dif":["interiors.vl2"],"interiors/dspir4.dif":["interiors.vl2"],"interiors/dspir5.dif":["interiors.vl2"],"interiors/dtowr1.dif":["DynamixFinalPack.vl2","interiors.vl2"],"interiors/dtowr2.dif":["interiors.vl2"],"interiors/dtowr4.dif":["interiors.vl2"],"interiors/dtowr_classic1.dif":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dvent.dif":["interiors.vl2"],"interiors/dvpad.dif":["interiors.vl2"],"interiors/dvpad1.dif":["interiors.vl2"],"interiors/dwall1.dif":["interiors.vl2"],"interiors/epicrates_base.dif":["TWL-MapPack.vl2"],"interiors/epicrates_bridge.dif":["TWL-MapPack.vl2"],"interiors/epicrates_turret.dif":["TWL-MapPack.vl2"],"interiors/flagbridge.dif":["Classic_maps_v1.vl2"],"interiors/flingbase01.dif":["S5maps.vl2"],"interiors/flingbase02.dif":["S5maps.vl2"],"interiors/flingrock01.dif":["S8maps.vl2"],"interiors/flingrockvent01.dif":["S8maps.vl2"],"interiors/flingsilo03.dif":["S8maps.vl2"],"interiors/flingsilo03b.dif":["S8maps.vl2"],"interiors/flingstand01.dif":["S5maps.vl2"],"interiors/flingstand02.dif":["S8maps.vl2"],"interiors/flingtanktrap01.dif":["S8maps.vl2"],"interiors/flingteeth.dif":["S5maps.vl2"],"interiors/flingtower01.dif":["S5maps.vl2"],"interiors/flingtower02.dif":["S5maps.vl2"],"interiors/flingturretstand01.dif":["S5maps.vl2"],"interiors/flingvpad01.dif":["S8maps.vl2"],"interiors/flingvpad01b.dif":["S8maps.vl2"],"interiors/frostclawbase.dif":["TWL-MapPack.vl2"],"interiors/hbbunker.dif":["TWL2-MapPack.vl2"],"interiors/hbflagstand.dif":["TWL2-MapPack.vl2"],"interiors/idbase.dif":["TWL2-MapPack.vl2"],"interiors/idhangar.dif":["TWL2-MapPack.vl2"],"interiors/idmiddle.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/inf_butch_fg2base1.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_fg2flag21.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_fg2turret13.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_fg2turret9.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_icebase51.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_iceturretbase9.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_icevehicle11.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_lava_flagbase06.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/inf_butch_lava_plat6.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/inf_butch_lava_sensor12.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/infbutch_blackairinv13.dif":["Classic_maps_v1.vl2"],"interiors/infbutch_blackbase5618_final.dif":["Classic_maps_v1.vl2"],"interiors/infbutch_blackturret8.dif":["Classic_maps_v1.vl2"],"interiors/irisbase.dif":["TWL-MapPack.vl2"],"interiors/irisinside.dif":["TWL-MapPack.vl2"],"interiors/irismonu.dif":["TWL-MapPack.vl2"],"interiors/irisruin2.dif":["TWL-MapPack.vl2"],"interiors/irisruin3.dif":["TWL-MapPack.vl2"],"interiors/irisruins1.dif":["TWL-MapPack.vl2"],"interiors/iristurbase.dif":["TWL-MapPack.vl2"],"interiors/jagged_base3.dif":["TWL2-MapPack.vl2"],"interiors/kif_cinereousfs.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_cinereousinv.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_cinereousplat1.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_cinereoustt.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_skylightbase.dif":["TWL2-MapPack.vl2"],"interiors/kif_skylightfs.dif":["TWL2-MapPack.vl2"],"interiors/magnum_vehicle_stop.dif":["TWL2-MapPack.vl2"],"interiors/mmbase.dif":["TWL2-MapPack.vl2"],"interiors/mmbridge.dif":["TWL2-MapPack.vl2"],"interiors/muddyswampstand.dif":["TWL2-MapPack.vl2"],"interiors/nef_bowl1.dif":["TR2final105-client.vl2"],"interiors/nef_bowl2.dif":["TR2final105-client.vl2"],"interiors/nef_bowl3.dif":["TR2final105-client.vl2"],"interiors/nef_ramp1.dif":["TR2final105-client.vl2"],"interiors/nycto-base1.dif":["TWL-MapPack.vl2"],"interiors/nycto-base2.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec1.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec2.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec3.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec4.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec5.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec6.dif":["TWL-MapPack.vl2"],"interiors/nycto-stand1.dif":["TWL-MapPack.vl2"],"interiors/nycto-tunnel-1.dif":["TWL-MapPack.vl2"],"interiors/ocular-flagstand.dif":["TWL2-MapPack.vl2"],"interiors/pbase3.dif":["interiors.vl2"],"interiors/pbase_nef_giant.dif":["Classic_maps_v1.vl2"],"interiors/pbase_nef_vbase1.dif":["Classic_maps_v1.vl2"],"interiors/pbrdg0.dif":["interiors.vl2"],"interiors/pbrdg1.dif":["interiors.vl2"],"interiors/pbrdg2.dif":["interiors.vl2"],"interiors/pbrdg3.dif":["interiors.vl2"],"interiors/pbrdg4.dif":["interiors.vl2"],"interiors/pbrdgn.dif":["interiors.vl2"],"interiors/pbrdgo.dif":["interiors.vl2"],"interiors/pbrdgp.dif":["interiors.vl2"],"interiors/pbunk1.dif":["interiors.vl2"],"interiors/pbunk2.dif":["interiors.vl2"],"interiors/pbunk3.dif":["interiors.vl2"],"interiors/pbunk4a_CC.dif":["Classic_maps_v1.vl2"],"interiors/pbunk5.dif":["interiors.vl2"],"interiors/pbunk6.dif":["interiors.vl2"],"interiors/pbunk7.dif":["interiors.vl2"],"interiors/pbunk7a_CC.dif":["Classic_maps_v1.vl2"],"interiors/pbunk8.dif":["interiors.vl2"],"interiors/peach_lush_bunker1.dif":["TWL2-MapPack.vl2"],"interiors/pmisc1.dif":["interiors.vl2"],"interiors/pmisc2.dif":["interiors.vl2"],"interiors/pmisc3.dif":["interiors.vl2"],"interiors/pmisc4.dif":["interiors.vl2"],"interiors/pmisc5.dif":["interiors.vl2"],"interiors/pmisca.dif":["interiors.vl2"],"interiors/pmiscb.dif":["interiors.vl2"],"interiors/pmiscc.dif":["interiors.vl2"],"interiors/pplat1.dif":["interiors.vl2"],"interiors/pplat2.dif":["interiors.vl2"],"interiors/pplat3.dif":["interiors.vl2"],"interiors/pplat4.dif":["interiors.vl2"],"interiors/pplat5.dif":["interiors.vl2"],"interiors/prock6.dif":["interiors.vl2"],"interiors/prock7.dif":["interiors.vl2"],"interiors/prock8.dif":["interiors.vl2"],"interiors/procka.dif":["interiors.vl2"],"interiors/prockb.dif":["interiors.vl2"],"interiors/prockc.dif":["interiors.vl2"],"interiors/pspir1.dif":["interiors.vl2"],"interiors/pspir2.dif":["interiors.vl2"],"interiors/pspir3.dif":["interiors.vl2"],"interiors/pspir4.dif":["interiors.vl2"],"interiors/pspir5.dif":["interiors.vl2"],"interiors/ptowr1.dif":["interiors.vl2"],"interiors/ptowr2.dif":["interiors.vl2"],"interiors/ptowr4.dif":["interiors.vl2"],"interiors/ptowr5.dif":["interiors.vl2"],"interiors/ptowr7.dif":["interiors.vl2"],"interiors/pvbay1.dif":["interiors.vl2"],"interiors/pvpad.dif":["interiors.vl2"],"interiors/pwall1.dif":["interiors.vl2"],"interiors/rail1.dif":["TR2final105-client.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/ram_base.dif":["Classic_maps_v1.vl2"],"interiors/ram_tower.dif":["Classic_maps_v1.vl2"],"interiors/ram_wall4.dif":["Classic_maps_v1.vl2"],"interiors/ramp1.dif":["TR2final105-client.vl2"],"interiors/rilke_bombscare_flagstand_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_ctm1_flagstand1_x2.dif":["TWL-MapPack.vl2"],"interiors/rilke_ctm1_platform1_x2.dif":["TWL-MapPack.vl2"],"interiors/rilke_ctm1_sensorbunker1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_ctm1_sensorbunker2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_ctm1_vpad_x2.dif":["TWL-MapPack.vl2"],"interiors/rilke_domain2_boundrymarker.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain2_boundrymarker2.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain2_bridge1.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain2_mainbase.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain_turretbase1.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_bridge.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_bridge2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_bridgebase1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_bunker2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_mainbase.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_platform1.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_platform2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_platform3_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_towerbunker.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_towerbunker2_x2.dif":["S5maps.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_vehiclepad_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_FaceBase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_FaceBase2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_FaceStand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave1_part1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave1_part2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave1_part3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SimpleFlagArena.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_agroleonbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_agroleonstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_arenalight.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_astro_bunker.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_astro_stand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_barrier1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_barrier2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_beagleship.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbunker.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbunker2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbunker3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_debris1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_debris2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building5.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building6.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building7.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building8.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_bunker.dif":["S5maps.vl2"],"interiors/rst_derm_citybase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_citybridge.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_mainbase.dif":["S5maps.vl2"],"interiors/rst_derm_midfield.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_newpillarstand.dif":["S5maps.vl2"],"interiors/rst_derm_pillar.dif":["S5maps.vl2"],"interiors/rst_derm_plat.dif":["S5maps.vl2"],"interiors/rst_derm_plat2.dif":["S5maps.vl2"],"interiors/rst_derm_podium.dif":["S5maps.vl2"],"interiors/rst_derm_snipenest.dif":["S5maps.vl2"],"interiors/rst_derm_turretbase.dif":["S5maps.vl2"],"interiors/rst_derm_vechpad.dif":["S5maps.vl2"],"interiors/rst_dogma_base.dif":["S8maps.vl2"],"interiors/rst_dogma_bridge.dif":["S8maps.vl2"],"interiors/rst_dogma_bridge2.dif":["S8maps.vl2"],"interiors/rst_islebase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_islebase2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lighthouse.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_flagplat.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle10.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle5.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle6.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle7.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle8.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle9.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_rock2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_newlighthouse.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_padbottom.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_padbottom2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_pipedream.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_spir_base3.dif":["S8maps.vl2"],"interiors/rst_spir_pillar.dif":["S8maps.vl2"],"interiors/rst_spit_base.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_spit_stand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_swd_flagstand.dif":["S5maps.vl2"],"interiors/rst_swd_ship2.dif":["S5maps.vl2"],"interiors/ruin1.dif":["Classic_maps_v1.vl2"],"interiors/ruin2.dif":["Classic_maps_v1.vl2"],"interiors/ruin3.dif":["Classic_maps_v1.vl2"],"interiors/ruin4.dif":["Classic_maps_v1.vl2"],"interiors/ruinarch.dif":["Classic_maps_v1.vl2"],"interiors/s5_anthem_pipebase.dif":["S5maps.vl2"],"interiors/s5_anthem_pipestand.dif":["S5maps.vl2"],"interiors/sbase1.dif":["interiors.vl2"],"interiors/sbase3.dif":["interiors.vl2"],"interiors/sbase5.dif":["interiors.vl2"],"interiors/sbrdg1.dif":["interiors.vl2"],"interiors/sbrdg2.dif":["interiors.vl2"],"interiors/sbrdg3.dif":["interiors.vl2"],"interiors/sbrdg4.dif":["interiors.vl2"],"interiors/sbrdg5.dif":["interiors.vl2"],"interiors/sbrdg6.dif":["interiors.vl2"],"interiors/sbrdg7.dif":["interiors.vl2"],"interiors/sbrdgn.dif":["interiors.vl2"],"interiors/sbrdgo.dif":["interiors.vl2"],"interiors/sbunk2.dif":["interiors.vl2"],"interiors/sbunk9.dif":["interiors.vl2"],"interiors/sbunk_nef1.dif":["Classic_maps_v1.vl2"],"interiors/siege.dif":["Classic_maps_v1.vl2"],"interiors/singleramp.dif":["TR2final105-client.vl2"],"interiors/smisc1.dif":["interiors.vl2"],"interiors/smisc3.dif":["interiors.vl2"],"interiors/smisc4.dif":["interiors.vl2"],"interiors/smisc5.dif":["interiors.vl2"],"interiors/smisc_nef1.dif":["Classic_maps_v1.vl2"],"interiors/smisca.dif":["interiors.vl2"],"interiors/smiscb.dif":["interiors.vl2"],"interiors/smiscc.dif":["interiors.vl2"],"interiors/spawnbase.dif":["TR2final105-client.vl2"],"interiors/spawnbase2.dif":["TR2final105-client.vl2"],"interiors/sphere.dif":["TR2final105-client.vl2"],"interiors/splat1.dif":["interiors.vl2"],"interiors/splat3.dif":["interiors.vl2"],"interiors/splat7.dif":["interiors.vl2"],"interiors/srock6.dif":["interiors.vl2"],"interiors/srock7.dif":["interiors.vl2"],"interiors/srock8.dif":["interiors.vl2"],"interiors/srocka.dif":["interiors.vl2"],"interiors/srockb.dif":["interiors.vl2"],"interiors/srockc.dif":["interiors.vl2"],"interiors/sspir1.dif":["interiors.vl2"],"interiors/sspir2.dif":["interiors.vl2"],"interiors/sspir3.dif":["interiors.vl2"],"interiors/sspir4.dif":["interiors.vl2"],"interiors/stowr1.dif":["interiors.vl2"],"interiors/stowr3.dif":["interiors.vl2"],"interiors/stowr4.dif":["interiors.vl2"],"interiors/stowr6.dif":["interiors.vl2"],"interiors/svpad.dif":["interiors.vl2"],"interiors/swall1.dif":["interiors.vl2"],"interiors/t_bbase_ccb2a.dif":["Classic_maps_v1.vl2"],"interiors/t_bmisc_tunl_ccb1.dif":["Classic_maps_v1.vl2"],"interiors/t_bwall2a_cnr_CC.dif":["Classic_maps_v1.vl2"],"interiors/t_bwall2a_lrg_CC.dif":["Classic_maps_v1.vl2"],"interiors/t_bwall2a_sm_CC.dif":["Classic_maps_v1.vl2"],"interiors/tes_flagbase_x2.dif":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/tes_flagbunker.dif":["TWL-MapPack.vl2"],"interiors/tes_flyingvehicle_x2.dif":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"interiors/tes_flyingvehiclebase.dif":["TWL-MapPack.vl2"],"interiors/tes_turretholder.dif":["TWL-MapPack.vl2"],"interiors/tri_base.dif":["DynamixFinalPack.vl2"],"interiors/tri_gate.dif":["DynamixFinalPack.vl2"],"interiors/tri_misc1.dif":["DynamixFinalPack.vl2"],"interiors/tri_powerpit.dif":["DynamixFinalPack.vl2"],"interiors/tri_tbunker.dif":["DynamixFinalPack.vl2"],"interiors/tri_tbunker_x.dif":["TWL-MapPack.vl2"],"interiors/tri_tbunker_x2.dif":["TWL-MapPack.vl2"],"interiors/tri_tower.dif":["DynamixFinalPack.vl2"],"interiors/tri_tower_x2.dif":["TWL-MapPack.vl2"],"interiors/tri_wall3.dif":["DynamixFinalPack.vl2"],"interiors/tri_wall4.dif":["DynamixFinalPack.vl2"],"interiors/tri_wall5.dif":["DynamixFinalPack.vl2"],"interiors/tri_wall6.dif":["DynamixFinalPack.vl2"],"interiors/underhillmidbalancedfnl.dif":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"interiors/underhillsideonefnl.dif":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"interiors/xbase1.dif":["interiors.vl2"],"interiors/xbase2.dif":["interiors.vl2"],"interiors/xbrdg0.dif":["interiors.vl2"],"interiors/xbrdg1.dif":["interiors.vl2"],"interiors/xbrdg10.dif":["interiors.vl2"],"interiors/xbrdg2.dif":["interiors.vl2"],"interiors/xbrdg3.dif":["interiors.vl2"],"interiors/xbrdg4.dif":["interiors.vl2"],"interiors/xbrdg5.dif":["interiors.vl2"],"interiors/xbrdg6.dif":["interiors.vl2"],"interiors/xbrdg7.dif":["interiors.vl2"],"interiors/xbrdg8.dif":["interiors.vl2"],"interiors/xbrdg9.dif":["interiors.vl2"],"interiors/xbrdga.dif":["interiors.vl2"],"interiors/xbrdgb.dif":["interiors.vl2"],"interiors/xbrdgn.dif":["interiors.vl2"],"interiors/xbrdgo.dif":["interiors.vl2"],"interiors/xbunk1.dif":["interiors.vl2"],"interiors/xbunk2.dif":["interiors.vl2"],"interiors/xbunk5.dif":["interiors.vl2"],"interiors/xbunk6.dif":["interiors.vl2"],"interiors/xbunk9.dif":["interiors.vl2"],"interiors/xbunkb.dif":["interiors.vl2"],"interiors/xmisc1.dif":["interiors.vl2"],"interiors/xmisc2.dif":["interiors.vl2"],"interiors/xmisc3.dif":["interiors.vl2"],"interiors/xmisc4.dif":["interiors.vl2"],"interiors/xmisc5.dif":["interiors.vl2"],"interiors/xmisca.dif":["interiors.vl2"],"interiors/xmiscb.dif":["interiors.vl2"],"interiors/xmiscc.dif":["interiors.vl2"],"interiors/xplat1.dif":["interiors.vl2"],"interiors/xplat2.dif":["interiors.vl2"],"interiors/xplat3.dif":["interiors.vl2"],"interiors/xrock6.dif":["interiors.vl2"],"interiors/xrock7.dif":["interiors.vl2"],"interiors/xrock8.dif":["interiors.vl2"],"interiors/xrocka.dif":["interiors.vl2"],"interiors/xrockb.dif":["interiors.vl2"],"interiors/xrockc.dif":["interiors.vl2"],"interiors/xspir1.dif":["interiors.vl2"],"interiors/xspir2.dif":["interiors.vl2"],"interiors/xspir3.dif":["interiors.vl2"],"interiors/xspir5.dif":["interiors.vl2"],"interiors/xtowr1.dif":["interiors.vl2"],"interiors/xtowr3.dif":["interiors.vl2"],"interiors/xtowr4.dif":["interiors.vl2"],"interiors/xtowr7.dif":["interiors.vl2"],"interiors/xvpad.dif":["interiors.vl2"],"interiors/xwall1.dif":["interiors.vl2"],"lighting/Aeroena_2343a8be.ml":[""],"lighting/Agorazscium_f4b21f81.ml":[""],"lighting/ArenaDome_a0de9542.ml":[""],"lighting/ArenaHeaven_1e1fe293.ml":[""],"lighting/AstersDescent_53a3207b.ml":[""],"lighting/AttritionLT_832adbb5.ml":[""],"lighting/BerylBasin_c9d35ce.ml":[""],"lighting/Blastside_nef_6830e4bf.ml":[""],"lighting/Blink_d9ab8a18.ml":[""],"lighting/BonespurLT_915823ed.ml":[""],"lighting/BonespurLT_9cca0579.ml":[""],"lighting/BoxLak_a3e35494.ml":[""],"lighting/Broadside_nef_e852f76.ml":[""],"lighting/BulwarkLT_4a3f297.ml":[""],"lighting/Bulwark_ab283278.ml":[""],"lighting/CankerLak_2f63997d.ml":[""],"lighting/CapriLT_66f22508.ml":[""],"lighting/Cinerarium_7aca722b.ml":[""],"lighting/Circleofstones_affcd75f.ml":[""],"lighting/CirclesEdgeLT_411f1e4d.ml":[""],"lighting/CirclesEdgeLT_7a5c076c.ml":[""],"lighting/CloakofLak_74b7f3a4.ml":[""],"lighting/CloakofNightV_fc052e2a.ml":[""],"lighting/CloudBurst_ae430433.ml":[""],"lighting/ClusterUnFuct_ba9a0db4.ml":[""],"lighting/Coliseum_638e3c7c.ml":[""],"lighting/Confusco_629e6bc0.ml":[""],"lighting/CrashClash_4a04db6b.ml":[""],"lighting/CrossfiredLak_af679bb1.ml":[""],"lighting/DMP_Agroleon_39e78691.ml":[""],"lighting/DMP_BastardForgeLT_192bda18.ml":[""],"lighting/DMP_BastardForgeLT_23118b55.ml":[""],"lighting/DMP_BastardForge_69e0050.ml":[""],"lighting/DMP_BunkeredLT_22bd8e06.ml":[""],"lighting/DMP_BunkeredLT_7f074860.ml":[""],"lighting/DMP_CinerariumLT_1770607b.ml":[""],"lighting/DMP_Cinerarium_29f905f2.ml":[""],"lighting/DMP_FaceCrossing_562603da.ml":[""],"lighting/DMP_Hoth_1f2b4ebe.ml":[""],"lighting/DMP_IceGiant_27ae32f9.ml":[""],"lighting/DMP_Magellan_3ec75495.ml":[""],"lighting/DMP_MoonDance_4a0aa2ce.ml":[""],"lighting/DMP_Paranoia_a73116c7.ml":[""],"lighting/DMP_PariahLT_1eeeb2f3.ml":[""],"lighting/DMP_PariahLT_5dbbd253.ml":[""],"lighting/DMP_Pariah_5774d3ab.ml":[""],"lighting/DMP_Pariah_bae29d7a.ml":[""],"lighting/DMP_PipeDream_b4220f7e.ml":[""],"lighting/DMP_RavineV_32d83be0.ml":[""],"lighting/DMP_ScorchedEarth_6ef2eb26.ml":[""],"lighting/DMP_SimpleFlagArena_81bb7f85.ml":[""],"lighting/DMP_SpinCycle_8111999d.ml":[""],"lighting/DMP_SpincycleLT_c077aa18.ml":[""],"lighting/DMP_StarFallLT_313a7dd7.ml":[""],"lighting/DMP_StarFallLT_51b265f4.ml":[""],"lighting/DMP_Tyre_5d7be94.ml":[""],"lighting/DMP_Wasteland_87bf335.ml":[""],"lighting/DX_IceLT_69603e1f.ml":[""],"lighting/DX_Ice_492b02b7.ml":[""],"lighting/Damnation_a8afd69c.ml":[""],"lighting/DangerousCrossingLT_8205e1c3.ml":[""],"lighting/DangerousCrossingLT_98fe44b0.ml":[""],"lighting/DeathBirdsFly1_e1b6748d.ml":[""],"lighting/DermCrossingDeluxeLT_86255d21.ml":[""],"lighting/DermCrossingDeluxe_b5489c73.ml":[""],"lighting/DesertofDeathLak_9ef72690.ml":[""],"lighting/DiscordLT_8799b81.ml":[""],"lighting/Discord_d9dc93e8.ml":[""],"lighting/DustRunLak_6779c9d4.ml":[""],"lighting/DustToDust_c2ba2158.ml":[""],"lighting/El_FinLT_e9dab457.ml":[""],"lighting/El_Fin_8316b0e5.ml":[""],"lighting/Entombed_e3bacfe0.ml":[""],"lighting/Envyrena_7791ad94.ml":[""],"lighting/EnyLand_68f85a3b.ml":[""],"lighting/Exhumed_20605cf5.ml":[""],"lighting/Extractor_d5e74134.ml":[""],"lighting/FF_Hillside_2daafc5b.ml":[""],"lighting/Fallout_9b18601a.ml":[""],"lighting/Fenix_78eeb8cd.ml":[""],"lighting/Firestorm_16de2343.ml":[""],"lighting/Floatarena_297e95cb.ml":[""],"lighting/FourWayCheckmate_f33d2fb6.ml":[""],"lighting/FrozenForgeLT_743ce94a.ml":[""],"lighting/FrozenForgeLT_9931f1ae.ml":[""],"lighting/FrozenHopeLT_7213db78.ml":[""],"lighting/FrozenHopeLT_b46d68eb.ml":[""],"lighting/FrozenHope_3a657c29.ml":[""],"lighting/FunHouse_604d2f6a.ml":[""],"lighting/GodsRiftLak_18e44714.ml":[""],"lighting/GrassyKnollLT_68c6cce.ml":[""],"lighting/GrassyKnoll_5c7374ad.ml":[""],"lighting/GrassyKnoll_a8a31131.ml":[""],"lighting/GreenLawn_f4f6854f.ml":[""],"lighting/HO_Ice_259f9801.ml":[""],"lighting/HO_Lush_37ea33f0.ml":[""],"lighting/HarvestDance_c7a75c2.ml":[""],"lighting/Headstone_772e32ed.ml":[""],"lighting/Helioarena_1e75a885.ml":[""],"lighting/HiddenValley_a1dce28d.ml":[""],"lighting/HighOctane_85127c80.ml":[""],"lighting/HighOctane_b_ac85e4.ml":[""],"lighting/HighWire_471b6cf9.ml":[""],"lighting/HillKingLT_50bd1439.ml":[""],"lighting/HillKingLT_8da13f48.ml":[""],"lighting/HillKingLT_d836ed12.ml":[""],"lighting/HillSideLT_4f08df8f.ml":[""],"lighting/Hillside_33bc6f09.ml":[""],"lighting/Horde_4a800bd6.ml":[""],"lighting/HostileLoch_d7362c7.ml":[""],"lighting/IcePick_56b79dca.ml":[""],"lighting/IcePick_600de852.ml":[""],"lighting/InfernusLak_7d2be4ad.ml":[""],"lighting/IveHadWorse_e39c99bf.ml":[""],"lighting/JadeValley_7ef73b3d.ml":[""],"lighting/Lakefront_3703d244.ml":[""],"lighting/Logans_Run_c40b6d12.ml":[""],"lighting/Mac_FlagArena_90666881.ml":[""],"lighting/Machineeggs_a5ccddc0.ml":[""],"lighting/MagmaticLak_4073d809.ml":[""],"lighting/Minerva_33feccb1.ml":[""],"lighting/MiniSunDried_3c5a0fc8.ml":[""],"lighting/Minotaur_171384b8.ml":[""],"lighting/MisadventureV2_ec7544a8.ml":[""],"lighting/Moonwalk_174f2bd4.ml":[""],"lighting/NarcolepsyLT_73e7c21a.ml":[""],"lighting/NatureMagic_2544c03b.ml":[""],"lighting/Nightdance_7bfc8136.ml":[""],"lighting/Norty_eb1bd063.ml":[""],"lighting/OsIrisLT_a734e9f4.ml":[""],"lighting/OsIrisLT_c9b12d6.ml":[""],"lighting/OuterWildsLT_fc7787a1.ml":[""],"lighting/OuterWilds_ad3695ec.ml":[""],"lighting/PipeDreamLT_be0ac5c7.ml":[""],"lighting/PipeDreamLT_c8a581c1.ml":[""],"lighting/PlanetX_8a6e98e8.ml":[""],"lighting/PrizmaticLT_d1bb228d.ml":[""],"lighting/PuliVeivari_ba861c8e.ml":[""],"lighting/RaindanceLT_8b15c940.ml":[""],"lighting/RaindanceLT_ed3eadcd.ml":[""],"lighting/Raindance_nefLak_35b8f6bc.ml":[""],"lighting/Raindance_nef_542af516.ml":[""],"lighting/Ravine_d9f4db83.ml":[""],"lighting/Reversion_16355b81.ml":[""],"lighting/RiverDance_51da8ec1.ml":[""],"lighting/Rollercoaster_nef_236560f9.ml":[""],"lighting/RoundTheMountainLT_1d5f7a42.ml":[""],"lighting/RoundTheMountainLT_d8d7a00a.ml":[""],"lighting/RoundTheMountain_3c873c59.ml":[""],"lighting/Ruined_928042b0.ml":[""],"lighting/RunenmachtLT_566cc4af.ml":[""],"lighting/RunenmachtLT_e29440db.ml":[""],"lighting/RushLT_83e7ec01.ml":[""],"lighting/RushLT_8cc32def.ml":[""],"lighting/Rush_7f8c0bd.ml":[""],"lighting/S5_DamnationLT_2e874420.ml":[""],"lighting/S5_DamnationLT_93d28001.ml":[""],"lighting/S5_Damnation_12876ea.ml":[""],"lighting/S5_Icedance_23935c84.ml":[""],"lighting/S5_MassiveLT_774d8053.ml":[""],"lighting/S5_MassiveLT_aa83559d.ml":[""],"lighting/S5_Massive_72b32b94.ml":[""],"lighting/S5_Massive_a0889977.ml":[""],"lighting/S5_Mimicry_a7de0fbe.ml":[""],"lighting/S5_Mordacity_7f7769e0.ml":[""],"lighting/S5_Reynard_3d07b96b.ml":[""],"lighting/S5_Sherman_d255001b.ml":[""],"lighting/S5_SilenusLT_b44256fa.ml":[""],"lighting/S5_Silenus_337a3c5b.ml":[""],"lighting/S5_Woodymyrk_ec89b88f.ml":[""],"lighting/S8_Cardiac_1b8fd622.ml":[""],"lighting/S8_GeothermalLak_20f3a205.ml":[""],"lighting/S8_Mountking_44b27865.ml":[""],"lighting/S8_Opus_efcc41a2.ml":[""],"lighting/S8_ZilchLT_b45c6931.ml":[""],"lighting/S8_ZilchLT_d5e6be15.ml":[""],"lighting/SC_Ice_af6eba.ml":[""],"lighting/SC_Normal_799da350.ml":[""],"lighting/SaddiesHill_698e83d5.ml":[""],"lighting/Sanctuary_7c20b606.ml":[""],"lighting/SandyRunLT_91cbfd2f.ml":[""],"lighting/Sangre_de_Grado_ae25e9e2.ml":[""],"lighting/Sentry_21483143.ml":[""],"lighting/ShortFall_aa1e57bb.ml":[""],"lighting/SignalLT_4f74b06a.ml":[""],"lighting/SignalLT_9bae58a.ml":[""],"lighting/Signal_e7aade91.ml":[""],"lighting/SkiFree_Randomizer_7dda3eb1.ml":[""],"lighting/SkinnyDipLak_c997a78f.ml":[""],"lighting/Slapdash_93679deb.ml":[""],"lighting/SmallCrossingLT_8b0a6034.ml":[""],"lighting/SmallTimeLT_89653a5e.ml":[""],"lighting/SolsDescentLak_11a78868.ml":[""],"lighting/SpectreLak_5e17e9b3.ml":[""],"lighting/SpyLand_21ea4c6.ml":[""],"lighting/SunDriedLak_e0d74cbd.ml":[""],"lighting/Sundance_2b83620c.ml":[""],"lighting/SuperHappyBouncyFunTime_b901c3ef.ml":[""],"lighting/SuperiorWaterworks_f456e8d9.ml":[""],"lighting/TWL2_Bleed_e6d5b374.ml":[""],"lighting/TWL2_BlueMoon_21ccae9c.ml":[""],"lighting/TWL2_BlueMoon_7c61bcd5.ml":[""],"lighting/TWL2_BlueMoon_a95478a6.ml":[""],"lighting/TWL2_CanyonCrusadeDeluxeLT_c1ae3753.ml":[""],"lighting/TWL2_CanyonCrusadeDeluxeLT_dbd8196e.ml":[""],"lighting/TWL2_CanyonCrusadeDeluxe_7452f969.ml":[""],"lighting/TWL2_CelerityLT_bc01478.ml":[""],"lighting/TWL2_CelerityLT_f2ecb468.ml":[""],"lighting/TWL2_Celerity_83b5b539.ml":[""],"lighting/TWL2_Dissention_d30eb753.ml":[""],"lighting/TWL2_Drifts_a70061b9.ml":[""],"lighting/TWL2_Drorck_add44b54.ml":[""],"lighting/TWL2_FrozenGlory_e2aae3eb.ml":[""],"lighting/TWL2_HildebrandLT_4cb441fb.ml":[""],"lighting/TWL2_HildebrandLT_fbf9260d.ml":[""],"lighting/TWL2_Hildebrand_ff9349b8.ml":[""],"lighting/TWL2_IceDagger_a8551aa2.ml":[""],"lighting/TWL2_JaggedClawLT_13a8fe76.ml":[""],"lighting/TWL2_JaggedClawLT_caff2b5d.ml":[""],"lighting/TWL2_JaggedClaw_ae434bfa.ml":[""],"lighting/TWL2_Magnum_bbaaf3b7.ml":[""],"lighting/TWL2_MidnightMayhemDeluxe_f0479bd5.ml":[""],"lighting/TWL2_MuddySwamp_202e755e.ml":[""],"lighting/TWL2_Norty_8a4142af.ml":[""],"lighting/TWL2_Ocular_d10fca4c.ml":[""],"lighting/TWL2_SkylightLT_c37d56e9.ml":[""],"lighting/TWL2_SkylightLT_f4b7bcf2.ml":[""],"lighting/TWL_Abaddon_661d5ca.ml":[""],"lighting/TWL_BeachBlitzLT_d50e4150.ml":[""],"lighting/TWL_BeachBlitzLT_ff00cacb.ml":[""],"lighting/TWL_BeachBlitzLak_8391be13.ml":[""],"lighting/TWL_BeachBlitz_2ba27e9a.ml":[""],"lighting/TWL_BeggarsRun_ac20e6fb.ml":[""],"lighting/TWL_Boss_d15d03dd.ml":[""],"lighting/TWL_Chokepoint_a2218645.ml":[""],"lighting/TWL_Crossfire_68b88bb4.ml":[""],"lighting/TWL_Damnation_f601da24.ml":[""],"lighting/TWL_DangerousCrossing_c0f5608a.ml":[""],"lighting/TWL_DeadlyBirdsSong_9eb082cf.ml":[""],"lighting/TWL_Drifts_3957320.ml":[""],"lighting/TWL_FeignLT_423b7f43.ml":[""],"lighting/TWL_FeignLT_97abf48c.ml":[""],"lighting/TWL_Feign_69a86ab3.ml":[""],"lighting/TWL_Harvester_6c61fcbf.ml":[""],"lighting/TWL_Katabatic_28e374c5.ml":[""],"lighting/TWL_Magmatic_79ca25bd.ml":[""],"lighting/TWL_Minotaur_4735e9ea.ml":[""],"lighting/TWL_OsIris_af0cd5e3.ml":[""],"lighting/TWL_Pandemonium_96c05f13.ml":[""],"lighting/TWL_Quagmire_3d196e62.ml":[""],"lighting/TWL_Raindance_e335287d.ml":[""],"lighting/TWL_Ramparts_e1d65b38.ml":[""],"lighting/TWL_Reversion_2057b26c.ml":[""],"lighting/TWL_RollercoasterLT_4becc052.ml":[""],"lighting/TWL_Runenmacht_fce2e1dd.ml":[""],"lighting/TWL_Slapdash_386535c9.ml":[""],"lighting/TWL_Slapdash_6c5d45fc.ml":[""],"lighting/TWL_Snowblind_7d864772.ml":[""],"lighting/TWL_Starfallen_220caf10.ml":[""],"lighting/TWL_StonehengeLT_186408d.ml":[""],"lighting/TWL_StonehengeLT_b54394a1.ml":[""],"lighting/TWL_Stonehenge_4be1bf55.ml":[""],"lighting/TWL_SubZero_d26856d3.ml":[""],"lighting/TWL_Surreal_928c01fe.ml":[""],"lighting/TWL_Titan_f2ca1f12.ml":[""],"lighting/TWL_WilderZoneLT_b23d9623.ml":[""],"lighting/TWL_WilderZoneLT_c9eea074.ml":[""],"lighting/TWL_WilderZone_f391f176.ml":[""],"lighting/Tacocat-DantesHill_1fadb4f4.ml":[""],"lighting/Tacocat-Dunes_b3ca40d2.ml":[""],"lighting/Tacocat-Jagged_2f4bf1c1.ml":[""],"lighting/Tacocat-SoylentJade_a5360959.ml":[""],"lighting/TenebrousCTF_de5eec4e.ml":[""],"lighting/TheFray_ee6d9255.ml":[""],"lighting/TheSewer_f4f75077.ml":[""],"lighting/TibbawLak_104ce121.ml":[""],"lighting/TitanV_b_527804b0.ml":[""],"lighting/TreasureIslandLak_f456aa59.ml":[""],"lighting/Triad_ff08cb0b.ml":[""],"lighting/TrueGrit_95ae0ce4.ml":[""],"lighting/UporDown_5cadb65.ml":[""],"lighting/VanDamnedLT_657123fb.ml":[""],"lighting/VanDamnedLT_fc126eb7.ml":[""],"lighting/VaubanLak_b072a992.ml":[""],"lighting/Vauban_fe733076.ml":[""],"lighting/Waterbox_c7bd8997.ml":[""],"lighting/WhiteDwarfDeluxeLT_7adbd60e.ml":[""],"lighting/WhiteDwarfDeluxeLT_afa63289.ml":[""],"lighting/WindyGap_d2bee4e7.ml":[""],"lighting/Wonderena_a304a21e.ml":[""],"lighting/Yubarena_2638aaa0.ml":[""],"lighting/Zilch_6b242845.ml":[""],"lighting/aabaa_571e7c86.ml":[""],"lighting/berlard_2823ce88.ml":[""],"lighting/cagematch_b93c2e85.ml":[""],"lighting/random2_aeea92ad.ml":[""],"lighting/random_ad5187a1.ml":[""],"loginScreens.cs":["T2csri.vl2"],"loginScreens.cs.dso":["T2csri.vl2"],"missions/2ArenaDome.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2ArenaValley.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2DustBowl.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2Flyersarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2IceDome.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2IndoorIntensity.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/4thGradeDropout.mis":["4thGradeDropout.vl2"],"missions/Abominable.mis":["missions.vl2"],"missions/AcidRain.mis":["Classic_maps_v1.vl2"],"missions/Aeroena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/AgentsOfFortune.mis":["missions.vl2"],"missions/Alcatraz.mis":["missions.vl2"],"missions/Archipelago.mis":["missions.vl2"],"missions/ArenaHeaven.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaHell.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaHell2.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaInTheHill.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaUnderTheHill.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/AryoArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/AshesToAshes.mis":["missions.vl2"],"missions/Atropos2.mis":["atroposthereturn.vl2"],"missions/BeggarsRun.mis":["missions.vl2"],"missions/BeneathTheHill.mis":["BeneathTheHill.vl2"],"missions/Blastside_nef.mis":["Classic_maps_v1.vl2"],"missions/BrainFreeze.mis":["brainfreeze.vl2"],"missions/BridgeTooFar.mis":["DynamixFinalPack.vl2"],"missions/Broadside_nef.mis":["Classic_maps_v1.vl2"],"missions/Broken_Dreams.mis":["brokendreams_2.vl2"],"missions/Caldera.mis":["missions.vl2"],"missions/Casern_Cavite.mis":["missions.vl2"],"missions/Centaur.mis":["centaur.vl2"],"missions/Checkmate.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ColdFusion.mis":["ColdFusion.vl2"],"missions/ColdWar.mis":["ColdWar.vl2"],"missions/Conclave.mis":["Conclave.vl2"],"missions/Confusco.mis":["Classic_maps_v1.vl2"],"missions/ContainmentLarge.mis":["ContainmentLarge.vl2"],"missions/CrashClash.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Crater71.mis":["TR2final105-client.vl2"],"missions/DMP_Agroleon.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Astro.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_BastardForge.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_BitterGorge.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Bunkered.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Cinerarium.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_DermCity.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Embers.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_EmeraldSpit.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_FaceCrossing.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Hoth.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_IceGiant.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_IsleDeBatalla.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_LavaGods.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Magellan.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_MoonDance.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Pantheon.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Paranoia.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Pariah.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_PipeDream.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_RavineV.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_ScorchedEarth.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_SimpleFlagArena.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_SpinCycle.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_StarFall.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Tyre.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Wasteland.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/Damnation.mis":["missions.vl2"],"missions/DangerousCrossingArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/DangerousCrossing_nef.mis":["Classic_maps_v1.vl2"],"missions/DeathBirdsFly.mis":["missions.vl2"],"missions/DeathFromBelow.mis":["DeathFromBelow.vl2"],"missions/DeathRow.mis":["DeathRow.vl2"],"missions/DesertWind.mis":["DesertWind.vl2"],"missions/DesertofDeath_nef.mis":["Classic_maps_v1.vl2"],"missions/Desiccator.mis":["missions.vl2"],"missions/DevilsElbow.mis":["DynamixFinalPack.vl2"],"missions/DraconisVII.mis":["DraconisVII.vl2"],"missions/DustToDust.mis":["missions.vl2"],"missions/Envyrena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/EnyLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Equinox.mis":["missions.vl2"],"missions/Escalade.mis":["missions.vl2"],"missions/EveningLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Exposure.mis":["Exposure-v1.1.vl2"],"missions/FinalRevenge.mis":["FinalRevenge.vl2"],"missions/Firestorm.mis":["missions.vl2"],"missions/Flashpoint.mis":["missions.vl2"],"missions/Fracas.mis":["missions.vl2"],"missions/FrozenFury.mis":["TR2final105-client.vl2"],"missions/Gauntlet.mis":["missions.vl2"],"missions/Gehenna.mis":["missions.vl2"],"missions/Geronimo.mis":["Geronimo.vl2"],"missions/GodsRift.mis":["TR2final105-client.vl2"],"missions/Gorgon.mis":["Classic_maps_v1.vl2"],"missions/Haven.mis":["TR2final105-client.vl2"],"missions/Helioarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Hillside.mis":["Classic_maps_v1.vl2"],"missions/IceBound.mis":["missions.vl2"],"missions/IceRidge_nef.mis":["Classic_maps_v1.vl2"],"missions/InnerSanctum.mis":["DynamixFinalPack.vl2"],"missions/Insalubria.mis":["missions.vl2"],"missions/Invictus.mis":["missions.vl2"],"missions/IsleOfMan.mis":["DynamixFinalPack.vl2"],"missions/IveHadWorse.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/JacobsLadder.mis":["missions.vl2"],"missions/Katabatic.mis":["missions.vl2"],"missions/Khalarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Lakefront.mis":["Classic_maps_v1.vl2"],"missions/Magmatic.mis":["Classic_maps_v1.vl2"],"missions/Masada.mis":["missions.vl2"],"missions/Minotaur.mis":["missions.vl2"],"missions/Morena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/MountainSiege.mis":["MountainSiege.vl2"],"missions/Mudside.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Mutiny.mis":["Mutiny.vl2"],"missions/MyrkWood.mis":["missions.vl2"],"missions/Oasis.mis":["missions.vl2"],"missions/Overreach.mis":["missions.vl2"],"missions/Pantheon.mis":["DynamixFinalPack.vl2"],"missions/Patience.mis":["Patience.vl2"],"missions/PhasmaDust.mis":["TR2final105-client.vl2"],"missions/Planetside.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Prismatic.mis":["Prismatic.vl2"],"missions/ProArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Pyroclasm.mis":["missions.vl2"],"missions/Quagmire.mis":["missions.vl2"],"missions/Raindance_nef.mis":["Classic_maps_v1.vl2"],"missions/Ramparts.mis":["Classic_maps_v1.vl2"],"missions/Rasp.mis":["missions.vl2"],"missions/Recalescence.mis":["missions.vl2"],"missions/Respite.mis":["missions.vl2"],"missions/Reversion.mis":["missions.vl2"],"missions/Ridgerena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Rimehold.mis":["missions.vl2"],"missions/RiverDance.mis":["missions.vl2"],"missions/Rollercoaster_nef.mis":["Classic_maps_v1.vl2"],"missions/S5_Centaur.mis":["S5maps.vl2"],"missions/S5_Damnation.mis":["S5maps.vl2"],"missions/S5_Drache.mis":["S5maps.vl2"],"missions/S5_HawkingHeat.mis":["S5maps.vl2"],"missions/S5_Icedance.mis":["S5maps.vl2"],"missions/S5_Massive.mis":["S5maps.vl2"],"missions/S5_Mimicry.mis":["S5maps.vl2"],"missions/S5_Misadventure.mis":["S5maps.vl2"],"missions/S5_Mordacity.mis":["S5maps.vl2"],"missions/S5_Reynard.mis":["S5maps.vl2"],"missions/S5_Sherman.mis":["S5maps.vl2"],"missions/S5_Silenus.mis":["S5maps.vl2"],"missions/S5_Woodymyrk.mis":["S5maps.vl2"],"missions/S8_Cardiac.mis":["S8maps.vl2"],"missions/S8_CentralDogma.mis":["S8maps.vl2"],"missions/S8_Geothermal.mis":["S8maps.vl2"],"missions/S8_Mountking.mis":["S8maps.vl2"],"missions/S8_Opus.mis":["S8maps.vl2"],"missions/S8_Zilch.mis":["S8maps.vl2"],"missions/Sanctuary.mis":["missions.vl2"],"missions/Sandstorm.mis":["Classic_maps_v1.vl2"],"missions/Scarabrae_nef.mis":["Classic_maps_v1.vl2"],"missions/ShockRidge.mis":["Classic_maps_v1.vl2"],"missions/ShrineArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ShrineArenaII.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/SiegeofYmir.mis":["SiegeofYmir.vl2"],"missions/SilentStorm.mis":["SilentStorm.vl2"],"missions/Sirocco.mis":["missions.vl2"],"missions/SkiFree.mis":["SkiFreeGameType.vl2"],"missions/SkiFreeZ_Championship_2021.mis":["SkiFreeGameType.vl2"],"missions/SkiFree_Daily.mis":["SkiFreeGameType.vl2"],"missions/SkiFree_Randomizer.mis":["SkiFreeGameType.vl2"],"missions/SkinnyDip.mis":["TR2final105-client.vl2"],"missions/Slapdash.mis":["missions.vl2"],"missions/SmogArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/SnowBound.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Snowblind_nef.mis":["Classic_maps_v1.vl2"],"missions/SoccerLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Solace.mis":["Solace.vl2"],"missions/SolsDescent.mis":["TR2final105-client.vl2"],"missions/SpyLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Starfallen.mis":["Classic_maps_v1.vl2"],"missions/Stonehenge_Arena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Stonehenge_nef.mis":["Classic_maps_v1.vl2"],"missions/SubZero.mis":["Classic_maps_v1.vl2"],"missions/SunDried.mis":["missions.vl2"],"missions/Surreal.mis":["Classic_maps_v1.vl2"],"missions/TWL2_Bleed.mis":["TWL2-MapPack.vl2"],"missions/TWL2_BlueMoon.mis":["TWL2-MapPack.vl2"],"missions/TWL2_CanyonCrusadeDeluxe.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Celerity.mis":["TWL2-MapPack.vl2"],"missions/TWL2_CloakOfNight.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Crevice.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Dissention.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Drifts.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Drorck.mis":["TWL2-MapPack.vl2"],"missions/TWL2_FrozenGlory.mis":["TWL2-MapPack.vl2"],"missions/TWL2_FrozenHope.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Hildebrand.mis":["TWL2-MapPack.vl2"],"missions/TWL2_IceDagger.mis":["TWL2-MapPack.vl2"],"missions/TWL2_JaggedClaw.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Magnum.mis":["TWL2-MapPack.vl2"],"missions/TWL2_MidnightMayhemDeluxe.mis":["TWL2-MapPack.vl2"],"missions/TWL2_MuddySwamp.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Norty.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Ocular.mis":["TWL2-MapPack.vl2"],"missions/TWL2_RoughLand.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Ruined.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Skylight.mis":["TWL2-MapPack.vl2"],"missions/TWL2_WoodyMyrk.mis":["TWL2-MapPack.vl2"],"missions/TWL_Abaddon.mis":["TWL-MapPack.vl2"],"missions/TWL_BaNsHee.mis":["TWL-MapPack.vl2"],"missions/TWL_BeachBlitz.mis":["TWL-MapPack.vl2"],"missions/TWL_BeggarsRun.mis":["TWL-MapPack.vl2"],"missions/TWL_BlueMoon.mis":["TWL-MapPack.vl2"],"missions/TWL_Boss.mis":["TWL-MapPack.vl2"],"missions/TWL_Celerity.mis":["TWL-MapPack.vl2"],"missions/TWL_Chokepoint.mis":["TWL-MapPack.vl2"],"missions/TWL_Cinereous.mis":["TWL-MapPack.vl2"],"missions/TWL_Clusterfuct.mis":["TWL-MapPack.vl2"],"missions/TWL_Crossfire.mis":["TWL-MapPack.vl2"],"missions/TWL_Curtilage.mis":["TWL-MapPack.vl2"],"missions/TWL_Damnation.mis":["TWL-MapPack.vl2"],"missions/TWL_DangerousCrossing.mis":["TWL-MapPack.vl2"],"missions/TWL_DeadlyBirdsSong.mis":["TWL-MapPack.vl2"],"missions/TWL_Deserted.mis":["TWL-MapPack.vl2"],"missions/TWL_Desiccator.mis":["TWL-MapPack.vl2"],"missions/TWL_Drifts.mis":["TWL-MapPack.vl2"],"missions/TWL_Feign.mis":["TWL-MapPack.vl2"],"missions/TWL_Frostclaw.mis":["TWL-MapPack.vl2"],"missions/TWL_Frozen.mis":["TWL-MapPack.vl2"],"missions/TWL_Harvester.mis":["TWL-MapPack.vl2"],"missions/TWL_Horde.mis":["TWL-MapPack.vl2"],"missions/TWL_Katabatic.mis":["TWL-MapPack.vl2"],"missions/TWL_Magmatic.mis":["TWL-MapPack.vl2"],"missions/TWL_Minotaur.mis":["TWL-MapPack.vl2"],"missions/TWL_Neve.mis":["TWL-MapPack.vl2"],"missions/TWL_NoShelter.mis":["TWL-MapPack.vl2"],"missions/TWL_OsIris.mis":["TWL-MapPack.vl2"],"missions/TWL_Pandemonium.mis":["TWL-MapPack.vl2"],"missions/TWL_Quagmire.mis":["TWL-MapPack.vl2"],"missions/TWL_Raindance.mis":["TWL-MapPack.vl2"],"missions/TWL_Ramparts.mis":["TWL-MapPack.vl2"],"missions/TWL_Reversion.mis":["TWL-MapPack.vl2"],"missions/TWL_Rollercoaster.mis":["TWL-MapPack.vl2"],"missions/TWL_Runenmacht.mis":["TWL-MapPack.vl2"],"missions/TWL_Sandstorm.mis":["TWL-MapPack.vl2"],"missions/TWL_Slapdash.mis":["TWL-MapPack.vl2"],"missions/TWL_Snowblind.mis":["TWL-MapPack.vl2"],"missions/TWL_Starfallen.mis":["TWL-MapPack.vl2"],"missions/TWL_Stonehenge.mis":["TWL-MapPack.vl2"],"missions/TWL_SubZero.mis":["TWL-MapPack.vl2"],"missions/TWL_Surreal.mis":["TWL-MapPack.vl2"],"missions/TWL_Titan.mis":["TWL-MapPack.vl2"],"missions/TWL_WhiteDwarf.mis":["TWL-MapPack.vl2"],"missions/TWL_WilderZone.mis":["TWL-MapPack.vl2"],"missions/TWL_WoodyMyrk.mis":["TWL-MapPack.vl2"],"missions/Talus.mis":["missions.vl2"],"missions/TempleTussleVersion2.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Tenebrous.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ThinIce.mis":["missions.vl2"],"missions/Titan.mis":["Classic_maps_v1.vl2"],"missions/Tombstone.mis":["missions.vl2"],"missions/Training1.mis":["missions.vl2"],"missions/Training2.mis":["missions.vl2"],"missions/Training3.mis":["missions.vl2"],"missions/Training4.mis":["missions.vl2"],"missions/Training5.mis":["missions.vl2"],"missions/TreasureIsland.mis":["TR2final105-client.vl2"],"missions/Trident.mis":["DynamixFinalPack.vl2"],"missions/TridentLE.mis":["TridentLE.vl2"],"missions/TrueGrit.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/UltimaThule.mis":["missions.vl2"],"missions/Underhill.mis":["missions.vl2"],"missions/UphillBattle.mis":["UphillBattle.vl2"],"missions/UporDown.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/VulcansHammer.mis":["VulcansHammer.vl2"],"missions/WalledIn.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/WalledInII.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/WhiteDwarf.mis":["Classic_maps_v1.vl2"],"missions/Whiteout.mis":["missions.vl2"],"missions/WonderLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Yubarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"music/badlands.mp3":[""],"music/desert.mp3":[""],"music/ice.mp3":[""],"music/lush.mp3":[""],"music/volcanic.mp3":[""],"other/SkiFreeCreator.java":["SkiFreeGameType.vl2"],"other/terrain list.csv":["SkiFreeGameType.vl2"],"readme.txt":["centaur.vl2"],"scripts/BountyGame.cs":["scripts.vl2"],"scripts/CTFGame.cs":["scripts.vl2"],"scripts/CenterPrint.cs":["scripts.vl2"],"scripts/ChatGui.cs":["scripts.vl2"],"scripts/ChooseFilterDlg.cs":["scripts.vl2"],"scripts/CnHGame.cs":["scripts.vl2"],"scripts/CreativityGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/DMGame.cs":["scripts.vl2"],"scripts/DebriefGui.cs":["scripts.vl2"],"scripts/DefaultTurretsGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/DemoEndGui.cs":["scripts.vl2"],"scripts/DnDGame.cs":["scripts.vl2"],"scripts/EditChatMenuGui.cs":["scripts.vl2"],"scripts/EditorGui.cs":["scripts.vl2"],"scripts/EditorProfiles.cs":["scripts.vl2"],"scripts/GameGui.cs":["scripts.vl2"],"scripts/HothFFsGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/HuntersGame.cs":["scripts.vl2"],"scripts/LaunchLanGui.cs":["scripts.vl2"],"scripts/LobbyGui.cs":["scripts.vl2"],"scripts/OptionsDlg.cs":["scripts.vl2"],"scripts/PantherXL.cs":["scripts.vl2"],"scripts/PathEdit.cs":["scripts.vl2"],"scripts/RabbitGame.cs":["scripts.vl2"],"scripts/SiegeGame.cs":["scripts.vl2"],"scripts/SinglePlayerGame.cs":["scripts.vl2"],"scripts/SkiFreeAI.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeDatablock.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeGame.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeOverrides.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeTerrains.cs":["SkiFreeGameType.vl2"],"scripts/TR2BonusCategories.cs":["TR2final105-server.vl2"],"scripts/TR2BonusHud.cs":["TR2final105-client.vl2"],"scripts/TR2BonusSounds.cs":["TR2final105-server.vl2"],"scripts/TR2Bonuses.cs":["TR2final105-server.vl2"],"scripts/TR2Descriptions.cs":["TR2final105-server.vl2"],"scripts/TR2EventHud.cs":["TR2final105-client.vl2"],"scripts/TR2FlagToss.cs":["TR2final105-client.vl2"],"scripts/TR2Game.cs":["TR2final105-server.vl2"],"scripts/TR2Items.cs":["TR2final105-server.vl2"],"scripts/TR2Nouns.cs":["TR2final105-server.vl2"],"scripts/TR2ObserverQueue.cs":["TR2final105-server.vl2"],"scripts/TR2OtherBonuses.cs":["TR2final105-server.vl2"],"scripts/TR2Packages.cs":["TR2final105-server.vl2"],"scripts/TR2Particles.cs":["TR2final105-server.vl2"],"scripts/TR2Penalties.cs":["TR2final105-server.vl2"],"scripts/TR2Physics.cs":["TR2final105-server.vl2"],"scripts/TR2Prefixes.cs":["TR2final105-server.vl2"],"scripts/TR2Qualifiers.cs":["TR2final105-server.vl2"],"scripts/TR2Roles.cs":["TR2final105-server.vl2"],"scripts/TR2WeaponBonuses.cs":["TR2final105-server.vl2"],"scripts/TR2heavy_male.cs":["TR2final105-server.vl2"],"scripts/TR2light_female.cs":["TR2final105-server.vl2"],"scripts/TR2light_male.cs":["TR2final105-server.vl2"],"scripts/TR2medium_female.cs":["TR2final105-server.vl2"],"scripts/TR2medium_male.cs":["TR2final105-server.vl2"],"scripts/TeamHuntersGame.cs":["scripts.vl2"],"scripts/TeleportGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/Training1.cs":["scripts.vl2"],"scripts/Training2.cs":["scripts.vl2"],"scripts/Training3.cs":["scripts.vl2"],"scripts/Training4.cs":["scripts.vl2"],"scripts/Training5.cs":["scripts.vl2"],"scripts/TrainingGui.cs":["scripts.vl2"],"scripts/admin.cs":["scripts.vl2"],"scripts/ai.cs":["scripts.vl2"],"scripts/aiBotProfiles.cs":["scripts.vl2"],"scripts/aiBountyGame.cs":["scripts.vl2"],"scripts/aiCTF.cs":["scripts.vl2"],"scripts/aiChat.cs":["scripts.vl2"],"scripts/aiCnH.cs":["scripts.vl2"],"scripts/aiDeathMatch.cs":["scripts.vl2"],"scripts/aiDebug.cs":["scripts.vl2"],"scripts/aiDefaultTasks.cs":["scripts.vl2"],"scripts/aiDnD.cs":["scripts.vl2"],"scripts/aiHumanTasks.cs":["scripts.vl2"],"scripts/aiHunters.cs":["scripts.vl2"],"scripts/aiInventory.cs":["scripts.vl2"],"scripts/aiObjectiveBuilder.cs":["scripts.vl2"],"scripts/aiObjectives.cs":["scripts.vl2"],"scripts/aiRabbit.cs":["scripts.vl2"],"scripts/aiSiege.cs":["scripts.vl2"],"scripts/aiTeamHunters.cs":["scripts.vl2"],"scripts/autoexec/AllowBotSkin.cs":[""],"scripts/autoexec/InvincibleInv.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/autoexec/LakRabbitObjHud.cs":["zAddOnsVL2s/LakRabbit_Client.vl2"],"scripts/autoexec/SkiFreeSinglePlayer.cs":["SkiFreeGameType.vl2"],"scripts/autoexec/UEfix1.cs":[""],"scripts/autoexec/adminHud.cs":["","zz_Classic_client_v1.vl2"],"scripts/autoexec/arenaSupport.cs":["zAddOnsVL2s/arenaSupport.vl2"],"scripts/autoexec/chatmenuHudClear.cs":[""],"scripts/autoexec/classicPropMap.cs":["zz_Classic_client_v1.vl2"],"scripts/autoexec/clientOverloads.cs":["zz_Classic_client_v1.vl2"],"scripts/autoexec/dmpVersionCheck.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/autoexec/fov.cs":[""],"scripts/autoexec/ircTempFix.cs":[""],"scripts/autoexec/meltdownfix.cs":[""],"scripts/autoexec/modHud.cs":["","zz_Classic_client_v1.vl2"],"scripts/autoexec/perfCounter.cs":[""],"scripts/autoexec/practiceHud.cs":["zz_Classic_client_v1.vl2"],"scripts/autoexec/scripts.txt":["scripts.vl2"],"scripts/autoexec/statushud.cs":[""],"scripts/autoexec/t2csri_IRCfix.cs":["T2csri.vl2"],"scripts/autoexec/t2csri_IRCfix.cs.dso":["T2csri.vl2"],"scripts/autoexec/t2csri_list.cs":["T2csri.vl2"],"scripts/autoexec/t2csri_list.cs.dso":["T2csri.vl2"],"scripts/autoexec/t2csri_serv.cs":["T2csri.vl2"],"scripts/autoexec/t2csri_serv.cs.dso":["T2csri.vl2"],"scripts/autoexec/tourneyInit.cs":["tournamentNetClient2.vl2"],"scripts/badlandsPropMap.cs":["scripts.vl2"],"scripts/bioderm_heavy.cs":["scripts.vl2"],"scripts/bioderm_light.cs":["scripts.vl2"],"scripts/bioderm_medium.cs":["scripts.vl2"],"scripts/camera.cs":["scripts.vl2"],"scripts/cannedChatItems.cs":["scripts.vl2"],"scripts/chatMenuHud.cs":["scripts.vl2"],"scripts/client.cs":["scripts.vl2"],"scripts/clientAudio.cs":["scripts.vl2"],"scripts/clientDefaults.cs":["scripts.vl2"],"scripts/clientTasks.cs":["scripts.vl2"],"scripts/commanderMap.cs":["scripts.vl2"],"scripts/commanderMapHelpText.cs":["scripts.vl2"],"scripts/commanderMapIcons.cs":["scripts.vl2"],"scripts/commanderProfiles.cs":["scripts.vl2"],"scripts/commonDialogs.cs":["scripts.vl2"],"scripts/controlDefaults.cs":["scripts.vl2"],"scripts/creditsGui.cs":["scripts.vl2"],"scripts/creditsText.cs":["scripts.vl2"],"scripts/cursors.cs":["scripts.vl2"],"scripts/damageTypes.cs":["scripts.vl2"],"scripts/deathMessages.cs":["scripts.vl2"],"scripts/debuggerGui.cs":["scripts.vl2"],"scripts/defaultGame.cs":["scripts.vl2"],"scripts/deployables.cs":["scripts.vl2"],"scripts/depthSort.cs":["scripts.vl2"],"scripts/desertPropMap.cs":["scripts.vl2"],"scripts/editor.bind.cs":["scripts.vl2"],"scripts/editor.cs":["scripts.vl2"],"scripts/editorRender.cs":["scripts.vl2"],"scripts/environmentals.cs":["scripts.vl2"],"scripts/forceField.cs":["scripts.vl2"],"scripts/gameBase.cs":["scripts.vl2"],"scripts/gameCanvas.cs":["scripts.vl2"],"scripts/graphBuild.cs":["scripts.vl2"],"scripts/heavy_male.cs":["scripts.vl2"],"scripts/help.cs":["scripts.vl2"],"scripts/helpGuiText.cs":["scripts.vl2"],"scripts/hud.cs":["scripts.vl2"],"scripts/icePropMap.cs":["scripts.vl2"],"scripts/inventory.cs":["scripts.vl2"],"scripts/inventoryHud.cs":["scripts.vl2"],"scripts/item.cs":["scripts.vl2"],"scripts/joystickBind.cs":["scripts.vl2"],"scripts/lavaPropMap.cs":["scripts.vl2"],"scripts/light_female.cs":["scripts.vl2"],"scripts/light_male.cs":["scripts.vl2"],"scripts/lightning.cs":["scripts.vl2"],"scripts/liquidProfiles.cs":["scripts.vl2"],"scripts/loadingGui.cs":["scripts.vl2"],"scripts/lushPropMap.cs":["scripts.vl2"],"scripts/markers.cs":["scripts.vl2"],"scripts/medium_female.cs":["scripts.vl2"],"scripts/medium_male.cs":["scripts.vl2"],"scripts/message.cs":["scripts.vl2"],"scripts/navGraph.cs":["scripts.vl2"],"scripts/objectiveHud.cs":["scripts.vl2"],"scripts/pack.cs":["scripts.vl2"],"scripts/packs/ELFbarrelPack.cs":["scripts.vl2"],"scripts/packs/TR2energypack.cs":["TR2final105-server.vl2"],"scripts/packs/aabarrelPack.cs":["scripts.vl2"],"scripts/packs/ammopack.cs":["scripts.vl2"],"scripts/packs/cloakingpack.cs":["scripts.vl2"],"scripts/packs/energypack.cs":["scripts.vl2"],"scripts/packs/missilebarrelPack.cs":["scripts.vl2"],"scripts/packs/mortarBarrelPack.cs":["scripts.vl2"],"scripts/packs/plasmabarrelPack.cs":["scripts.vl2"],"scripts/packs/repairpack.cs":["scripts.vl2"],"scripts/packs/satchelCharge.cs":["scripts.vl2"],"scripts/packs/sensorjammerpack.cs":["scripts.vl2"],"scripts/packs/shieldpack.cs":["scripts.vl2"],"scripts/particleDummies.cs":["scripts.vl2"],"scripts/particleEmitter.cs":["scripts.vl2"],"scripts/player.cs":["scripts.vl2"],"scripts/power.cs":["scripts.vl2"],"scripts/projectiles.cs":["scripts.vl2"],"scripts/recordings.cs":["scripts.vl2"],"scripts/redbook.cs":["scripts.vl2"],"scripts/scoreList.cs":["scripts.vl2"],"scripts/scoreScreen.cs":["scripts.vl2"],"scripts/server.cs":["scripts.vl2"],"scripts/serverAudio.cs":["scripts.vl2"],"scripts/serverCommanderMap.cs":["scripts.vl2"],"scripts/serverDefaults.cs":["scripts.vl2"],"scripts/serverTasks.cs":["scripts.vl2"],"scripts/simGroup.cs":["scripts.vl2"],"scripts/spdialog.cs":["scripts.vl2"],"scripts/staticShape.cs":["scripts.vl2"],"scripts/station.cs":["scripts.vl2"],"scripts/stationSetInv.cs":["scripts.vl2"],"scripts/targetManager.cs":["scripts.vl2"],"scripts/teribaen/arena_support_info.txt":["zAddOnsVL2s/arenaSupport.vl2"],"scripts/trigger.cs":["scripts.vl2"],"scripts/turret.cs":["scripts.vl2"],"scripts/turrets/ELFBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/aaBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/indoorDeployableBarrel.cs":["scripts.vl2"],"scripts/turrets/missileBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/mortarBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/outdoorDeployableBarrel.cs":["scripts.vl2"],"scripts/turrets/plasmaBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/sentryTurret.cs":["scripts.vl2"],"scripts/vehicles/clientVehicleHud.cs":["scripts.vl2"],"scripts/vehicles/serverVehicleHud.cs":["scripts.vl2"],"scripts/vehicles/vehicle.cs":["scripts.vl2"],"scripts/vehicles/vehicle_bomber.cs":["scripts.vl2"],"scripts/vehicles/vehicle_havoc.cs":["scripts.vl2"],"scripts/vehicles/vehicle_mpb.cs":["scripts.vl2"],"scripts/vehicles/vehicle_shrike.cs":["scripts.vl2"],"scripts/vehicles/vehicle_spec_fx.cs":["scripts.vl2"],"scripts/vehicles/vehicle_tank.cs":["scripts.vl2"],"scripts/vehicles/vehicle_wildcat.cs":["scripts.vl2"],"scripts/voiceBinds.cs":["scripts.vl2"],"scripts/voiceChat.cs":["scripts.vl2"],"scripts/waveProfiles.cs":["scripts.vl2"],"scripts/weapTurretCode.cs":["scripts.vl2"],"scripts/weapons.cs":["scripts.vl2"],"scripts/weapons/ELFGun.cs":["scripts.vl2"],"scripts/weapons/TR2chaingun.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2disc.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2grenade.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2grenadeLauncher.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2mortar.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2shockLance.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2targetingLaser.cs":["TR2final105-server.vl2"],"scripts/weapons/blaster.cs":["scripts.vl2"],"scripts/weapons/cameraGrenade.cs":["scripts.vl2"],"scripts/weapons/chaingun.cs":["scripts.vl2"],"scripts/weapons/concussionGrenade.cs":["scripts.vl2"],"scripts/weapons/disc.cs":["scripts.vl2"],"scripts/weapons/flareGrenade.cs":["scripts.vl2"],"scripts/weapons/flashGrenade.cs":["scripts.vl2"],"scripts/weapons/grenade.cs":["scripts.vl2"],"scripts/weapons/grenadeLauncher.cs":["scripts.vl2"],"scripts/weapons/mine.cs":["scripts.vl2"],"scripts/weapons/missileLauncher.cs":["scripts.vl2"],"scripts/weapons/mortar.cs":["scripts.vl2"],"scripts/weapons/plasma.cs":["scripts.vl2"],"scripts/weapons/shockLance.cs":["scripts.vl2"],"scripts/weapons/sniperRifle.cs":["scripts.vl2"],"scripts/weapons/targetingLaser.cs":["scripts.vl2"],"scripts/weather.cs":["scripts.vl2"],"scripts/webbrowser.cs":["scripts.vl2"],"scripts/webemail.cs":["scripts.vl2"],"scripts/webforums.cs":["scripts.vl2"],"scripts/weblinks.cs":["scripts.vl2"],"scripts/webnews.cs":["scripts.vl2"],"scripts/webstuff.cs":["scripts.vl2"],"scripts/webtest.cs":["scripts.vl2"],"shapes/C_BaseLoPro.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/TR2flag.dts":["TR2final105-client.vl2"],"shapes/TR2heavy_male.dts":["TR2final105-client.vl2"],"shapes/TR2heavy_male_back.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celdance.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celflex.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celjump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celtaunt.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_land.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_root.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_side.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female.dts":["TR2final105-client.vl2"],"shapes/TR2light_female_back.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celbow.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celdance.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_land.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_root.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_side.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntbutt.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntkiss.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male.dts":["TR2final105-client.vl2"],"shapes/TR2light_male_back.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_land.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_root.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_side.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female.dts":["TR2final105-client.vl2"],"shapes/TR2medium_female_back.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celbow.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celdisco.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_land.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_root.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_side.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntbutt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntkiss.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male.dts":["TR2final105-client.vl2"],"shapes/TR2medium_male_back.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celdance.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celflex.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celrocky.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celtaunt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_land.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_root.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_side.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_sitting.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2weapon_chaingun.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_disc.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_grenade_launcher.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_mortar.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_shocklance.dts":["TR2final105-client.vl2"],"shapes/ammo_chaingun.dts":["shapes.vl2"],"shapes/ammo_disc.dts":["shapes.vl2"],"shapes/ammo_grenade.dts":["shapes.vl2"],"shapes/ammo_mine.dts":["shapes.vl2"],"shapes/ammo_missile.dts":["shapes.vl2"],"shapes/ammo_mortar.dts":["shapes.vl2"],"shapes/ammo_plasma.dts":["shapes.vl2"],"shapes/banner_honor.dts":["shapes.vl2"],"shapes/banner_strength.dts":["shapes.vl2"],"shapes/banner_unity.dts":["shapes.vl2"],"shapes/beacon.dts":["shapes.vl2"],"shapes/billboard_1.dts":["TR2final105-client.vl2"],"shapes/billboard_2.dts":["TR2final105-client.vl2"],"shapes/billboard_3.dts":["TR2final105-client.vl2"],"shapes/billboard_4.dts":["TR2final105-client.vl2"],"shapes/bio_player_debris.dts":["shapes.vl2"],"shapes/bioderm_heavy.dts":["shapes.vl2"],"shapes/bioderm_heavy_back.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celflex2.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celgora.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celjump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celroar.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celsalute.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celyeah.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieback.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diechest.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieforward.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diehead.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieknees.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieleglft.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dielegrt.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diesidelft.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diesidert.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieslump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diespin.dsq":["shapes.vl2"],"shapes/bioderm_heavy_fall.dsq":["shapes.vl2"],"shapes/bioderm_heavy_forward.dsq":["shapes.vl2"],"shapes/bioderm_heavy_head.dsq":["shapes.vl2"],"shapes/bioderm_heavy_headside.dsq":["shapes.vl2"],"shapes/bioderm_heavy_idlepda.dsq":["shapes.vl2"],"shapes/bioderm_heavy_jet.dsq":["shapes.vl2"],"shapes/bioderm_heavy_jump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_land.dsq":["shapes.vl2"],"shapes/bioderm_heavy_lookde.dsq":["shapes.vl2"],"shapes/bioderm_heavy_lookms.dsq":["shapes.vl2"],"shapes/bioderm_heavy_looknw.dsq":["shapes.vl2"],"shapes/bioderm_heavy_recoilde.dsq":["shapes.vl2"],"shapes/bioderm_heavy_root.dsq":["shapes.vl2"],"shapes/bioderm_heavy_side.dsq":["shapes.vl2"],"shapes/bioderm_heavy_ski.dsq":["shapes.vl2"],"shapes/bioderm_heavy_standjump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_tauntbest.dsq":["shapes.vl2"],"shapes/bioderm_heavy_tauntbull.dsq":["shapes.vl2"],"shapes/bioderm_light.dts":["shapes.vl2"],"shapes/bioderm_light_back.dsq":["shapes.vl2"],"shapes/bioderm_light_celflex2.dsq":["shapes.vl2"],"shapes/bioderm_light_celgora.dsq":["shapes.vl2"],"shapes/bioderm_light_celjump.dsq":["shapes.vl2"],"shapes/bioderm_light_celroar.dsq":["shapes.vl2"],"shapes/bioderm_light_celsalute.dsq":["shapes.vl2"],"shapes/bioderm_light_celyeah.dsq":["shapes.vl2"],"shapes/bioderm_light_dieback.dsq":["shapes.vl2"],"shapes/bioderm_light_diechest.dsq":["shapes.vl2"],"shapes/bioderm_light_dieforward.dsq":["shapes.vl2"],"shapes/bioderm_light_diehead.dsq":["shapes.vl2"],"shapes/bioderm_light_dieknees.dsq":["shapes.vl2"],"shapes/bioderm_light_dieleglft.dsq":["shapes.vl2"],"shapes/bioderm_light_dielegrt.dsq":["shapes.vl2"],"shapes/bioderm_light_diesidelft.dsq":["shapes.vl2"],"shapes/bioderm_light_diesidert.dsq":["shapes.vl2"],"shapes/bioderm_light_dieslump.dsq":["shapes.vl2"],"shapes/bioderm_light_diespin.dsq":["shapes.vl2"],"shapes/bioderm_light_fall.dsq":["shapes.vl2"],"shapes/bioderm_light_forward.dsq":["shapes.vl2"],"shapes/bioderm_light_head.dsq":["shapes.vl2"],"shapes/bioderm_light_headside.dsq":["shapes.vl2"],"shapes/bioderm_light_idlepda.dsq":["shapes.vl2"],"shapes/bioderm_light_jet.dsq":["shapes.vl2"],"shapes/bioderm_light_jump.dsq":["shapes.vl2"],"shapes/bioderm_light_land.dsq":["shapes.vl2"],"shapes/bioderm_light_lookde.dsq":["shapes.vl2"],"shapes/bioderm_light_lookms.dsq":["shapes.vl2"],"shapes/bioderm_light_looknw.dsq":["shapes.vl2"],"shapes/bioderm_light_recoilde.dsq":["shapes.vl2"],"shapes/bioderm_light_root.dsq":["shapes.vl2"],"shapes/bioderm_light_scoutroot.dsq":["shapes.vl2"],"shapes/bioderm_light_side.dsq":["shapes.vl2"],"shapes/bioderm_light_sitting.dsq":["shapes.vl2"],"shapes/bioderm_light_ski.dsq":["shapes.vl2"],"shapes/bioderm_light_standjump.dsq":["shapes.vl2"],"shapes/bioderm_light_tauntbest.dsq":["shapes.vl2"],"shapes/bioderm_light_tauntbull.dsq":["shapes.vl2"],"shapes/bioderm_medium.dts":["shapes.vl2"],"shapes/bioderm_medium_back.dsq":["shapes.vl2"],"shapes/bioderm_medium_celflex2.dsq":["shapes.vl2"],"shapes/bioderm_medium_celgora.dsq":["shapes.vl2"],"shapes/bioderm_medium_celjump.dsq":["shapes.vl2"],"shapes/bioderm_medium_celroar.dsq":["shapes.vl2"],"shapes/bioderm_medium_celsalute.dsq":["shapes.vl2"],"shapes/bioderm_medium_celyeah.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieback.dsq":["shapes.vl2"],"shapes/bioderm_medium_diechest.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieforward.dsq":["shapes.vl2"],"shapes/bioderm_medium_diehead.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieknees.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieleglft.dsq":["shapes.vl2"],"shapes/bioderm_medium_dielegrt.dsq":["shapes.vl2"],"shapes/bioderm_medium_diesidelft.dsq":["shapes.vl2"],"shapes/bioderm_medium_diesidert.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieslump.dsq":["shapes.vl2"],"shapes/bioderm_medium_diespin.dsq":["shapes.vl2"],"shapes/bioderm_medium_fall.dsq":["shapes.vl2"],"shapes/bioderm_medium_forward.dsq":["shapes.vl2"],"shapes/bioderm_medium_head.dsq":["shapes.vl2"],"shapes/bioderm_medium_headside.dsq":["shapes.vl2"],"shapes/bioderm_medium_idlepda.dsq":["shapes.vl2"],"shapes/bioderm_medium_jet.dsq":["shapes.vl2"],"shapes/bioderm_medium_jump.dsq":["shapes.vl2"],"shapes/bioderm_medium_land.dsq":["shapes.vl2"],"shapes/bioderm_medium_lookde.dsq":["shapes.vl2"],"shapes/bioderm_medium_lookms.dsq":["shapes.vl2"],"shapes/bioderm_medium_looknw.dsq":["shapes.vl2"],"shapes/bioderm_medium_recoilde.dsq":["shapes.vl2"],"shapes/bioderm_medium_root.dsq":["shapes.vl2"],"shapes/bioderm_medium_side.dsq":["shapes.vl2"],"shapes/bioderm_medium_sitting.dsq":["shapes.vl2"],"shapes/bioderm_medium_ski.dsq":["shapes.vl2"],"shapes/bioderm_medium_standjump.dsq":["shapes.vl2"],"shapes/bioderm_medium_tauntbest.dsq":["shapes.vl2"],"shapes/bioderm_medium_tauntbull.dsq":["shapes.vl2"],"shapes/bmiscf.dts":["shapes.vl2"],"shapes/bomb.dts":["shapes.vl2"],"shapes/bombers_eye.dts":["shapes.vl2"],"shapes/borg1.dts":["shapes.vl2"],"shapes/borg11.dts":["Classic_maps_v1.vl2"],"shapes/borg12.dts":["shapes.vl2"],"shapes/borg13.dts":["shapes.vl2"],"shapes/borg15.dts":["shapes.vl2"],"shapes/borg16-Autumn.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/borg16.dts":["shapes.vl2"],"shapes/borg17.dts":["shapes.vl2"],"shapes/borg18.dts":["shapes.vl2"],"shapes/borg19-Autumn.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/borg19.dts":["shapes.vl2"],"shapes/borg2.dts":["shapes.vl2"],"shapes/borg20.dts":["shapes.vl2"],"shapes/borg23.dts":["shapes.vl2"],"shapes/borg25.dts":["shapes.vl2"],"shapes/borg3.dts":["shapes.vl2"],"shapes/borg31.dts":["shapes.vl2"],"shapes/borg32.dts":["shapes.vl2"],"shapes/borg33.dts":["shapes.vl2"],"shapes/borg34.dts":["shapes.vl2"],"shapes/borg4.dts":["shapes.vl2"],"shapes/borg5.dts":["shapes.vl2"],"shapes/borg6.dts":["shapes.vl2"],"shapes/borg7.dts":["shapes.vl2"],"shapes/borg8.dts":["shapes.vl2"],"shapes/camera.dts":["shapes.vl2"],"shapes/chaingun_shot.dts":["shapes.vl2"],"shapes/debris_generic.dts":["shapes.vl2"],"shapes/debris_generic_small.dts":["shapes.vl2"],"shapes/debris_player.dts":["shapes.vl2"],"shapes/deploy_ammo.dts":["shapes.vl2"],"shapes/deploy_inventory.dts":["shapes.vl2"],"shapes/deploy_sensor_motion.dts":["shapes.vl2"],"shapes/deploy_sensor_pulse.dts":["shapes.vl2"],"shapes/disc.dts":["shapes.vl2"],"shapes/disc_explosion.dts":["shapes.vl2"],"shapes/dmiscf.dts":["shapes.vl2"],"shapes/dorg15.dts":["shapes.vl2"],"shapes/dorg16.dts":["shapes.vl2"],"shapes/dorg17.dts":["shapes.vl2"],"shapes/dorg18.dts":["shapes.vl2"],"shapes/dorg19.dts":["shapes.vl2"],"shapes/effect_plasma_explosion.dts":["shapes.vl2"],"shapes/energy_bolt.dts":["shapes.vl2"],"shapes/energy_explosion.dts":["shapes.vl2"],"shapes/ext_flagstand.dts":["shapes.vl2"],"shapes/flag.dts":["shapes.vl2"],"shapes/goal_back.dts":["TR2final105-client.vl2"],"shapes/goal_panel.dts":["TR2final105-client.vl2"],"shapes/goal_side.dts":["TR2final105-client.vl2"],"shapes/goal_top.dts":["TR2final105-client.vl2"],"shapes/gold_goal_back.dts":["TR2final105-client.vl2"],"shapes/gold_goal_side.dts":["TR2final105-client.vl2"],"shapes/gold_goal_top.dts":["TR2final105-client.vl2"],"shapes/golden_pole.dts":["TR2final105-client.vl2"],"shapes/gravemarker_1.dts":["shapes.vl2"],"shapes/grenade.dts":["shapes.vl2"],"shapes/grenade_flare.dts":["shapes.vl2"],"shapes/grenade_flash.dts":["shapes.vl2"],"shapes/grenade_projectile.dts":["shapes.vl2"],"shapes/heavy_male.dts":["shapes.vl2"],"shapes/heavy_male_back.dsq":["shapes.vl2"],"shapes/heavy_male_celdance.dsq":["shapes.vl2"],"shapes/heavy_male_celflex.dsq":["shapes.vl2"],"shapes/heavy_male_celjump.dsq":["shapes.vl2"],"shapes/heavy_male_celsalute.dsq":["shapes.vl2"],"shapes/heavy_male_celtaunt.dsq":["shapes.vl2"],"shapes/heavy_male_celwave.dsq":["shapes.vl2"],"shapes/heavy_male_dead.dts":["shapes.vl2"],"shapes/heavy_male_dieback.dsq":["shapes.vl2"],"shapes/heavy_male_diechest.dsq":["shapes.vl2"],"shapes/heavy_male_dieforward.dsq":["shapes.vl2"],"shapes/heavy_male_diehead.dsq":["shapes.vl2"],"shapes/heavy_male_dieknees.dsq":["shapes.vl2"],"shapes/heavy_male_dieleglf.dsq":["shapes.vl2"],"shapes/heavy_male_dielegrt.dsq":["shapes.vl2"],"shapes/heavy_male_diesidelf.dsq":["shapes.vl2"],"shapes/heavy_male_diesidert.dsq":["shapes.vl2"],"shapes/heavy_male_dieslump.dsq":["shapes.vl2"],"shapes/heavy_male_diespin.dsq":["shapes.vl2"],"shapes/heavy_male_fall.dsq":["shapes.vl2"],"shapes/heavy_male_forward.dsq":["shapes.vl2"],"shapes/heavy_male_head.dsq":["shapes.vl2"],"shapes/heavy_male_headside.dsq":["shapes.vl2"],"shapes/heavy_male_idlepda.dsq":["shapes.vl2"],"shapes/heavy_male_jet.dsq":["shapes.vl2"],"shapes/heavy_male_jump.dsq":["shapes.vl2"],"shapes/heavy_male_land.dsq":["shapes.vl2"],"shapes/heavy_male_lookde.dsq":["shapes.vl2"],"shapes/heavy_male_lookms.dsq":["shapes.vl2"],"shapes/heavy_male_looknw.dsq":["shapes.vl2"],"shapes/heavy_male_recoilde.dsq":["shapes.vl2"],"shapes/heavy_male_root.dsq":["shapes.vl2"],"shapes/heavy_male_side.dsq":["shapes.vl2"],"shapes/heavy_male_ski.dsq":["shapes.vl2"],"shapes/heavy_male_standjump.dsq":["shapes.vl2"],"shapes/heavy_male_tauntbest.dsq":["shapes.vl2"],"shapes/heavy_male_tauntimp.dsq":["shapes.vl2"],"shapes/huntersflag.dts":["shapes.vl2"],"shapes/int_flagstand.dts":["shapes.vl2"],"shapes/light_female.dts":["shapes.vl2"],"shapes/light_female_back.dsq":["shapes.vl2"],"shapes/light_female_celbow.dsq":["shapes.vl2"],"shapes/light_female_celdance.dsq":["shapes.vl2"],"shapes/light_female_celsalute.dsq":["shapes.vl2"],"shapes/light_female_celwave.dsq":["shapes.vl2"],"shapes/light_female_dieback.dsq":["shapes.vl2"],"shapes/light_female_diechest.dsq":["shapes.vl2"],"shapes/light_female_dieforward.dsq":["shapes.vl2"],"shapes/light_female_diehead.dsq":["shapes.vl2"],"shapes/light_female_dieknees.dsq":["shapes.vl2"],"shapes/light_female_dieleglf.dsq":["shapes.vl2"],"shapes/light_female_dielegrt.dsq":["shapes.vl2"],"shapes/light_female_diesidelf.dsq":["shapes.vl2"],"shapes/light_female_diesidert.dsq":["shapes.vl2"],"shapes/light_female_dieslump.dsq":["shapes.vl2"],"shapes/light_female_diespin.dsq":["shapes.vl2"],"shapes/light_female_fall.dsq":["shapes.vl2"],"shapes/light_female_forward.dsq":["shapes.vl2"],"shapes/light_female_head.dsq":["shapes.vl2"],"shapes/light_female_headside.dsq":["shapes.vl2"],"shapes/light_female_idlepda.dsq":["shapes.vl2"],"shapes/light_female_jet.dsq":["shapes.vl2"],"shapes/light_female_jump.dsq":["shapes.vl2"],"shapes/light_female_land.dsq":["shapes.vl2"],"shapes/light_female_lookde.dsq":["shapes.vl2"],"shapes/light_female_lookms.dsq":["shapes.vl2"],"shapes/light_female_looknw.dsq":["shapes.vl2"],"shapes/light_female_looksn.dsq":["shapes.vl2"],"shapes/light_female_recoilde.dsq":["shapes.vl2"],"shapes/light_female_root.dsq":["shapes.vl2"],"shapes/light_female_scoutroot.dsq":["shapes.vl2"],"shapes/light_female_side.dsq":["shapes.vl2"],"shapes/light_female_sitting.dsq":["shapes.vl2"],"shapes/light_female_ski.dsq":["shapes.vl2"],"shapes/light_female_standjump.dsq":["shapes.vl2"],"shapes/light_female_tauntbest.dsq":["shapes.vl2"],"shapes/light_female_tauntbutt.dsq":["shapes.vl2"],"shapes/light_female_tauntimp.dsq":["shapes.vl2"],"shapes/light_female_tauntkiss.dsq":["shapes.vl2"],"shapes/light_male.dts":["shapes.vl2"],"shapes/light_male_back.dsq":["shapes.vl2"],"shapes/light_male_celdisco.dsq":["shapes.vl2"],"shapes/light_male_celflex.dsq":["shapes.vl2"],"shapes/light_male_celrocky.dsq":["shapes.vl2"],"shapes/light_male_celsalute.dsq":["shapes.vl2"],"shapes/light_male_celtaunt.dsq":["shapes.vl2"],"shapes/light_male_celwave.dsq":["shapes.vl2"],"shapes/light_male_dead.dts":["shapes.vl2"],"shapes/light_male_dieback.dsq":["shapes.vl2"],"shapes/light_male_diechest.dsq":["shapes.vl2"],"shapes/light_male_dieforward.dsq":["shapes.vl2"],"shapes/light_male_diehead.dsq":["shapes.vl2"],"shapes/light_male_dieknees.dsq":["shapes.vl2"],"shapes/light_male_dieleglf.dsq":["shapes.vl2"],"shapes/light_male_dielegrt.dsq":["shapes.vl2"],"shapes/light_male_diesidelf.dsq":["shapes.vl2"],"shapes/light_male_diesidert.dsq":["shapes.vl2"],"shapes/light_male_dieslump.dsq":["shapes.vl2"],"shapes/light_male_diespin.dsq":["shapes.vl2"],"shapes/light_male_fall.dsq":["shapes.vl2"],"shapes/light_male_forward.dsq":["shapes.vl2"],"shapes/light_male_head.dsq":["shapes.vl2"],"shapes/light_male_headside.dsq":["shapes.vl2"],"shapes/light_male_idlepda.dsq":["shapes.vl2"],"shapes/light_male_jet.dsq":["shapes.vl2"],"shapes/light_male_jump.dsq":["shapes.vl2"],"shapes/light_male_land.dsq":["shapes.vl2"],"shapes/light_male_lookde.dsq":["shapes.vl2"],"shapes/light_male_lookms.dsq":["shapes.vl2"],"shapes/light_male_looknw.dsq":["shapes.vl2"],"shapes/light_male_looksn.dsq":["shapes.vl2"],"shapes/light_male_newland.dsq":["shapes.vl2"],"shapes/light_male_recoilde.dsq":["shapes.vl2"],"shapes/light_male_root.dsq":["shapes.vl2"],"shapes/light_male_scoutroot.dsq":["shapes.vl2"],"shapes/light_male_side.dsq":["shapes.vl2"],"shapes/light_male_sitting.dsq":["shapes.vl2"],"shapes/light_male_ski.dsq":["shapes.vl2"],"shapes/light_male_standjump.dsq":["shapes.vl2"],"shapes/light_male_tauntbest.dsq":["shapes.vl2"],"shapes/light_male_tauntimp.dsq":["shapes.vl2"],"shapes/medium_female.dts":["shapes.vl2"],"shapes/medium_female_back.dsq":["shapes.vl2"],"shapes/medium_female_celbow.dsq":["shapes.vl2"],"shapes/medium_female_celdisco.dsq":["shapes.vl2"],"shapes/medium_female_celsalute.dsq":["shapes.vl2"],"shapes/medium_female_celwave.dsq":["shapes.vl2"],"shapes/medium_female_dieback.dsq":["shapes.vl2"],"shapes/medium_female_diechest.dsq":["shapes.vl2"],"shapes/medium_female_dieforward.dsq":["shapes.vl2"],"shapes/medium_female_diehead.dsq":["shapes.vl2"],"shapes/medium_female_dieknees.dsq":["shapes.vl2"],"shapes/medium_female_dieleglf.dsq":["shapes.vl2"],"shapes/medium_female_dielegrt.dsq":["shapes.vl2"],"shapes/medium_female_diesidelf.dsq":["shapes.vl2"],"shapes/medium_female_diesidert.dsq":["shapes.vl2"],"shapes/medium_female_dieslump.dsq":["shapes.vl2"],"shapes/medium_female_diespin.dsq":["shapes.vl2"],"shapes/medium_female_fall.dsq":["shapes.vl2"],"shapes/medium_female_forward.dsq":["shapes.vl2"],"shapes/medium_female_head.dsq":["shapes.vl2"],"shapes/medium_female_headside.dsq":["shapes.vl2"],"shapes/medium_female_idlepda.dsq":["shapes.vl2"],"shapes/medium_female_jet.dsq":["shapes.vl2"],"shapes/medium_female_jump.dsq":["shapes.vl2"],"shapes/medium_female_land.dsq":["shapes.vl2"],"shapes/medium_female_lookde.dsq":["shapes.vl2"],"shapes/medium_female_lookms.dsq":["shapes.vl2"],"shapes/medium_female_looknw.dsq":["shapes.vl2"],"shapes/medium_female_looksn.dsq":["shapes.vl2"],"shapes/medium_female_recoilde.dsq":["shapes.vl2"],"shapes/medium_female_root.dsq":["shapes.vl2"],"shapes/medium_female_side.dsq":["shapes.vl2"],"shapes/medium_female_sitting.dsq":["shapes.vl2"],"shapes/medium_female_ski.dsq":["shapes.vl2"],"shapes/medium_female_standjump.dsq":["shapes.vl2"],"shapes/medium_female_tauntbest.dsq":["shapes.vl2"],"shapes/medium_female_tauntbutt.dsq":["shapes.vl2"],"shapes/medium_female_tauntimp.dsq":["shapes.vl2"],"shapes/medium_female_tauntkiss.dsq":["shapes.vl2"],"shapes/medium_male.dts":["shapes.vl2"],"shapes/medium_male_back.dsq":["shapes.vl2"],"shapes/medium_male_celdance.dsq":["shapes.vl2"],"shapes/medium_male_celflex.dsq":["shapes.vl2"],"shapes/medium_male_celrocky.dsq":["shapes.vl2"],"shapes/medium_male_celsalute.dsq":["shapes.vl2"],"shapes/medium_male_celtaunt.dsq":["shapes.vl2"],"shapes/medium_male_celwave.dsq":["shapes.vl2"],"shapes/medium_male_dead.dts":["shapes.vl2"],"shapes/medium_male_dieback.dsq":["shapes.vl2"],"shapes/medium_male_diechest.dsq":["shapes.vl2"],"shapes/medium_male_dieforward.dsq":["shapes.vl2"],"shapes/medium_male_diehead.dsq":["shapes.vl2"],"shapes/medium_male_dieknees.dsq":["shapes.vl2"],"shapes/medium_male_dieleglf.dsq":["shapes.vl2"],"shapes/medium_male_dielegrt.dsq":["shapes.vl2"],"shapes/medium_male_diesidelf.dsq":["shapes.vl2"],"shapes/medium_male_diesidert.dsq":["shapes.vl2"],"shapes/medium_male_dieslump.dsq":["shapes.vl2"],"shapes/medium_male_diespin.dsq":["shapes.vl2"],"shapes/medium_male_fall.dsq":["shapes.vl2"],"shapes/medium_male_forward.dsq":["shapes.vl2"],"shapes/medium_male_head.dsq":["shapes.vl2"],"shapes/medium_male_headside.dsq":["shapes.vl2"],"shapes/medium_male_idlepda.dsq":["shapes.vl2"],"shapes/medium_male_jet.dsq":["shapes.vl2"],"shapes/medium_male_jump.dsq":["shapes.vl2"],"shapes/medium_male_land.dsq":["shapes.vl2"],"shapes/medium_male_lookde.dsq":["shapes.vl2"],"shapes/medium_male_lookms.dsq":["shapes.vl2"],"shapes/medium_male_looknw.dsq":["shapes.vl2"],"shapes/medium_male_looksn.dsq":["shapes.vl2"],"shapes/medium_male_recoilde.dsq":["shapes.vl2"],"shapes/medium_male_root.dsq":["shapes.vl2"],"shapes/medium_male_side.dsq":["shapes.vl2"],"shapes/medium_male_sitting.dsq":["shapes.vl2"],"shapes/medium_male_ski.dsq":["shapes.vl2"],"shapes/medium_male_standjump.dsq":["shapes.vl2"],"shapes/medium_male_tauntbest.dsq":["shapes.vl2"],"shapes/medium_male_tauntimp.dsq":["shapes.vl2"],"shapes/mine.dts":["shapes.vl2"],"shapes/mortar_explosion.dts":["shapes.vl2"],"shapes/mortar_projectile.dts":["shapes.vl2"],"shapes/nexus_effect.dts":["shapes.vl2"],"shapes/nexusbase.dts":["shapes.vl2"],"shapes/nexuscap.dts":["shapes.vl2"],"shapes/octahedron.dts":["shapes.vl2"],"shapes/pack_barrel_aa.dts":["shapes.vl2"],"shapes/pack_barrel_elf.dts":["shapes.vl2"],"shapes/pack_barrel_fusion.dts":["shapes.vl2"],"shapes/pack_barrel_missile.dts":["shapes.vl2"],"shapes/pack_barrel_mortar.dts":["shapes.vl2"],"shapes/pack_deploy_ammo.dts":["shapes.vl2"],"shapes/pack_deploy_inventory.dts":["shapes.vl2"],"shapes/pack_deploy_sensor_motion.dts":["shapes.vl2"],"shapes/pack_deploy_sensor_pulse.dts":["shapes.vl2"],"shapes/pack_deploy_turreti.dts":["shapes.vl2"],"shapes/pack_deploy_turreto.dts":["shapes.vl2"],"shapes/pack_upgrade_ammo.dts":["shapes.vl2"],"shapes/pack_upgrade_cloaking.dts":["shapes.vl2"],"shapes/pack_upgrade_energy.dts":["shapes.vl2"],"shapes/pack_upgrade_repair.dts":["shapes.vl2"],"shapes/pack_upgrade_satchel.dts":["shapes.vl2"],"shapes/pack_upgrade_sensorjammer.dts":["shapes.vl2"],"shapes/pack_upgrade_shield.dts":["shapes.vl2"],"shapes/plasmabolt.dts":["shapes.vl2"],"shapes/pmiscf.dts":["shapes.vl2"],"shapes/porg1-dark.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/porg1.dts":["shapes.vl2"],"shapes/porg2.dts":["shapes.vl2"],"shapes/porg20.dts":["shapes.vl2"],"shapes/porg22.dts":["shapes.vl2"],"shapes/porg3.dts":["shapes.vl2"],"shapes/porg4.dts":["shapes.vl2"],"shapes/porg5.dts":["shapes.vl2"],"shapes/porg6.dts":["shapes.vl2"],"shapes/repair_kit.dts":["shapes.vl2"],"shapes/repair_patch.dts":["shapes.vl2"],"shapes/reticle_bomber.dts":["shapes.vl2"],"shapes/rst-TCmug.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-TNmug.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-chocotaco.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-goonflag.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-samifin.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-santahat.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-taobook.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-turtle.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/sensor_pulse_large.dts":["shapes.vl2"],"shapes/sensor_pulse_medium.dts":["shapes.vl2"],"shapes/silver_pole.dts":["TR2final105-client.vl2"],"shapes/smiscf.dts":["shapes.vl2"],"shapes/solarpanel.dts":["shapes.vl2"],"shapes/sorg20.dts":["shapes.vl2"],"shapes/sorg21.dts":["shapes.vl2"],"shapes/sorg22.dts":["shapes.vl2"],"shapes/sorg23.dts":["shapes.vl2"],"shapes/sorg24.dts":["shapes.vl2"],"shapes/stackable1l.dts":["shapes.vl2"],"shapes/stackable1m.dts":["shapes.vl2"],"shapes/stackable1s.dts":["shapes.vl2"],"shapes/stackable2l.dts":["shapes.vl2"],"shapes/stackable2m.dts":["shapes.vl2"],"shapes/stackable2s.dts":["shapes.vl2"],"shapes/stackable3l.dts":["shapes.vl2"],"shapes/stackable3m.dts":["shapes.vl2"],"shapes/stackable3s.dts":["shapes.vl2"],"shapes/stackable4l.dts":["shapes.vl2"],"shapes/stackable4m.dts":["shapes.vl2"],"shapes/stackable5l.dts":["shapes.vl2"],"shapes/stackable5m.dts":["shapes.vl2"],"shapes/station_generator_large.dts":["shapes.vl2"],"shapes/station_inv_human.dts":["shapes.vl2"],"shapes/station_inv_mpb.dts":["shapes.vl2"],"shapes/station_teleport.dts":["shapes.vl2"],"shapes/statue_base.dts":["shapes.vl2"],"shapes/statue_hmale.dts":["shapes.vl2"],"shapes/statue_lfemale.dts":["shapes.vl2"],"shapes/statue_lmale.dts":["shapes.vl2"],"shapes/statue_plaque.dts":["shapes.vl2"],"shapes/switch.dts":["shapes.vl2"],"shapes/teamlogo_bd.dts":["shapes.vl2"],"shapes/teamlogo_be.dts":["shapes.vl2"],"shapes/teamlogo_ds.dts":["shapes.vl2"],"shapes/teamlogo_hb.dts":["shapes.vl2"],"shapes/teamlogo_inf.dts":["shapes.vl2"],"shapes/teamlogo_projector.dts":["shapes.vl2"],"shapes/teamlogo_storm.dts":["shapes.vl2"],"shapes/teamlogo_sw.dts":["shapes.vl2"],"shapes/turret_aa_large.dts":["shapes.vl2"],"shapes/turret_assaulttank_mortar.dts":["shapes.vl2"],"shapes/turret_assaulttank_plasma.dts":["shapes.vl2"],"shapes/turret_base_large.dts":["shapes.vl2"],"shapes/turret_base_mpb.dts":["shapes.vl2"],"shapes/turret_belly_barrell.dts":["shapes.vl2"],"shapes/turret_belly_barrelr.dts":["shapes.vl2"],"shapes/turret_belly_base.dts":["shapes.vl2"],"shapes/turret_elf_large.dts":["shapes.vl2"],"shapes/turret_fusion_large.dts":["shapes.vl2"],"shapes/turret_indoor_deployc.dts":["shapes.vl2"],"shapes/turret_indoor_deployf.dts":["shapes.vl2"],"shapes/turret_indoor_deployw.dts":["shapes.vl2"],"shapes/turret_missile_large.dts":["shapes.vl2"],"shapes/turret_mortar_large.dts":["shapes.vl2"],"shapes/turret_muzzlepoint.dts":["shapes.vl2"],"shapes/turret_outdoor_deploy.dts":["shapes.vl2"],"shapes/turret_sentry.dts":["shapes.vl2"],"shapes/turret_tank_barrelchain.dts":["shapes.vl2"],"shapes/turret_tank_barrelmortar.dts":["shapes.vl2"],"shapes/turret_tank_base.dts":["shapes.vl2"],"shapes/vehicle_air_bomber.dts":["shapes.vl2"],"shapes/vehicle_air_bomber_debris.dts":["shapes.vl2"],"shapes/vehicle_air_hapc.dts":["shapes.vl2"],"shapes/vehicle_air_hapc_debris.dts":["shapes.vl2"],"shapes/vehicle_air_scout.dts":["shapes.vl2"],"shapes/vehicle_air_scout_debris.dts":["shapes.vl2"],"shapes/vehicle_air_scout_wreck.dts":["shapes.vl2"],"shapes/vehicle_grav_scout.dts":["shapes.vl2"],"shapes/vehicle_grav_scout_debris.dts":["shapes.vl2"],"shapes/vehicle_grav_tank.dts":["shapes.vl2"],"shapes/vehicle_grav_tank_debris.dts":["shapes.vl2"],"shapes/vehicle_grav_tank_wreck.dts":["shapes.vl2"],"shapes/vehicle_land_assault.dts":["shapes.vl2"],"shapes/vehicle_land_assault_debris.dts":["shapes.vl2"],"shapes/vehicle_land_assault_wreck.dts":["shapes.vl2"],"shapes/vehicle_land_mpbase.dts":["shapes.vl2"],"shapes/vehicle_land_mpbase_debris.dts":["shapes.vl2"],"shapes/vehicle_pad.dts":["shapes.vl2"],"shapes/vehicle_pad_station.dts":["shapes.vl2"],"shapes/vend.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/weapon_chaingun.dts":["shapes.vl2"],"shapes/weapon_chaingun_ammocasing.dts":["shapes.vl2"],"shapes/weapon_disc.dts":["shapes.vl2"],"shapes/weapon_elf.dts":["shapes.vl2"],"shapes/weapon_energy.dts":["shapes.vl2"],"shapes/weapon_energy_vehicle.dts":["shapes.vl2"],"shapes/weapon_grenade_launcher.dts":["shapes.vl2"],"shapes/weapon_missile.dts":["shapes.vl2"],"shapes/weapon_missile_casement.dts":["shapes.vl2"],"shapes/weapon_missile_fleschette.dts":["shapes.vl2"],"shapes/weapon_missile_projectile.dts":["shapes.vl2"],"shapes/weapon_mortar.dts":["shapes.vl2"],"shapes/weapon_plasma.dts":["shapes.vl2"],"shapes/weapon_repair.dts":["shapes.vl2"],"shapes/weapon_shocklance.dts":["shapes.vl2"],"shapes/weapon_sniper.dts":["shapes.vl2"],"shapes/weapon_targeting.dts":["shapes.vl2"],"shapes/xmiscf.dts":["shapes.vl2"],"shapes/xorg2.dts":["shapes.vl2"],"shapes/xorg20.dts":["shapes.vl2"],"shapes/xorg21.dts":["shapes.vl2"],"shapes/xorg3.dts":["shapes.vl2"],"shapes/xorg4.dts":["shapes.vl2"],"shapes/xorg5.dts":["shapes.vl2"],"t2csri/authconnect.cs":["T2csri.vl2"],"t2csri/authconnect.cs.dso":["T2csri.vl2"],"t2csri/authinterface.cs":["T2csri.vl2"],"t2csri/authinterface.cs.dso":["T2csri.vl2"],"t2csri/autoupdate.cs":["T2csri.vl2"],"t2csri/bans.cs":["T2csri.vl2"],"t2csri/bans.cs.dso":["T2csri.vl2"],"t2csri/base64.cs":["T2csri.vl2"],"t2csri/base64.cs.dso":["T2csri.vl2"],"t2csri/certstore.rb":["T2csri.vl2"],"t2csri/clientSide.cs":["T2csri.vl2"],"t2csri/clientSide.cs.dso":["T2csri.vl2"],"t2csri/clientSideClans.cs":["T2csri.vl2"],"t2csri/clientSideClans.cs.dso":["T2csri.vl2"],"t2csri/crypto.rb":["T2csri.vl2"],"t2csri/glue.cs":["T2csri.vl2"],"t2csri/glue.cs.dso":["T2csri.vl2"],"t2csri/ipv4.cs":["T2csri.vl2"],"t2csri/ipv4.cs.dso":["T2csri.vl2"],"t2csri/rubyUtils.cs":["T2csri.vl2"],"t2csri/rubyUtils.cs.dso":["T2csri.vl2"],"t2csri/serverSide.cs":["T2csri.vl2"],"t2csri/serverSideClans.cs":["T2csri.vl2"],"t2csri/serverSideClans.cs.dso":["T2csri.vl2"],"t2csri/serverglue.cs":["T2csri.vl2"],"t2csri/serverglue.cs.dso":["T2csri.vl2"],"t2csri/serverside.cs.dso":["T2csri.vl2"],"terrains/2ArenaDome.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2ArenaValley.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2DustBowl.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2Flyersarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2IceDome.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2IndoorIntensity.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/4thGradeDropout.spn":["4thGradeDropout.vl2"],"terrains/Abominable.nav":["missions.vl2"],"terrains/Abominable.spn":["missions.vl2"],"terrains/Abominable.ter":["missions.vl2"],"terrains/AcidRain.spn":["Classic_maps_v1.vl2"],"terrains/AcidRain.ter":["Classic_maps_v1.vl2"],"terrains/Aeroena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/AgentsOfFortune.nav":["missions.vl2"],"terrains/AgentsOfFortune.spn":["missions.vl2"],"terrains/AgentsOfFortune.ter":["missions.vl2"],"terrains/Alcatraz.spn":["missions.vl2"],"terrains/Alcatraz.ter":["missions.vl2"],"terrains/Archipelago.spn":["missions.vl2"],"terrains/Archipelago.ter":["missions.vl2"],"terrains/ArenaHeaven.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaHell.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaHell2.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaInTheHill.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaUnderTheHill.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/AryoArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/AshesToAshes.spn":["missions.vl2"],"terrains/AshesToAshes.ter":["missions.vl2"],"terrains/Atropos2.nav":["atroposthereturn.vl2"],"terrains/Atropos2.spn":["atroposthereturn.vl2"],"terrains/Attrition.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Attrition.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/BastardForge.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/BeggarsRun.nav":["missions.vl2"],"terrains/BeggarsRun.spn":["missions.vl2"],"terrains/BeggarsRun.ter":["missions.vl2"],"terrains/BeneathTheHill.spn":["BeneathTheHill.vl2"],"terrains/Blastside_nef.spn":["Classic_maps_v1.vl2"],"terrains/BrainFreeze.nav":["brainfreeze.vl2"],"terrains/BrainFreeze.spn":["brainfreeze.vl2"],"terrains/BridgeTooFar.spn":["DynamixFinalPack.vl2"],"terrains/BridgeTooFar.ter":["DynamixFinalPack.vl2"],"terrains/Broadside_nef.spn":["Classic_maps_v1.vl2"],"terrains/Broadside_nef.ter":["Classic_maps_v1.vl2"],"terrains/Broken_Dreams.nav":["brokendreams_2.vl2"],"terrains/Broken_Dreams.spn":["brokendreams_2.vl2"],"terrains/Bunkered.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/CCD.ter":["TWL2-MapPack.vl2"],"terrains/Caldera.spn":["missions.vl2"],"terrains/Caldera.ter":["missions.vl2"],"terrains/Cardiac.ter":["S8maps.vl2"],"terrains/Casern_Cavite.nav":["missions.vl2"],"terrains/Casern_Cavite.spn":["missions.vl2"],"terrains/Casern_Cavite.ter":["missions.vl2"],"terrains/CeleritySE.ter":["TWL2-MapPack.vl2"],"terrains/Centaur.nav":["centaur.vl2"],"terrains/Centaur.spn":["centaur.vl2"],"terrains/Centaur.ter":["centaur.vl2"],"terrains/Chasmaclysmic.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Chasmaclysmic.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Checkmate.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Cinerarium.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/ColdFusion.spn":["ColdFusion.vl2"],"terrains/ColdWar.spn":["ColdWar.vl2"],"terrains/CompUSA_Melee.spn":["missions.vl2"],"terrains/CompUSA_Melee.ter":["missions.vl2"],"terrains/Conclave.spn":["Conclave.vl2"],"terrains/Confusco.spn":["Classic_maps_v1.vl2"],"terrains/Confusco.ter":["Classic_maps_v1.vl2"],"terrains/ContainmentLarge.spn":["ContainmentLarge.vl2"],"terrains/Coppera.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/CrashClash.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Crater71.spn":["TR2final105-client.vl2"],"terrains/Crater71.ter":["TR2final105-client.vl2"],"terrains/DBS_Smoothed.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DBS_Smoothed.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Agroleon.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Astro.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_BastardForge.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_BitterGorge.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Bunkered.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Cinerarium.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_DermCity.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Embers.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_EmeraldSpit.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_FaceCrossing.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Hoth.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_IceGiant.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_IsleDeBatalla.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_LavaGods.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Magellan.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_MoonDance.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Pantheon.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Pantheon.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Paranoia.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Pariah.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_PipeDream.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_RavineV.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_ScorchedEarth.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_SimpleFlagArena.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_SpinCycle.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_StarFall.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Tyre.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Wasteland.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Badlands.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Badlands.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Desert.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Desert.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Ice.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Ice.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Damnation.spn":["missions.vl2"],"terrains/Damnation.ter":["missions.vl2"],"terrains/DangerousCrossingArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/DangerousCrossing_nef.spn":["Classic_maps_v1.vl2"],"terrains/DangerousCrossing_nef.ter":["Classic_maps_v1.vl2"],"terrains/DeathBirdsFly.spn":["missions.vl2"],"terrains/DeathBirdsFly.ter":["missions.vl2"],"terrains/DeathFromBelow.spn":["DeathFromBelow.vl2"],"terrains/DeathRow.spn":["DeathRow.vl2"],"terrains/DesertWind.spn":["DesertWind.vl2"],"terrains/DesertofDeath_nef.spn":["Classic_maps_v1.vl2"],"terrains/DesertofDeath_nef.ter":["Classic_maps_v1.vl2"],"terrains/Desiccator.spn":["missions.vl2"],"terrains/Desiccator.ter":["missions.vl2"],"terrains/DevilsElbow.spn":["DynamixFinalPack.vl2"],"terrains/DevilsElbow.ter":["DynamixFinalPack.vl2"],"terrains/DraconisVII.spn":["DraconisVII.vl2"],"terrains/DustToDust.nav":["missions.vl2"],"terrains/DustToDust.spn":["missions.vl2"],"terrains/DustToDust.ter":["missions.vl2"],"terrains/EB_Hades.spn":["missions.vl2"],"terrains/EB_Hades.ter":["missions.vl2"],"terrains/Embers.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Envyrena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/EnyLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Equinox.nav":["missions.vl2"],"terrains/Equinox.spn":["missions.vl2"],"terrains/Equinox.ter":["missions.vl2"],"terrains/Escalade.nav":["missions.vl2"],"terrains/Escalade.spn":["missions.vl2"],"terrains/Escalade.ter":["missions.vl2"],"terrains/Euro4_Bleed.ter":["TWL2-MapPack.vl2"],"terrains/Euro4_Dissention.ter":["TWL2-MapPack.vl2"],"terrains/Euro4_FrozenHope.ter":["TWL2-MapPack.vl2"],"terrains/Euro_Drifts_SE.ter":["TWL2-MapPack.vl2"],"terrains/EveningLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Exposure.spn":["Exposure-v1.1.vl2"],"terrains/Extra_Badlands1.ter":["missions.vl2"],"terrains/FinalRevenge.spn":["FinalRevenge.vl2"],"terrains/Firestorm.spn":["missions.vl2"],"terrains/Firestorm.ter":["missions.vl2"],"terrains/FlashPoint.spn":["missions.vl2"],"terrains/Flashpoint.ter":["missions.vl2"],"terrains/Fracas.nav":["missions.vl2"],"terrains/Fracas.spn":["missions.vl2"],"terrains/Fracas.ter":["missions.vl2"],"terrains/FrozenFury.spn":["TR2final105-client.vl2"],"terrains/FrozenFury.ter":["TR2final105-client.vl2"],"terrains/Gauntlet.nav":["missions.vl2"],"terrains/Gauntlet.spn":["missions.vl2"],"terrains/Gauntlet.ter":["missions.vl2"],"terrains/Gehenna.spn":["missions.vl2"],"terrains/Gehenna.ter":["missions.vl2"],"terrains/Geothermal.ter":["S8maps.vl2"],"terrains/Geronimo.spn":["Geronimo.vl2"],"terrains/GodsRift.spn":["TR2final105-client.vl2"],"terrains/GodsRift.ter":["TR2final105-client.vl2"],"terrains/Gorgon.spn":["Classic_maps_v1.vl2"],"terrains/Gorgon.ter":["Classic_maps_v1.vl2"],"terrains/HO_Badlands.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Badlands.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Desert.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Desert.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Ice.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Ice.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Lush.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Lush.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Haven.spn":["TR2final105-client.vl2"],"terrains/Haven.ter":["TR2final105-client.vl2"],"terrains/Helioarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Hildebrand.ter":["TWL2-MapPack.vl2"],"terrains/HillKing.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HillKingLT.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Hillside.spn":["Classic_maps_v1.vl2"],"terrains/Hillside.ter":["Classic_maps_v1.vl2"],"terrains/Hoth.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/IceBound.spn":["missions.vl2"],"terrains/IceBound.ter":["missions.vl2"],"terrains/IceGiant.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/IceRidge_nef.spn":["Classic_maps_v1.vl2"],"terrains/IceRidge_nef.ter":["Classic_maps_v1.vl2"],"terrains/InnerSanctum.nav":["DynamixFinalPack.vl2"],"terrains/InnerSanctum.spn":["DynamixFinalPack.vl2"],"terrains/InnerSanctum.ter":["DynamixFinalPack.vl2"],"terrains/Insalubria.nav":["missions.vl2"],"terrains/Insalubria.spn":["missions.vl2"],"terrains/Insalubria.ter":["missions.vl2"],"terrains/Invictus.nav":["missions.vl2"],"terrains/Invictus.spn":["missions.vl2"],"terrains/Invictus.ter":["missions.vl2"],"terrains/IsleOfMan.spn":["DynamixFinalPack.vl2"],"terrains/IsleOfMan.ter":["DynamixFinalPack.vl2"],"terrains/IveHadWorse.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/JacobsLadder.spn":["missions.vl2"],"terrains/JacobsLadder.ter":["missions.vl2"],"terrains/Katabatic.nav":["missions.vl2"],"terrains/Katabatic.spn":["missions.vl2"],"terrains/Katabatic.ter":["missions.vl2"],"terrains/Khalarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Lakefront.spn":["Classic_maps_v1.vl2"],"terrains/Lakefront.ter":["Classic_maps_v1.vl2"],"terrains/LavaGods.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Magellan.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Magmatic.spn":["Classic_maps_v1.vl2"],"terrains/Magmatic.ter":["Classic_maps_v1.vl2"],"terrains/MapAssets.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Masada.spn":["missions.vl2"],"terrains/Masada.ter":["missions.vl2"],"terrains/Minotaur.nav":["missions.vl2"],"terrains/Minotaur.spn":["missions.vl2"],"terrains/Minotaur.ter":["missions.vl2"],"terrains/MoonDance2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Moonwalk.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Moonwalk.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Morena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/MountainSiege.spn":["MountainSiege.vl2"],"terrains/Mudside.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Mutiny.spn":["Mutiny.vl2"],"terrains/MyrkWood.spn":["missions.vl2"],"terrains/MyrkWood.ter":["missions.vl2"],"terrains/Oasis.spn":["missions.vl2"],"terrains/Oasis.ter":["missions.vl2"],"terrains/Octane.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Ocular.ter":["TWL2-MapPack.vl2"],"terrains/Overreach.spn":["missions.vl2"],"terrains/Overreach.ter":["missions.vl2"],"terrains/Pantheon.spn":["DynamixFinalPack.vl2"],"terrains/Pantheon.ter":["DynamixFinalPack.vl2"],"terrains/Paranoia.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pariah.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pariah2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pariah_Mirrored.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Patience.spn":["Patience.vl2"],"terrains/PhasmaDust.spn":["TR2final105-client.vl2"],"terrains/PhasmaDust.ter":["TR2final105-client.vl2"],"terrains/PlanetX.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/PlanetX2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Planetside.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Prismatic.nav":["Prismatic.vl2"],"terrains/Prismatic.spn":["Prismatic.vl2"],"terrains/ProArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/PuliVeivari.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/PuliVeivari.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pyroclasm.spn":["missions.vl2"],"terrains/Pyroclasm.ter":["missions.vl2"],"terrains/Quagmire.spn":["missions.vl2"],"terrains/Quagmire.ter":["missions.vl2"],"terrains/Raindance_nef.spn":["Classic_maps_v1.vl2"],"terrains/Raindance_nef.ter":["Classic_maps_v1.vl2"],"terrains/Ramparts.spn":["Classic_maps_v1.vl2"],"terrains/Ramparts.ter":["Classic_maps_v1.vl2"],"terrains/RandomTer1.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer10.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer3.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer4.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer5.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer6.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer7.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer8.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer9.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Rasp.spn":["missions.vl2"],"terrains/Rasp.ter":["missions.vl2"],"terrains/Ravine.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Ravine.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RavineV.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Recalescence.spn":["missions.vl2"],"terrains/Recalescence.ter":["missions.vl2"],"terrains/Respite.nav":["missions.vl2"],"terrains/Respite.spn":["missions.vl2"],"terrains/Respite.ter":["missions.vl2"],"terrains/Reversion.spn":["missions.vl2"],"terrains/Reversion.ter":["missions.vl2"],"terrains/Ridgerena.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Ridgerena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Rimehold.spn":["missions.vl2"],"terrains/Rimehold.ter":["missions.vl2"],"terrains/RiverDance.nav":["missions.vl2"],"terrains/RiverDance.spn":["missions.vl2"],"terrains/RiverDance.ter":["missions.vl2"],"terrains/Rollercoaster_nef.spn":["Classic_maps_v1.vl2"],"terrains/Rollercoaster_nef.ter":["Classic_maps_v1.vl2"],"terrains/Rst_ScorchedEarth.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Rush.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Rush.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/S5-Icedance.ter":["S5maps.vl2"],"terrains/S5-Mordacity.ter":["S5maps.vl2"],"terrains/S5-massive.ter":["S5maps.vl2"],"terrains/S5_Centaur.spn":["S5maps.vl2"],"terrains/S5_Centaur.ter":["S5maps.vl2"],"terrains/S5_Damnation.spn":["S5maps.vl2"],"terrains/S5_Drache.spn":["S5maps.vl2"],"terrains/S5_Drache.ter":["S5maps.vl2"],"terrains/S5_HawkingHeat.spn":["S5maps.vl2"],"terrains/S5_Icedance.spn":["S5maps.vl2"],"terrains/S5_Icedance.ter":["S5maps.vl2"],"terrains/S5_Massive.spn":["S5maps.vl2"],"terrains/S5_Mimicry.spn":["S5maps.vl2"],"terrains/S5_Misadventure.spn":["S5maps.vl2"],"terrains/S5_Mordacity.spn":["S5maps.vl2"],"terrains/S5_Mordacity.ter":["S5maps.vl2"],"terrains/S5_PipeDream.spn":["S5maps.vl2"],"terrains/S5_Reynard.spn":["S5maps.vl2"],"terrains/S5_Sherman.spn":["S5maps.vl2"],"terrains/S5_Sherman.ter":["S5maps.vl2"],"terrains/S5_Silenus.spn":["S5maps.vl2"],"terrains/S5_WoodyMyrk.spn":["S5maps.vl2"],"terrains/S5_massive.ter":["S5maps.vl2"],"terrains/S5_rst_hawkingheat.ter":["S5maps.vl2"],"terrains/S5_rst_misadventure.ter":["S5maps.vl2"],"terrains/S5_rst_reynard.ter":["S5maps.vl2"],"terrains/S5_rst_silenus.ter":["S5maps.vl2"],"terrains/S8_Geothermal.spn":["S8maps.vl2"],"terrains/S8_Mountking.spn":["S8maps.vl2"],"terrains/S8_Opus.spn":["S8maps.vl2"],"terrains/S8_Zilch.spn":["S8maps.vl2"],"terrains/S8_rst_dogma.ter":["S8maps.vl2"],"terrains/S8_rst_opus.ter":["S8maps.vl2"],"terrains/S8_zilch.ter":["S8maps.vl2"],"terrains/SC_Badlands.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Badlands.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Desert.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Desert.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Ice.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Ice.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Lush.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Lush.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Night.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Night.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Normal.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Normal.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Sanctuary.nav":["missions.vl2"],"terrains/Sanctuary.spn":["missions.vl2"],"terrains/Sanctuary.ter":["missions.vl2"],"terrains/Sandstorm.spn":["Classic_maps_v1.vl2"],"terrains/Sandstorm.ter":["Classic_maps_v1.vl2"],"terrains/Scarabrae_nef.spn":["Classic_maps_v1.vl2"],"terrains/Scarabrae_nef.ter":["Classic_maps_v1.vl2"],"terrains/ShockRidge.spn":["Classic_maps_v1.vl2"],"terrains/ShockRidge.ter":["Classic_maps_v1.vl2"],"terrains/ShrineArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ShrineArenaII.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/SiegeofYmir.spn":["SiegeofYmir.vl2"],"terrains/SilentStorm.spn":["SilentStorm.vl2"],"terrains/Sirocco.spn":["missions.vl2"],"terrains/Sirocco.ter":["missions.vl2"],"terrains/SkiFree.nav":["SkiFreeGameType.vl2"],"terrains/SkiFree.spn":["SkiFreeGameType.vl2"],"terrains/SkiFreeZ_Championship_2021.spn":["SkiFreeGameType.vl2"],"terrains/SkiFreeZ_Championship_2021.ter":["SkiFreeGameType.vl2"],"terrains/SkinnyDip.spn":["TR2final105-client.vl2"],"terrains/SkinnyDip.ter":["TR2final105-client.vl2"],"terrains/SlapDash.spn":["missions.vl2"],"terrains/Slapdash.ter":["missions.vl2"],"terrains/SmogArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/SnowBound.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Snowblind_nef.spn":["Classic_maps_v1.vl2"],"terrains/Snowblind_nef.ter":["Classic_maps_v1.vl2"],"terrains/SoccerLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Solace.spn":["Solace.vl2"],"terrains/SolsDescent.spn":["TR2final105-client.vl2"],"terrains/SolsDescent.ter":["TR2final105-client.vl2"],"terrains/SpinCycle.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SpyLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/StarFallCTF2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Starfallen.spn":["Classic_maps_v1.vl2"],"terrains/Starfallen.ter":["Classic_maps_v1.vl2"],"terrains/Stonehenge_Arena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Stonehenge_nef.spn":["Classic_maps_v1.vl2"],"terrains/Stonehenge_nef.ter":["Classic_maps_v1.vl2"],"terrains/Stripmine.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SubZero.spn":["Classic_maps_v1.vl2"],"terrains/SubZero.ter":["Classic_maps_v1.vl2"],"terrains/SunDried.nav":["missions.vl2"],"terrains/SunDried.spn":["missions.vl2"],"terrains/SunDried.ter":["missions.vl2"],"terrains/Surreal.spn":["Classic_maps_v1.vl2"],"terrains/Surreal.ter":["Classic_maps_v1.vl2"],"terrains/TL_Drorck.ter":["TWL2-MapPack.vl2"],"terrains/TL_Magnum.ter":["TWL2-MapPack.vl2"],"terrains/TL_MuddySwamp.ter":["TWL2-MapPack.vl2"],"terrains/TL_RoughLand.ter":["TWL2-MapPack.vl2"],"terrains/TL_Skylight.ter":["TWL2-MapPack.vl2"],"terrains/TWL-Abaddon.ter":["TWL-MapPack.vl2"],"terrains/TWL-BaNsHee.ter":["TWL-MapPack.vl2"],"terrains/TWL-BeachBlitz.ter":["TWL-MapPack.vl2"],"terrains/TWL-BeggarsRun.ter":["TWL-MapPack.vl2"],"terrains/TWL-BlueMoon.ter":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"terrains/TWL-Boss.ter":["TWL-MapPack.vl2"],"terrains/TWL-Chokepoint.ter":["TWL-MapPack.vl2"],"terrains/TWL-Cinereous.ter":["TWL-MapPack.vl2"],"terrains/TWL-Clusterfuct.ter":["TWL-MapPack.vl2"],"terrains/TWL-Curtilage.ter":["TWL-MapPack.vl2"],"terrains/TWL-Damnation.ter":["TWL-MapPack.vl2"],"terrains/TWL-DeadlyBirdsSong.ter":["TWL-MapPack.vl2"],"terrains/TWL-Deserted.ter":["TWL-MapPack.vl2"],"terrains/TWL-Desiccator.ter":["TWL-MapPack.vl2"],"terrains/TWL-Drifts.ter":["TWL-MapPack.vl2"],"terrains/TWL-Euro_Feign.ter":["TWL-MapPack.vl2"],"terrains/TWL-Frostclaw.ter":["TWL-MapPack.vl2"],"terrains/TWL-Frozen.ter":["TWL-MapPack.vl2"],"terrains/TWL-Harvester.ter":["TWL-MapPack.vl2"],"terrains/TWL-Horde.ter":["TWL-MapPack.vl2"],"terrains/TWL-Katabatic.ter":["TWL-MapPack.vl2"],"terrains/TWL-Neve.ter":["TWL-MapPack.vl2"],"terrains/TWL-NoShelter.ter":["TWL-MapPack.vl2"],"terrains/TWL-Os_Iris.ter":["TWL-MapPack.vl2"],"terrains/TWL-Pandemonium.ter":["TWL-MapPack.vl2"],"terrains/TWL-Runenmacht.ter":["TWL-MapPack.vl2"],"terrains/TWL-Slapdash.ter":["TWL-MapPack.vl2"],"terrains/TWL-SubZero.ter":["TWL-MapPack.vl2"],"terrains/TWL-WilderZone.ter":["TWL-MapPack.vl2"],"terrains/TWL-WoodyMyrk.ter":["TWL-MapPack.vl2"],"terrains/TWL2_Bleed.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_BlueMoon.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_CanyonCrusadeDeluxe.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Celerity.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_CloakOfNight.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Crevice.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Crevice.ter":["TWL2-MapPack.vl2"],"terrains/TWL2_Dissention.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Drifts.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Drorck.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_FrozenGlory.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_FrozenHope.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Frozenglory.ter":["TWL2-MapPack.vl2"],"terrains/TWL2_Hildebrand.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_IceDagger.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_JaggedClaw.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Magnum.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_MidnightMayhemDeluxe.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_MuddySwamp.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Norty.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Ocular.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_RoughLand.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Ruined.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Ruined.ter":["TWL2-MapPack.vl2"],"terrains/TWL2_Skylight.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_WoodyMyrk.spn":["TWL2-MapPack.vl2"],"terrains/TWL_Abaddon.spn":["TWL-MapPack.vl2"],"terrains/TWL_BaNsHee.spn":["TWL-MapPack.vl2"],"terrains/TWL_BeachBlitz.spn":["TWL-MapPack.vl2"],"terrains/TWL_BeggarsRun.spn":["TWL-MapPack.vl2"],"terrains/TWL_BlueMoon.spn":["TWL-MapPack.vl2"],"terrains/TWL_Boss.spn":["TWL-MapPack.vl2"],"terrains/TWL_Celerity.spn":["TWL-MapPack.vl2"],"terrains/TWL_Chokepoint.spn":["TWL-MapPack.vl2"],"terrains/TWL_Cinereous.spn":["TWL-MapPack.vl2"],"terrains/TWL_Clusterfuct.spn":["TWL-MapPack.vl2"],"terrains/TWL_Crossfire.spn":["TWL-MapPack.vl2"],"terrains/TWL_Crossfire.ter":["TWL-MapPack.vl2"],"terrains/TWL_Curtilage.spn":["TWL-MapPack.vl2"],"terrains/TWL_Damnation.spn":["TWL-MapPack.vl2"],"terrains/TWL_DangerousCrossing.spn":["TWL-MapPack.vl2"],"terrains/TWL_DeadlyBirdsSong.spn":["TWL-MapPack.vl2"],"terrains/TWL_Deserted.spn":["TWL-MapPack.vl2"],"terrains/TWL_Desiccator.spn":["TWL-MapPack.vl2"],"terrains/TWL_Drifts.spn":["TWL-MapPack.vl2"],"terrains/TWL_Feign.spn":["TWL-MapPack.vl2"],"terrains/TWL_Frostclaw.spn":["TWL-MapPack.vl2"],"terrains/TWL_Frozen.spn":["TWL-MapPack.vl2"],"terrains/TWL_Harvester.spn":["TWL-MapPack.vl2"],"terrains/TWL_Horde.spn":["TWL-MapPack.vl2"],"terrains/TWL_Katabatic.spn":["TWL-MapPack.vl2"],"terrains/TWL_Magmatic.spn":["TWL-MapPack.vl2"],"terrains/TWL_Minotaur.spn":["TWL-MapPack.vl2"],"terrains/TWL_Neve.spn":["TWL-MapPack.vl2"],"terrains/TWL_NoShelter.spn":["TWL-MapPack.vl2"],"terrains/TWL_OsIris.spn":["TWL-MapPack.vl2"],"terrains/TWL_Pandemonium.spn":["TWL-MapPack.vl2"],"terrains/TWL_Quagmire.spn":["TWL-MapPack.vl2"],"terrains/TWL_Raindance.spn":["TWL-MapPack.vl2"],"terrains/TWL_Ramparts.spn":["TWL-MapPack.vl2"],"terrains/TWL_Reversion.spn":["TWL-MapPack.vl2"],"terrains/TWL_Rollercoaster.spn":["TWL-MapPack.vl2"],"terrains/TWL_Runenmacht.spn":["TWL-MapPack.vl2"],"terrains/TWL_Sandstorm.spn":["TWL-MapPack.vl2"],"terrains/TWL_Slapdash.spn":["TWL-MapPack.vl2"],"terrains/TWL_Snowblind.spn":["TWL-MapPack.vl2"],"terrains/TWL_Starfallen.spn":["TWL-MapPack.vl2"],"terrains/TWL_Stonehenge.spn":["TWL-MapPack.vl2"],"terrains/TWL_SubZero.spn":["TWL-MapPack.vl2"],"terrains/TWL_Surreal.spn":["TWL-MapPack.vl2"],"terrains/TWL_Titan.spn":["TWL-MapPack.vl2"],"terrains/TWL_WhiteDwarf.spn":["TWL-MapPack.vl2"],"terrains/TWL_WilderZone.spn":["TWL-MapPack.vl2"],"terrains/TWL_WoodyMyrk.spn":["TWL-MapPack.vl2"],"terrains/Talus.nav":["missions.vl2"],"terrains/Talus.spn":["missions.vl2"],"terrains/Talus.ter":["missions.vl2"],"terrains/TempleTussleVersion2.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/TempleTussleVersion2.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Tenebrous.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ThinIce.spn":["missions.vl2"],"terrains/ThinIce.ter":["missions.vl2"],"terrains/Titan.spn":["Classic_maps_v1.vl2"],"terrains/Titan.ter":["Classic_maps_v1.vl2"],"terrains/Tombstone.nav":["missions.vl2"],"terrains/Tombstone.spn":["missions.vl2"],"terrains/Tombstone.ter":["missions.vl2"],"terrains/Training1.nav":["missions.vl2"],"terrains/Training1.ter":["missions.vl2"],"terrains/Training2.nav":["missions.vl2"],"terrains/Training2.ter":["missions.vl2"],"terrains/Training3.nav":["missions.vl2"],"terrains/Training3.ter":["missions.vl2"],"terrains/Training4.nav":["missions.vl2"],"terrains/Training4.ter":["missions.vl2"],"terrains/Training5.nav":["missions.vl2"],"terrains/Training5.ter":["missions.vl2"],"terrains/TreasureIsland.spn":["TR2final105-client.vl2"],"terrains/TreasureIsland.ter":["TR2final105-client.vl2"],"terrains/Trident.spn":["DynamixFinalPack.vl2"],"terrains/Trident.ter":["DynamixFinalPack.vl2"],"terrains/TridentLE.spn":["TridentLE.vl2"],"terrains/TrueGrit.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/TrueGrit.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Tyre.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/UltimaThule.spn":["missions.vl2"],"terrains/UltimaThule.ter":["missions.vl2"],"terrains/Underhill.nav":["missions.vl2"],"terrains/Underhill.spn":["missions.vl2"],"terrains/Underhill.ter":["missions.vl2"],"terrains/UphillBattle.spn":["UphillBattle.vl2"],"terrains/UporDown.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/VanDamnedLT.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/VulcansHammer.spn":["VulcansHammer.vl2"],"terrains/WalledIn.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/WalledIn.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/WalledInII.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Wasteland.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/WhiteDwarf.spn":["Classic_maps_v1.vl2"],"terrains/WhiteDwarf.ter":["Classic_maps_v1.vl2"],"terrains/Whiteout.nav":["missions.vl2"],"terrains/Whiteout.spn":["missions.vl2"],"terrains/Whiteout.ter":["missions.vl2"],"terrains/WonderLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/WoodyMyrkSE.ter":["S5maps.vl2","TWL2-MapPack.vl2"],"terrains/Xtra_AshenPowder.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Bastage.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Birthright.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Crown.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_DesertedSE.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Helion.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_SoupLadle.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_StarFall_T1.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Stripmine.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_ThunderGiant.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_VanDamned.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Voodoo.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Xerxes.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_ziggurat.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Yubarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/cloak.ter":["TWL2-MapPack.vl2"],"terrains/heightfield/CTF.Katabatic_heightfield.cs":["missions.vl2"],"terrains/heightfield/CTF.RiverDance_heightfield.cs":["missions.vl2"],"terrains/heightfield/Centaur_heightfield.cs":["centaur.vl2"],"terrains/heightfield/DeathBirdsFly_heightfield.cs":["missions.vl2"],"terrains/heightfield/Exposure_heightfield.cs":["Exposure-v1.1.vl2"],"terrains/heightfield/Fall_To_Glory_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Badlands_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Desert_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Lush_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Snow2_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Snow_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Burnout_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Casern_Cavite_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Chaopia_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Intaglio_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.MyrkWood_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Rasp_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.SunDried_heightfield.cs":["missions.vl2"],"terrains/heightfield/Lush.cs":["missions.vl2"],"terrains/heightfield/Lush1.cs":["missions.vl2"],"terrains/heightfield/Lush2.cs":["missions.vl2"],"terrains/heightfield/Lush3.cs":["missions.vl2"],"terrains/heightfield/Lush4.cs":["missions.vl2"],"terrains/heightfield/Lush5.cs":["missions.vl2"],"terrains/heightfield/Lush8.cs":["missions.vl2"],"terrains/heightfield/Mark1_heightfield.cs":["missions.vl2"],"terrains/heightfield/MyrkWoodMask.png":["missions.vl2"],"terrains/heightfield/MyrkWoodStream.png":["missions.vl2"],"terrains/heightfield/NewLava1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Overreach_heightfield.cs":["missions.vl2"],"terrains/heightfield/Prismatic_heightfield.cs":["Prismatic.vl2"],"terrains/heightfield/RST_hawking.png":["S5maps.vl2"],"terrains/heightfield/RST_hawkingheat.png":["S5maps.vl2"],"terrains/heightfield/RST_misadventure.png":["S5maps.vl2"],"terrains/heightfield/RST_reynard.png":["S5maps.vl2"],"terrains/heightfield/RST_silenus.png":["S5maps.vl2"],"terrains/heightfield/Reversion_heightfield.cs":["missions.vl2"],"terrains/heightfield/Roads.cs":["missions.vl2"],"terrains/heightfield/Siege.Gauntlet_heightfield.cs":["missions.vl2"],"terrains/heightfield/Siege.IceBound_heightfield.cs":["missions.vl2"],"terrains/heightfield/SinglePlayer.Skiing_heightfield.cs":["missions.vl2"],"terrains/heightfield/Solace_heightfield.cs":["Solace.vl2"],"terrains/heightfield/Sounds.Mission1_heightfield.cs":["missions.vl2"],"terrains/heightfield/SunDriedMask.png":["missions.vl2"],"terrains/heightfield/ThinIce_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands2_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands3_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands4_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Desert1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Desert2_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Desert5_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Lush1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Lush2_heightfield.cs":["missions.vl2"],"terrains/heightfield/desert.cs":["missions.vl2"],"terrains/icedagger.ter":["TWL2-MapPack.vl2"],"terrains/jaggedclaw.ter":["TWL2-MapPack.vl2"],"terrains/mmd.ter":["TWL2-MapPack.vl2"],"terrains/mountking.ter":["S8maps.vl2"],"terrains/norty.ter":["TWL2-MapPack.vl2"],"terrains/rst_Astro.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_FaceCrossing.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_SimpleFlagArena.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_agroleon.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_bittergorge.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_crumpie.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_dermcity.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_isledebatalla.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_spit.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/s8_Cardiac.spn":["S8maps.vl2"],"terrains/texture/Centaur_texture.cs":["centaur.vl2"],"terrains/texture/DeathBirdsFly_texture.cs":["missions.vl2"],"terrains/texture/Mark1_texture.cs":["missions.vl2"],"terrains/texture/NewDesert1_texture.cs":["missions.vl2"],"terrains/texture/NewDesert2_texture.cs":["missions.vl2"],"terrains/texture/NewDesert3_texture.cs":["missions.vl2"],"terrains/texture/NewLava1_texture.cs":["missions.vl2"],"terrains/texture/NewLava2_texture.cs":["missions.vl2"],"terrains/texture/NewLush1_texture.cs":["missions.vl2"],"terrains/texture/NewLush2_texture.cs":["missions.vl2"],"terrains/texture/NewLush3_texture.cs":["missions.vl2"],"terrains/texture/NewSnow1_texture.cs":["missions.vl2"],"terrains/texture/NewSnow2_texture.cs":["missions.vl2"],"terrains/texture/NewSnow3_textures.cs":["missions.vl2"],"terrains/texture/NewSnowyGrass_texture.cs":["missions.vl2"],"terrains/texture/Overreach_texture.cs":["missions.vl2"],"terrains/texture/Reversion_texture.cs":["missions.vl2"],"terrains/texture/Sounds.Mission1_texture.cs":["missions.vl2"],"terrains/texture/ThinIce_texture.cs":["missions.vl2"],"textures/Badlands_l4.dml":["textures.vl2"],"textures/DarkStormy.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Desert_l4.dml":["textures.vl2"],"textures/Details/bb_det2.png":["TWL-MapPack.vl2"],"textures/Euro4_Bleed.dml":["TWL2-MapPack.vl2"],"textures/Euro4_FrozenHope.dml":["TWL2-MapPack.vl2"],"textures/Evil8/e8_base1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_base1b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_base1c.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_btrim01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_btrim05.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_launchpad1.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_mtlwall1b.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_mtlwall3.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_mtlwall4.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_rlight_0000.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_rlightb.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_rlightb_0000.png":["TWL-MapPack.vl2"],"textures/Evil8/e8basictrim2_bl.png":["TWL-MapPack.vl2"],"textures/Evil8/e8beam01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8beam01b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8beam02.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8bgrate01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8bolttrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8bolttrimb.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8clangfloor.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangfloor01.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangfloor03.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangfloor05c.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangwarnmix_.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete01stair1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03b.png":["TWL-MapPack.vl2"],"textures/Evil8/e8crete03c.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03cc.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03d.png":["TWL-MapPack.vl2"],"textures/Evil8/e8crete03fadedw.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8cretefloor02.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8cretefloor_ti.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8cretesmlltrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8lighttrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8lighttrim_b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8metal03c_blue.png":["TWL-MapPack.vl2"],"textures/Evil8/e8mtltrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8mtltrim1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8mtltrim1b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8mtltrim2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8smlltrim1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8spawn01b.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support02.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support02c.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support04b_bl.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support05.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8tinylight_000.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8tmtllight2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8trimlight_000.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8warning2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8warning256.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8warning2step.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8wrntrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8wrntrim2b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/null.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Iris_sky.dml":["TWL-MapPack.vl2"],"textures/L4.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/LiquidTiles/industrial_oil.png":["TWL-MapPack.vl2"],"textures/LiquidTiles/tes_water2.bm8":["TWL-MapPack.vl2"],"textures/LiquidTiles/tes_water2.png":["TWL-MapPack.vl2"],"textures/Lush_l4.dml":["textures.vl2"],"textures/Magellan.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Malig_sky.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Nef5.dml":["TR2final105-client.vl2"],"textures/Nef5/Nef5_BK.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_DN.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_FR.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_LF.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_RT.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_UP.png":["TR2final105-client.vl2"],"textures/NefRed1.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Nef_Sset2.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Nef_TR2_Red.dml":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_1.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_2.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_3.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_4.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_5.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_7.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_Cloud1.png":["TR2final105-client.vl2"],"textures/Nycto-sm.dml":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_BK.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_DN.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_ENV.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_FR.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_LF.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_RT.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_UP.png":["TWL-MapPack.vl2"],"textures/PacificSky.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/PlanetX.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/RedPlanet.dml":["TR2final105-client.vl2"],"textures/RedPlanet_1.png":["TR2final105-client.vl2"],"textures/RedPlanet_2.png":["TR2final105-client.vl2"],"textures/RedPlanet_3.png":["TR2final105-client.vl2"],"textures/RedPlanet_4.png":["TR2final105-client.vl2"],"textures/RedPlanet_5.png":["TR2final105-client.vl2"],"textures/RedPlanet_Cloud1.png":["TR2final105-client.vl2"],"textures/SOM_TR2_Armageddon.dml":["TR2final105-client.vl2"],"textures/SOM_TR2_StonedBlue.dml":["TR2final105-client.vl2"],"textures/SOM_TR2_WinterBlue.dml":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_BK.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_FR.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_LF.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_RT.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_UP.bmp":["TR2final105-client.vl2"],"textures/Sami_D.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/SantaHat_D.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Saturn.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Starfallen.dml":["Classic_maps_v1.vl2"],"textures/StonedBlue/StonedBlue_v5_BK.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_FR.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_LF.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_RT.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_UP.bmp":["TR2final105-client.vl2"],"textures/SunSet12.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Sundown25.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/T2IntroC15.avi":["textures.vl2"],"textures/TL_Magnum.dml":["TWL2-MapPack.vl2"],"textures/TN_entropy.bm8":["T2csri.vl2"],"textures/TN_entropy.png":["T2csri.vl2"],"textures/TN_logo.bm8":["T2csri.vl2"],"textures/TR1_1.png":["TR2final105-client.vl2"],"textures/TR1_2.png":["TR2final105-client.vl2"],"textures/TR1_3.png":["TR2final105-client.vl2"],"textures/TR1_4.png":["TR2final105-client.vl2"],"textures/TR1_5.png":["TR2final105-client.vl2"],"textures/TR1_7.png":["TR2final105-client.vl2"],"textures/TR1_Cloud1.png":["TR2final105-client.vl2"],"textures/TR1_Cloud2.png":["TR2final105-client.vl2"],"textures/TR1_Nef.dml":["TR2final105-client.vl2"],"textures/TR2-1.lmale.png":["TR2final105-client.vl2"],"textures/TR2-2.lmale.png":["TR2final105-client.vl2"],"textures/Taco_D.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/armageddon/Armageddon_v5_BK.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_FR.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_LF.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_RT.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_RTR.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_UP.bmp":["TR2final105-client.vl2"],"textures/aurawisp.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlandday.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/bd_1wal03c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eCol01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eCol01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eCol02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo1a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo1b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo2a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo2b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo3a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo3b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo3d.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo4a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo4b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_edoo01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_edoo02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eflo01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig03a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_espe01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_espe02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_espe03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain1a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain2a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain3a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain3b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain4a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain5a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal03c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal06a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal07.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal08.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal09.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal10.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal11.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal13.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal13A.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal14.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal15.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal16.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iCol01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iCol02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor10.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor6.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor7.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor8.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor9.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iceilig01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iceilig02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iceilig03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ichute01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ichute02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icoligolA.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icomp01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_idoo03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iflo01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iflo02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iflo03b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ifunctec01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ifunctec02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ilig01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ilig01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_inf_ichute03.png":["Classic_maps_v1.vl2"],"textures/badlands/bd_ispe01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe06.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe07.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe07a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itebor01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec06a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01e.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal01b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal01e.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal03c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal16.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_screen.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_thresh01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_thresh02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_thresh02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/be_ebor03.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_eflo02.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_elig03.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_ewal06.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_ewal07.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_icei01a.png":["Classic_maps_v1.vl2"],"textures/badlands/cp_ibor03.png":["Classic_maps_v1.vl2"],"textures/badlands/ds_efloor1.png":["Classic_maps_v1.vl2"],"textures/badlands/ds_ilig03.png":["Classic_maps_v1.vl2"],"textures/badlands/inf_butch_grey1.png":["Classic_maps_v1.vl2"],"textures/badlands/inf_butch_grey5.png":["Classic_maps_v1.vl2"],"textures/badlands/iwal20.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/iwal21.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/iwal22.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/skies/badlandday_BK.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_BK.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_DN.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_DN.png":["badlands.vl2"],"textures/badlands/skies/badlandday_FR.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_FR.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_LF.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_LF.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_RT.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_RT.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_UP.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_UP.png":["","badlands.vl2"],"textures/badlands/skies/bd_day_cloud1.bm8":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud1.png":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud2.bm8":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud2.png":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud_emap.bm8":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud_emap.png":["badlands.vl2"],"textures/badlands/skies/bd_nite_starry_emap.bm8":["badlands.vl2"],"textures/badlands/skies/bd_nite_starry_emap.png":["badlands.vl2"],"textures/badlands/skies/skyrender_sky-credit.txt":[""],"textures/badlands/skies/starrynite_v2_BK.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_BK.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_DN.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_DN.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_FR.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_FR.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_LF.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_LF.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_RT.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_RT.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_UP.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_UP.png":["badlands.vl2"],"textures/base.lmale.png":["TR2final105-client.vl2"],"textures/blackdust.dml":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_DN.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_bk.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_cloud1.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_cloud2.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_fr.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_lf.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_rt.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_up.png":["TWL2-MapPack.vl2"],"textures/borealis.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/canyon_crusade.dml":["TWL2-MapPack.vl2"],"textures/ccbsky2.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/clouds.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/commander/Cursors/com_cursor_arrow_icon.png":["textures.vl2"],"textures/commander/Cursors/com_handclose_icon.png":["textures.vl2"],"textures/commander/Cursors/com_handopen_icon.png":["textures.vl2"],"textures/commander/Cursors/com_maglass_icon.png":["textures.vl2"],"textures/commander/Cursors/com_pointer_icon.png":["textures.vl2"],"textures/commander/Cursors/com_pointer_pos_icon.png":["textures.vl2"],"textures/commander/Gui/cmd_columnheadbar.png":["textures.vl2"],"textures/commander/Gui/cmd_control_checkbox.png":["textures.vl2"],"textures/commander/Gui/cmd_gradient.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_camera.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_center.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_misc.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_misc_D.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_moveselect.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_objectives.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_players.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_sensor.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_tactical.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_tactical_D.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_text.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_waypoints.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_zoom.png":["textures.vl2"],"textures/commander/Gui/cmd_offscreen_arrow.png":["textures.vl2"],"textures/commander/Gui/cmd_tv_frame.png":["textures.vl2"],"textures/commander/Gui/cmd_tv_static.png":["textures.vl2"],"textures/commander/Icons/assigned_task_anim.dml":["textures.vl2"],"textures/commander/Icons/base_select.dml":["textures.vl2"],"textures/commander/Icons/com_icon_bioderm.png":["textures.vl2"],"textures/commander/Icons/com_icon_bioderm_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_bloodeagle.png":["textures.vl2"],"textures/commander/Icons/com_icon_bloodeagle_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_bomber.png":["textures.vl2"],"textures/commander/Icons/com_icon_bomber_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_camera.png":["textures.vl2"],"textures/commander/Icons/com_icon_camera_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_diamsword.png":["textures.vl2"],"textures/commander/Icons/com_icon_diamsword_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_flag_outside.png":["textures.vl2"],"textures/commander/Icons/com_icon_flag_outside_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_generator.png":["textures.vl2"],"textures/commander/Icons/com_icon_generator_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_genericswitch.png":["textures.vl2"],"textures/commander/Icons/com_icon_genericswitch_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_hapc.png":["textures.vl2"],"textures/commander/Icons/com_icon_hapc_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_harbinger.png":["textures.vl2"],"textures/commander/Icons/com_icon_harbinger_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_inferno.png":["textures.vl2"],"textures/commander/Icons/com_icon_inferno_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_inventory.png":["textures.vl2"],"textures/commander/Icons/com_icon_inventory_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_landscout.png":["textures.vl2"],"textures/commander/Icons/com_icon_landscout_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_mpb.png":["textures.vl2"],"textures/commander/Icons/com_icon_mpb_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_nexus.png":["textures.vl2"],"textures/commander/Icons/com_icon_nexus_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_scout.png":["textures.vl2"],"textures/commander/Icons/com_icon_scout_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_sensor.png":["textures.vl2"],"textures/commander/Icons/com_icon_sensor_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_solar_gen.png":["textures.vl2"],"textures/commander/Icons/com_icon_solar_gen_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_starwolf.png":["textures.vl2"],"textures/commander/Icons/com_icon_starwolf_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_storm.png":["textures.vl2"],"textures/commander/Icons/com_icon_storm_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_tank.png":["textures.vl2"],"textures/commander/Icons/com_icon_tank_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_turret.png":["textures.vl2"],"textures/commander/Icons/com_icon_turret_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_turretbase.png":["textures.vl2"],"textures/commander/Icons/com_icon_turretbase_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_vehicle_inventory.png":["textures.vl2"],"textures/commander/Icons/com_icon_vehicle_inventory_glow.png":["textures.vl2"],"textures/commander/Icons/com_player_grey_24x.png":["textures.vl2"],"textures/commander/Icons/com_player_grey_24x_glow.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_1.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_2.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_3.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_4.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_5.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_6.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_7.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_1.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_2.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_3.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_4.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_5.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_6.png":["textures.vl2"],"textures/commander/Icons/diamond_not_selected.png":["textures.vl2"],"textures/commander/Icons/player_glow.dml":["textures.vl2"],"textures/commander/Icons/selectobject_1.png":["textures.vl2"],"textures/commander/Icons/selectobject_2.png":["textures.vl2"],"textures/commander/Icons/selectobject_3.png":["textures.vl2"],"textures/commander/Icons/selectobject_4.png":["textures.vl2"],"textures/commander/Icons/selectobject_5.png":["textures.vl2"],"textures/commander/Icons/selectobject_6.png":["textures.vl2"],"textures/commander/Icons/selectobject_7.png":["textures.vl2"],"textures/commander/Icons/waypoint_anim.dml":["textures.vl2"],"textures/commander/MiniIcons/TR2com_flag_grey.png":["TR2final105-client.vl2"],"textures/commander/MiniIcons/com_bomber_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_camera_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_deploymotionsensor.png":["textures.vl2"],"textures/commander/MiniIcons/com_deploypulsesensor.png":["textures.vl2"],"textures/commander/MiniIcons/com_flag_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_generator.png":["textures.vl2"],"textures/commander/MiniIcons/com_hapc_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_inventory_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_landscout_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_mpb_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_player_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_scout_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_sensor_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_solargen_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_switch_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_tank_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_turret_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_turretbase_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_vehicle_pad_inventory.png":["textures.vl2"],"textures/commander/MiniIcons/com_waypoint_grey.png":["textures.vl2"],"textures/cubemap.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dark_green.dml":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_BK.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_DN.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_FR.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_LF.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_RT.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_UP.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_cloud1.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_cloud2.png":["TWL2-MapPack.vl2"],"textures/desert/cp_ecombo1a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ecombo1b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_eport01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_eport01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec02BASE.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec02CAP.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec03.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_etec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_etec02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01e.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor03.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ichute01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ichute02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icoldeco01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icoldeco01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icoligolA.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01e.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_idoo01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig05a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig05b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec01CAP.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec02CAP.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istair01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01e.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01h.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec03a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec03b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itecwal01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itecwal01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itecwal01b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwalbase02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwalbase02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_sand.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_screen.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_scrnbrdr01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_scrnbrdr01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_thresh01OFF.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_thresh01ON.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/iwal2020.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/desert/iwal2021.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/desert/iwal2022.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/desert/skies/d_N_b.bm8":["desert.vl2"],"textures/desert/skies/d_N_b.png":["desert.vl2"],"textures/desert/skies/d_N_d.bm8":["desert.vl2"],"textures/desert/skies/d_N_d.png":["desert.vl2"],"textures/desert/skies/d_N_f.bm8":["desert.vl2"],"textures/desert/skies/d_N_f.png":["desert.vl2"],"textures/desert/skies/d_N_l.bm8":["desert.vl2"],"textures/desert/skies/d_N_l.png":["desert.vl2"],"textures/desert/skies/d_N_r.bm8":["desert.vl2"],"textures/desert/skies/d_N_r.png":["desert.vl2"],"textures/desert/skies/d_N_t.bm8":["desert.vl2"],"textures/desert/skies/d_N_t.png":["desert.vl2"],"textures/desert/skies/d_n_move1.bm8":["desert.vl2"],"textures/desert/skies/d_n_move1.png":["desert.vl2"],"textures/desert/skies/d_n_move2.bm8":["desert.vl2"],"textures/desert/skies/d_n_move2.png":["desert.vl2"],"textures/desert/skies/d_n_move3.bm8":["desert.vl2"],"textures/desert/skies/d_n_move3.png":["desert.vl2"],"textures/desert/skies/db2.bm8":["desert.vl2"],"textures/desert/skies/db2.png":["desert.vl2"],"textures/desert/skies/dd2.bm8":["desert.vl2"],"textures/desert/skies/dd2.png":["desert.vl2"],"textures/desert/skies/desert_blue_emap.bm8":["desert.vl2"],"textures/desert/skies/desert_blue_emap.png":["desert.vl2"],"textures/desert/skies/desert_brown_emap.bm8":["desert.vl2"],"textures/desert/skies/desert_brown_emap.png":["desert.vl2"],"textures/desert/skies/desert_starrynite_emap.bm8":["desert.vl2"],"textures/desert/skies/desert_starrynite_emap.png":["desert.vl2"],"textures/desert/skies/desertmove1.bm8":["desert.vl2"],"textures/desert/skies/desertmove1.png":["desert.vl2"],"textures/desert/skies/desertmove2.bm8":["desert.vl2"],"textures/desert/skies/desertmove2.png":["desert.vl2"],"textures/desert/skies/desertmove3.bm8":["desert.vl2"],"textures/desert/skies/desertmove3.png":["desert.vl2"],"textures/desert/skies/desertmove4.bm8":["desert.vl2"],"textures/desert/skies/desertmove4.png":["desert.vl2"],"textures/desert/skies/df2.bm8":["desert.vl2"],"textures/desert/skies/df2.png":["desert.vl2"],"textures/desert/skies/dl2.bm8":["desert.vl2"],"textures/desert/skies/dl2.png":["desert.vl2"],"textures/desert/skies/dr2.bm8":["desert.vl2"],"textures/desert/skies/dr2.png":["desert.vl2"],"textures/desert/skies/dt2.bm8":["desert.vl2"],"textures/desert/skies/dt2.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_BK.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_BK.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_DN.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_DN.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_FR.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_FR.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_LF.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_LF.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_RT.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_RT.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_UP.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_UP.png":["desert.vl2"],"textures/details/BadDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/BadDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/DesertDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/DesertDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LavaDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LavaDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LushDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LushDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/PlanetX_CB1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/details/SnowDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/SnowDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dox_textures/4circle_lite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/antigrav.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/bluetrim1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/bluetrim2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/bluetrim3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/carinternalwall.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/carrierwall4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/doorlogo2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_etechbor01.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_etechbrdr2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_ewall06.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_ewall07.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_genfloor.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_genwall.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_ilig04.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_iwal01.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/grate1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/grate2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/hangar_indoor1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/hangar_indoor3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/light_cold3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/light_small2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/redstripe2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_smalllite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite5.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/roofbeam.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rway_middle.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/sboxlogotop.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/slabgrill.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/stripe2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/striplite2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/striplite3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/wall_2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/wall_3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/white_striplite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dust00.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust05.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust06.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust07.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust08.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust09.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust10.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/eedessert.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/emap.bmp":["textures.vl2"],"textures/emap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/eve1.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve2.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve3.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve4.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve5.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve6.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve7.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve8.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/evil/ancient3.png":["TWL2-MapPack.vl2"],"textures/evil/base1c.png":["TWL2-MapPack.vl2"],"textures/evil/beam01.png":["TWL2-MapPack.vl2"],"textures/evil/bolttrim.png":["TWL2-MapPack.vl2"],"textures/evil/cementwall6.png":["TWL2-MapPack.vl2"],"textures/evil/cementwall8.png":["TWL2-MapPack.vl2"],"textures/evil/cretepillarc.png":["TWL2-MapPack.vl2"],"textures/evil/crudewarn.png":["TWL2-MapPack.vl2"],"textures/evil/drkmtldpanelc.png":["TWL2-MapPack.vl2"],"textures/evil/e6cfloordented.png":["TWL2-MapPack.vl2"],"textures/evil/e6girdergrate.png":["TWL2-MapPack.vl2"],"textures/evil/e6grate2flr.png":["TWL2-MapPack.vl2"],"textures/evil/e6horzlight.png":["TWL2-MapPack.vl2"],"textures/evil/e6smlgrtflr2bl.png":["TWL2-MapPack.vl2"],"textures/evil/e6strimlight.png":["TWL2-MapPack.vl2"],"textures/evil/housewall.png":["TWL2-MapPack.vl2"],"textures/evil/mtlsupgrt2light.png":["TWL2-MapPack.vl2"],"textures/evil/tfloor.png":["TWL2-MapPack.vl2"],"textures/evil/tlroddtilecln.png":["TWL2-MapPack.vl2"],"textures/evil/tmtllight.png":["TWL2-MapPack.vl2"],"textures/evil/trimodd.png":["TWL2-MapPack.vl2"],"textures/evil/warning2.png":["TWL2-MapPack.vl2"],"textures/flag_skinmap.png":["TR2final105-client.vl2"],"textures/flarebase.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/flaremod.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/fling1/Nycto-comp3.png":["S8maps.vl2"],"textures/fling1/Nycto-computer.png":["S8maps.vl2"],"textures/fling1/bd_ispe07.PNG":["S8maps.vl2"],"textures/fling1/be_edoo02.PNG":["S8maps.vl2"],"textures/fling1/be_icei01a.png":["S8maps.vl2"],"textures/fling1/crudewarn.png":["S8maps.vl2"],"textures/fling1/dox_bluelite1.png":["S8maps.vl2"],"textures/fling1/ds_NefBlue.png":["S8maps.vl2"],"textures/fling1/ds_NefBlue1.png":["S8maps.vl2"],"textures/fling1/ds_Neffloor1.png":["S8maps.vl2"],"textures/fling1/ds_ilig02.png":["S8maps.vl2"],"textures/fling1/ds_ilig04.png":["S8maps.vl2"],"textures/fling1/ds_jet03.png":["S8maps.vl2"],"textures/fling1/e6strimlight.png":["S8maps.vl2"],"textures/fling1/e8clangfloor.png":["S8maps.vl2"],"textures/fling1/e8tinylight_000.png":["S8maps.vl2"],"textures/fling1/null.png":["S8maps.vl2"],"textures/flingsky/emap_muddy.png":["S8maps.vl2"],"textures/flingsky/flingsky03_BK.png":["S8maps.vl2"],"textures/flingsky/flingsky03_DN.png":["S8maps.vl2"],"textures/flingsky/flingsky03_FR.png":["S8maps.vl2"],"textures/flingsky/flingsky03_LF.png":["S8maps.vl2"],"textures/flingsky/flingsky03_RT.png":["S8maps.vl2"],"textures/flingsky/flingsky03_UP.png":["S8maps.vl2"],"textures/flingsky03.dml":["S8maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/fluid_lava.dml":["textures.vl2"],"textures/fluid_water.dml":["textures.vl2"],"textures/gui/BloodEagle.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/CRED_1.png":["textures.vl2"],"textures/gui/CRED_10.png":["textures.vl2"],"textures/gui/CRED_11.png":["textures.vl2"],"textures/gui/CRED_12.png":["textures.vl2"],"textures/gui/CRED_13.png":["textures.vl2"],"textures/gui/CRED_14.png":["textures.vl2"],"textures/gui/CRED_15.png":["textures.vl2"],"textures/gui/CRED_16.png":["textures.vl2"],"textures/gui/CRED_17.png":["textures.vl2"],"textures/gui/CRED_18.png":["textures.vl2"],"textures/gui/CRED_19.png":["textures.vl2"],"textures/gui/CRED_2.png":["textures.vl2"],"textures/gui/CRED_20.png":["textures.vl2"],"textures/gui/CRED_21.png":["textures.vl2"],"textures/gui/CRED_22.png":["textures.vl2"],"textures/gui/CRED_23.png":["textures.vl2"],"textures/gui/CRED_24.png":["textures.vl2"],"textures/gui/CRED_25.png":["textures.vl2"],"textures/gui/CRED_26.png":["textures.vl2"],"textures/gui/CRED_27.png":["textures.vl2"],"textures/gui/CRED_28.png":["textures.vl2"],"textures/gui/CRED_29.png":["textures.vl2"],"textures/gui/CRED_3.png":["textures.vl2"],"textures/gui/CRED_30.png":["textures.vl2"],"textures/gui/CRED_31.png":["textures.vl2"],"textures/gui/CRED_32.png":["textures.vl2"],"textures/gui/CRED_33.png":["textures.vl2"],"textures/gui/CRED_34.png":["textures.vl2"],"textures/gui/CRED_35.png":["textures.vl2"],"textures/gui/CRED_36.png":["textures.vl2"],"textures/gui/CRED_37.png":["textures.vl2"],"textures/gui/CRED_38.png":["textures.vl2"],"textures/gui/CRED_39.png":["textures.vl2"],"textures/gui/CRED_4.png":["textures.vl2"],"textures/gui/CRED_40.png":["textures.vl2"],"textures/gui/CRED_41.png":["textures.vl2"],"textures/gui/CRED_42.png":["textures.vl2"],"textures/gui/CRED_43.png":["textures.vl2"],"textures/gui/CRED_44.png":["textures.vl2"],"textures/gui/CRED_45.png":["textures.vl2"],"textures/gui/CRED_46.png":["textures.vl2"],"textures/gui/CRED_5.png":["textures.vl2"],"textures/gui/CRED_6.png":["textures.vl2"],"textures/gui/CRED_7.png":["textures.vl2"],"textures/gui/CRED_8.png":["textures.vl2"],"textures/gui/CRED_9.png":["textures.vl2"],"textures/gui/CUR_3darrow.png":["textures.vl2"],"textures/gui/CUR_3darrowhelp.png":["textures.vl2"],"textures/gui/CUR_3darrowno.PNG":["textures.vl2"],"textures/gui/CUR_3darrowwait.png":["textures.vl2"],"textures/gui/CUR_3ddiagleft.png":["textures.vl2"],"textures/gui/CUR_3ddiagright.png":["textures.vl2"],"textures/gui/CUR_3dleftright.png":["textures.vl2"],"textures/gui/CUR_3dmove.png":["textures.vl2"],"textures/gui/CUR_3dresizeright.png":["textures.vl2"],"textures/gui/CUR_3dupdown.PNG":["textures.vl2"],"textures/gui/CUR_Grab.png":["textures.vl2"],"textures/gui/CUR_Hand.png":["textures.vl2"],"textures/gui/CUR_Rotate.png":["textures.vl2"],"textures/gui/Editor_DefaultHandle.png":["textures.vl2"],"textures/gui/Editor_LockedHandle.png":["textures.vl2"],"textures/gui/Editor_SelectHandle.png":["textures.vl2"],"textures/gui/GGSplash.jpg":["textures.vl2"],"textures/gui/HUD_watermark1.png":["textures.vl2"],"textures/gui/HUD_watermark2.png":["textures.vl2"],"textures/gui/Hud_chat_button_off.png":["textures.vl2"],"textures/gui/Hud_chat_button_on.png":["textures.vl2"],"textures/gui/InfoBar.png":["textures.vl2"],"textures/gui/KILLME.PNG":["textures.vl2"],"textures/gui/LOAD_Atropos2.png":["atroposthereturn.vl2"],"textures/gui/LOAD_Centaur.png":["centaur.vl2"],"textures/gui/LOAD_ColdFusion.png":["ColdFusion.vl2"],"textures/gui/LOAD_DeathRow.png":["DeathRow.vl2"],"textures/gui/LOAD_Exposure.png":["Exposure-v1.1.vl2"],"textures/gui/LOAD_Prismatic.png":["Prismatic.vl2"],"textures/gui/Load_2ArenaDome.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2ArenaValley.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2DustBowl.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2Flyersarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2IceDome.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2IndoorIntensity.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Abominable.png":["textures.vl2"],"textures/gui/Load_AcidRain.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Aeroena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_AgentsOfFortune.png":["textures.vl2"],"textures/gui/Load_Alcatraz.png":["textures.vl2"],"textures/gui/Load_Archipelago.png":["textures.vl2"],"textures/gui/Load_ArenaHeaven.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaHell.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaHell2.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaInTheHill.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaUnderTheHill.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_AryoArena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_AshesToAshes.png":["textures.vl2"],"textures/gui/Load_BeggarsRun.png":["textures.vl2"],"textures/gui/Load_Blastside_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_BridgeTooFar.png":["DynamixFinalPack.vl2"],"textures/gui/Load_Broadside_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Caldera.png":["textures.vl2"],"textures/gui/Load_Casern_Cavite.png":["textures.vl2"],"textures/gui/Load_ColdWar.png":["ColdWar.vl2"],"textures/gui/Load_CompUSA-Melee.png":["textures.vl2"],"textures/gui/Load_CompUSA_Melee.png":["textures.vl2"],"textures/gui/Load_Confusco.png":["Classic_maps_v1.vl2"],"textures/gui/Load_ContainmentLarge.png":["ContainmentLarge.vl2"],"textures/gui/Load_CrashClash.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_DMP_Agroleon.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Astro.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_BastardForge.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_BitterGorge.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Bunkered.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Cinerarium.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_DermCity.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Embers.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_EmeraldSpit.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_FaceCrossing.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Hoth.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_IceGiant.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_IsleDeBatalla.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_LavaGods.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Magellan.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_MoonDance.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Pantheon.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Paranoia.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Pariah.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_PipeDream.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_RavineV.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_ScorchedEarth.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_SimpleFlagArena.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_SpinCycle.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_StarFall.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Tyre.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Wasteland.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_Damnation.png":["textures.vl2"],"textures/gui/Load_DangerousCrossingArena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_DangerousCrossing_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_DeathBirdsFly.png":["textures.vl2"],"textures/gui/Load_DeathFromBelow.png":["DeathFromBelow.vl2"],"textures/gui/Load_DesertOfDeath_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Desiccator.png":["textures.vl2"],"textures/gui/Load_DevilsElbow.png":["DynamixFinalPack.vl2"],"textures/gui/Load_DustToDust.png":["textures.vl2"],"textures/gui/Load_EB-Hades.png":["textures.vl2"],"textures/gui/Load_EB_Hades.png":["textures.vl2"],"textures/gui/Load_Envyrena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_EnyLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Equinox.png":["textures.vl2"],"textures/gui/Load_Escalade.png":["textures.vl2"],"textures/gui/Load_EveningLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Fall_To_Glory.png":["textures.vl2"],"textures/gui/Load_FinalRevenge.png":["FinalRevenge.vl2"],"textures/gui/Load_Flashpoint.png":["textures.vl2"],"textures/gui/Load_Gauntlet.png":["textures.vl2"],"textures/gui/Load_Gehenna.png":["textures.vl2"],"textures/gui/Load_Gorgon.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Helioarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Hillside.png":["Classic_maps_v1.vl2"],"textures/gui/Load_IceRidge_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Icebound.png":["textures.vl2"],"textures/gui/Load_InnerSanctum.png":["DynamixFinalPack.vl2"],"textures/gui/Load_Insalubria.png":["textures.vl2"],"textures/gui/Load_Invictus.png":["textures.vl2"],"textures/gui/Load_IsleOfMan.png":["DynamixFinalPack.vl2"],"textures/gui/Load_IveHadWorse.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_JacobsLadder.png":["textures.vl2"],"textures/gui/Load_Khalarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Lakefront.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Magmatic.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Masada.png":["textures.vl2"],"textures/gui/Load_Minotaur.png":["textures.vl2"],"textures/gui/Load_Morena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Mudside.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Mutiny.png":["Mutiny.vl2"],"textures/gui/Load_MyrkWood.png":["textures.vl2"],"textures/gui/Load_Oasis.png":["textures.vl2"],"textures/gui/Load_Overreach.png":["textures.vl2"],"textures/gui/Load_Pantheon.png":["DynamixFinalPack.vl2"],"textures/gui/Load_Planetside.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Pyroclasm.png":["textures.vl2"],"textures/gui/Load_Quagmire.png":["textures.vl2"],"textures/gui/Load_Raindance_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Ramparts.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Rasp.png":["textures.vl2"],"textures/gui/Load_Recalescence.png":["textures.vl2"],"textures/gui/Load_Respite.png":["textures.vl2"],"textures/gui/Load_Reversion.png":["textures.vl2"],"textures/gui/Load_Ridgerena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Rimehold.png":["textures.vl2"],"textures/gui/Load_Rollercoaster_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_S5_Centaur.png":["S5maps.vl2"],"textures/gui/Load_S5_Damnation.png":["S5maps.vl2"],"textures/gui/Load_S5_Drache.png":["S5maps.vl2"],"textures/gui/Load_S5_HawkingHeat.png":["S5maps.vl2"],"textures/gui/Load_S5_Icedance.png":["S5maps.vl2"],"textures/gui/Load_S5_Massive.png":["S5maps.vl2"],"textures/gui/Load_S5_Mimicry.png":["S5maps.vl2"],"textures/gui/Load_S5_Misadventure.png":["S5maps.vl2"],"textures/gui/Load_S5_Mordacity.png":["S5maps.vl2"],"textures/gui/Load_S5_Reynard.png":["S5maps.vl2"],"textures/gui/Load_S5_Sherman.png":["S5maps.vl2"],"textures/gui/Load_S5_Silenus.png":["S5maps.vl2"],"textures/gui/Load_S5_Woodymyrk.png":["S5maps.vl2"],"textures/gui/Load_Sanctuary.png":["textures.vl2"],"textures/gui/Load_Sandstorm.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Scarabrae_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_ShockRidge.png":["Classic_maps_v1.vl2"],"textures/gui/Load_ShrineArena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ShrineArenaII.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_SilentStorm.png":["SilentStorm.vl2"],"textures/gui/Load_Sirocco.png":["textures.vl2"],"textures/gui/Load_Slapdash.png":["textures.vl2"],"textures/gui/Load_Snowblind_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_SoccerLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_SpyLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Starfallen.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Stonehenge_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Subzero.png":["Classic_maps_v1.vl2"],"textures/gui/Load_SunDried.png":["textures.vl2"],"textures/gui/Load_Surreal.png":["Classic_maps_v1.vl2"],"textures/gui/Load_TWL2_Bleed.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_BlueMoon.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_CanyonCrusadeDeluxe.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Celerity.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_CloakOfNight.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Crevice.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Dissention.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Drifts.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Drorck.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_FrozenGlory.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_FrozenHope.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Hildebrand.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_IceDagger.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_JaggedClaw.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Magnum.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_MidnightMayhemDeluxe.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_MuddySwamp.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Norty.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Ocular.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_RoughLand.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Ruined.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Skylight.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_WoodyMyrk.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL_Abaddon.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BaNsHee.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BeachBlitz.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BeggarsRun.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BlueMoon.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Boss.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Celerity.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Chokepoint.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Cinereous.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Clusterfuct.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Crossfire.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Curtilage.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Damnation.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_DangerousCrossing.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_DeadlyBirdsSong.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Deserted.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Desiccator.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Drifts.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Feign.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Frostclaw.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Frozen.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Harvester.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Horde.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Katabatic.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Magmatic.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Minotaur.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Neve.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_NoShelter.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_OsIris.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Pandemonium.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Quagmire.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Raindance.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Ramparts.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Reversion.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Rollercoaster.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Runenmacht.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Sandstorm.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Slapdash.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Snowblind.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Starfallen.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Stonehenge.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_SubZero.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Surreal.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Titan.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_WhiteDwarf.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_WilderZone.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_WoodyMyrk.png":["TWL-MapPack.vl2"],"textures/gui/Load_Talus.png":["textures.vl2"],"textures/gui/Load_TempleTussleVersion2.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ThinIce.png":["textures.vl2"],"textures/gui/Load_Titan.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Tombstone.png":["textures.vl2"],"textures/gui/Load_Training1.png":["textures.vl2"],"textures/gui/Load_Training2.png":["textures.vl2"],"textures/gui/Load_Training3.png":["textures.vl2"],"textures/gui/Load_Training4.png":["textures.vl2"],"textures/gui/Load_Training5.png":["textures.vl2"],"textures/gui/Load_Trident.png":["DynamixFinalPack.vl2"],"textures/gui/Load_TridentLE.png":["TridentLE.vl2"],"textures/gui/Load_TrueGrit.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_UltimaThule.png":["textures.vl2"],"textures/gui/Load_Underhill.png":["textures.vl2"],"textures/gui/Load_UphillBattle.png":["UphillBattle.vl2"],"textures/gui/Load_UporDown.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WalledIn.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WalledInII.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WhiteDwarf.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Whiteout.png":["textures.vl2"],"textures/gui/Load_WonderLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WoodyMyrk.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Yubarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Loading.png":["textures.vl2"],"textures/gui/RET_blaster.png":["textures.vl2"],"textures/gui/RET_chaingun.png":["textures.vl2"],"textures/gui/RET_disc.png":["textures.vl2"],"textures/gui/RET_elf.png":["textures.vl2"],"textures/gui/RET_grenade.png":["textures.vl2"],"textures/gui/RET_missile.png":["textures.vl2"],"textures/gui/RET_missile_horizflash_red.png":["textures.vl2"],"textures/gui/RET_missile_marker.png":["textures.vl2"],"textures/gui/RET_missile_marker_red.png":["textures.vl2"],"textures/gui/RET_missile_vertflash_red.png":["textures.vl2"],"textures/gui/RET_mortor.png":["textures.vl2"],"textures/gui/RET_plasma.png":["textures.vl2"],"textures/gui/ShellTBButtonHilight.png":["textures.vl2"],"textures/gui/ShellTBButtonNormal.png":["textures.vl2"],"textures/gui/ShellTBButtonPressed.png":["textures.vl2"],"textures/gui/TR2hud_playertriangle.png":["TR2final105-client.vl2"],"textures/gui/TR2hud_playertriangle_enemy.png":["TR2final105-client.vl2"],"textures/gui/beacon_base.png":["textures.vl2"],"textures/gui/bg_Bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Bloodeagle.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Diamondsword.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Hammers.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Harbingers.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Starwolf.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/crosshairs.png":["textures.vl2"],"textures/gui/darkScroll.png":["textures.vl2"],"textures/gui/darkWindow.png":["textures.vl2"],"textures/gui/dlg_box.png":["textures.vl2"],"textures/gui/dlg_button.png":["textures.vl2"],"textures/gui/dlg_fieldfill.png":["textures.vl2"],"textures/gui/dlg_fieldgrade.png":["textures.vl2"],"textures/gui/dlg_frame_edge.png":["textures.vl2"],"textures/gui/dlg_frame_end.png":["textures.vl2"],"textures/gui/dlg_titletab.png":["textures.vl2"],"textures/gui/email_notread.png":["textures.vl2"],"textures/gui/email_read.png":["textures.vl2"],"textures/gui/hud_ChatPageDown.png":["textures.vl2"],"textures/gui/hud_alliedtriangle.png":["textures.vl2"],"textures/gui/hud_ammopack.png":["textures.vl2"],"textures/gui/hud_armbar.png":["textures.vl2"],"textures/gui/hud_armbaricon.png":["textures.vl2"],"textures/gui/hud_beacon.png":["textures.vl2"],"textures/gui/hud_blaster.png":["textures.vl2"],"textures/gui/hud_camera.png":["textures.vl2"],"textures/gui/hud_chaingun.png":["textures.vl2"],"textures/gui/hud_chat.png":["textures.vl2"],"textures/gui/hud_cloakpack.png":["textures.vl2"],"textures/gui/hud_cmmndfield.png":["textures.vl2"],"textures/gui/hud_deploypack.png":["textures.vl2"],"textures/gui/hud_disc.png":["textures.vl2"],"textures/gui/hud_disconnect.png":["textures.vl2"],"textures/gui/hud_dot.png":["textures.vl2"],"textures/gui/hud_east.png":["textures.vl2"],"textures/gui/hud_elfgun.png":["textures.vl2"],"textures/gui/hud_enemytriangle.png":["textures.vl2"],"textures/gui/hud_energypack.png":["textures.vl2"],"textures/gui/hud_ergbar.png":["textures.vl2"],"textures/gui/hud_ergbaricon.png":["textures.vl2"],"textures/gui/hud_grenlaunch.png":["textures.vl2"],"textures/gui/hud_handgren.png":["textures.vl2"],"textures/gui/hud_infinity.png":["textures.vl2"],"textures/gui/hud_jamm.png":["textures.vl2"],"textures/gui/hud_medpack.png":["textures.vl2"],"textures/gui/hud_mine.png":["textures.vl2"],"textures/gui/hud_missiles.png":["textures.vl2"],"textures/gui/hud_mistimer.png":["textures.vl2"],"textures/gui/hud_mortor.png":["textures.vl2"],"textures/gui/hud_navcirc.png":["textures.vl2"],"textures/gui/hud_new_NSEW.png":["textures.vl2"],"textures/gui/hud_new_beacon.png":["textures.vl2"],"textures/gui/hud_new_blaster.png":["textures.vl2"],"textures/gui/hud_new_chaingun.png":["textures.vl2"],"textures/gui/hud_new_cog.png":["textures.vl2"],"textures/gui/hud_new_compass.png":["textures.vl2"],"textures/gui/hud_new_disc.png":["textures.vl2"],"textures/gui/hud_new_elfgun.png":["textures.vl2"],"textures/gui/hud_new_grenlaunch.png":["textures.vl2"],"textures/gui/hud_new_handgren.png":["textures.vl2"],"textures/gui/hud_new_medpack.png":["textures.vl2"],"textures/gui/hud_new_mine.png":["textures.vl2"],"textures/gui/hud_new_missile.png":["textures.vl2"],"textures/gui/hud_new_mortar.png":["textures.vl2"],"textures/gui/hud_new_packammo.png":["textures.vl2"],"textures/gui/hud_new_packcloak.png":["textures.vl2"],"textures/gui/hud_new_packcloak_armed.png":["textures.vl2"],"textures/gui/hud_new_packenergy.png":["textures.vl2"],"textures/gui/hud_new_packinventory.png":["textures.vl2"],"textures/gui/hud_new_packmotionsens.png":["textures.vl2"],"textures/gui/hud_new_packradar.png":["textures.vl2"],"textures/gui/hud_new_packrepair.png":["textures.vl2"],"textures/gui/hud_new_packrepair_armed.png":["textures.vl2"],"textures/gui/hud_new_packsatchel.png":["textures.vl2"],"textures/gui/hud_new_packsensjam.png":["textures.vl2"],"textures/gui/hud_new_packsensjam_armed.png":["textures.vl2"],"textures/gui/hud_new_packshield.png":["textures.vl2"],"textures/gui/hud_new_packshield_armed.png":["textures.vl2"],"textures/gui/hud_new_packturret.png":["textures.vl2"],"textures/gui/hud_new_packturretin.png":["textures.vl2"],"textures/gui/hud_new_packturretout.png":["textures.vl2"],"textures/gui/hud_new_panel.png":["textures.vl2"],"textures/gui/hud_new_ping.png":["textures.vl2"],"textures/gui/hud_new_ping_green.png":["textures.vl2"],"textures/gui/hud_new_ping_red.png":["textures.vl2"],"textures/gui/hud_new_ping_yellow.png":["textures.vl2"],"textures/gui/hud_new_plasma.png":["textures.vl2"],"textures/gui/hud_new_scorewindow.png":["textures.vl2"],"textures/gui/hud_new_shocklance.png":["textures.vl2"],"textures/gui/hud_new_sniper.png":["textures.vl2"],"textures/gui/hud_new_targetlaser.png":["textures.vl2"],"textures/gui/hud_new_weaponselect.png":["textures.vl2"],"textures/gui/hud_new_window_BL.png":["textures.vl2"],"textures/gui/hud_new_window_BM.png":["textures.vl2"],"textures/gui/hud_new_window_BR.png":["textures.vl2"],"textures/gui/hud_new_window_ML.png":["textures.vl2"],"textures/gui/hud_new_window_MM.png":["textures.vl2"],"textures/gui/hud_new_window_MR.png":["textures.vl2"],"textures/gui/hud_new_window_TL.png":["textures.vl2"],"textures/gui/hud_new_window_TM.png":["textures.vl2"],"textures/gui/hud_new_window_TR.png":["textures.vl2"],"textures/gui/hud_nopack.png":["textures.vl2"],"textures/gui/hud_north.png":["textures.vl2"],"textures/gui/hud_objective.png":["textures.vl2"],"textures/gui/hud_objtimer.png":["textures.vl2"],"textures/gui/hud_packback.png":["textures.vl2"],"textures/gui/hud_packwin.png":["textures.vl2"],"textures/gui/hud_ping.png":["textures.vl2"],"textures/gui/hud_plasma.png":["textures.vl2"],"textures/gui/hud_playertriangle.png":["textures.vl2"],"textures/gui/hud_playertriangle_enemy.png":["textures.vl2"],"textures/gui/hud_repairpack.png":["textures.vl2"],"textures/gui/hud_ret_bomber.png":["textures.vl2"],"textures/gui/hud_ret_shocklance.png":["textures.vl2"],"textures/gui/hud_ret_shrike.png":["textures.vl2"],"textures/gui/hud_ret_sniper.png":["textures.vl2"],"textures/gui/hud_ret_tankchaingun.png":["textures.vl2"],"textures/gui/hud_ret_tankmortar.png":["textures.vl2"],"textures/gui/hud_ret_targlaser.png":["textures.vl2"],"textures/gui/hud_retrng.png":["textures.vl2"],"textures/gui/hud_satchel_armed.png":["textures.vl2"],"textures/gui/hud_satchel_unarmed.png":["textures.vl2"],"textures/gui/hud_sensorbar.png":["textures.vl2"],"textures/gui/hud_sensorbar_glow.png":["textures.vl2"],"textures/gui/hud_sensorbar_glow1.png":["textures.vl2"],"textures/gui/hud_sensorbar_glow2.png":["textures.vl2"],"textures/gui/hud_shieldpack.png":["textures.vl2"],"textures/gui/hud_shocklance.png":["textures.vl2"],"textures/gui/hud_sniper.png":["textures.vl2"],"textures/gui/hud_south.png":["textures.vl2"],"textures/gui/hud_targetlaser.png":["textures.vl2"],"textures/gui/hud_veh_bomb.png":["textures.vl2"],"textures/gui/hud_veh_enrgbar.png":["textures.vl2"],"textures/gui/hud_veh_enrgbarback.png":["textures.vl2"],"textures/gui/hud_veh_icon_assault.png":["textures.vl2"],"textures/gui/hud_veh_icon_bomber.png":["textures.vl2"],"textures/gui/hud_veh_icon_hapc.png":["textures.vl2"],"textures/gui/hud_veh_icon_hole.png":["textures.vl2"],"textures/gui/hud_veh_icon_hoverbike.png":["textures.vl2"],"textures/gui/hud_veh_icon_mpb.png":["textures.vl2"],"textures/gui/hud_veh_icon_shrike.png":["textures.vl2"],"textures/gui/hud_veh_new_bombardier_dash.png":["textures.vl2"],"textures/gui/hud_veh_new_dash.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_1.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_2.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_3.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_4.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_5.png":["textures.vl2"],"textures/gui/hud_veh_new_hilite_left.png":["textures.vl2"],"textures/gui/hud_veh_new_hilite_middle.png":["textures.vl2"],"textures/gui/hud_veh_new_hilite_right.png":["textures.vl2"],"textures/gui/hud_veh_new_tankgunner_dash.png":["textures.vl2"],"textures/gui/hud_veh_nrgbar.png":["textures.vl2"],"textures/gui/hud_veh_nrgbar_back.png":["textures.vl2"],"textures/gui/hud_veh_passenger_dot.png":["textures.vl2"],"textures/gui/hud_veh_passengers.png":["textures.vl2"],"textures/gui/hud_veh_seatdot.png":["textures.vl2"],"textures/gui/hud_veh_speedaltwin.png":["textures.vl2"],"textures/gui/hud_veh_speedaltwinback.png":["textures.vl2"],"textures/gui/hud_veh_speedo_bkgrnd.png":["textures.vl2"],"textures/gui/hud_veh_speedo_frame.png":["textures.vl2"],"textures/gui/hud_veh_weapon_back.png":["textures.vl2"],"textures/gui/hud_veh_weapon_frame.png":["textures.vl2"],"textures/gui/hud_veh_weaponback.png":["textures.vl2"],"textures/gui/hud_veh_weaponwin.png":["textures.vl2"],"textures/gui/hud_weaphigh.png":["textures.vl2"],"textures/gui/hud_weapwin.png":["textures.vl2"],"textures/gui/hud_west.png":["textures.vl2"],"textures/gui/immersion.jpg":["textures.vl2"],"textures/gui/launch_btn.png":["textures.vl2"],"textures/gui/launch_btn_act.png":["textures.vl2"],"textures/gui/launch_btn_rol.png":["textures.vl2"],"textures/gui/launchtop_btn.png":["textures.vl2"],"textures/gui/launchtop_btn_act.png":["textures.vl2"],"textures/gui/lnch_Tab.png":["textures.vl2"],"textures/gui/load_Firestorm.png":["textures.vl2"],"textures/gui/load_Fracas.png":["textures.vl2"],"textures/gui/load_Geronimo.png":["Geronimo.vl2"],"textures/gui/load_Katabatic.png":["textures.vl2"],"textures/gui/load_Patience.png":["Patience.vl2"],"textures/gui/load_Riverdance.png":["textures.vl2"],"textures/gui/load_VulcansHammer.png":["VulcansHammer.vl2"],"textures/gui/load_broken_dreams.png":["brokendreams_2.vl2"],"textures/gui/load_solace.png":["Solace.vl2"],"textures/gui/lobby_headset.png":["textures.vl2"],"textures/gui/lobby_icon_listen.png":["textures.vl2"],"textures/gui/lobby_icon_speak.png":["textures.vl2"],"textures/gui/server_retrievebar.png":["textures.vl2"],"textures/gui/server_tabs.png":["textures.vl2"],"textures/gui/shellScroll.png":["textures.vl2"],"textures/gui/shll_bar_act.png":["textures.vl2"],"textures/gui/shll_bar_rol.png":["textures.vl2"],"textures/gui/shll_button.png":["textures.vl2"],"textures/gui/shll_entryfield.png":["textures.vl2"],"textures/gui/shll_field_BL.png":["textures.vl2"],"textures/gui/shll_field_BM.png":["textures.vl2"],"textures/gui/shll_field_BR.png":["textures.vl2"],"textures/gui/shll_field_ML.png":["textures.vl2"],"textures/gui/shll_field_MM.png":["textures.vl2"],"textures/gui/shll_field_MR.png":["textures.vl2"],"textures/gui/shll_field_TL.png":["textures.vl2"],"textures/gui/shll_field_TM.png":["textures.vl2"],"textures/gui/shll_field_TR.png":["textures.vl2"],"textures/gui/shll_fieldfill.png":["textures.vl2"],"textures/gui/shll_fieldgrade.png":["textures.vl2"],"textures/gui/shll_frame_edge.png":["textures.vl2"],"textures/gui/shll_frame_end.png":["textures.vl2"],"textures/gui/shll_horizontalfield.png":["textures.vl2"],"textures/gui/shll_horzspacer.png":["textures.vl2"],"textures/gui/shll_horztabbutton.png":["textures.vl2"],"textures/gui/shll_horztabbuttonB.png":["textures.vl2"],"textures/gui/shll_horztabframeclose.png":["textures.vl2"],"textures/gui/shll_horztabframeclosea.png":["textures.vl2"],"textures/gui/shll_horztabframegrad.png":["textures.vl2"],"textures/gui/shll_horztabframegrada.png":["textures.vl2"],"textures/gui/shll_horztabframegradedge.png":["textures.vl2"],"textures/gui/shll_horztabframegradedgea.png":["textures.vl2"],"textures/gui/shll_icon_dedicated.png":["textures.vl2"],"textures/gui/shll_icon_dedicated_hi.png":["textures.vl2"],"textures/gui/shll_icon_favorite.png":["textures.vl2"],"textures/gui/shll_icon_favorite_hi.png":["textures.vl2"],"textures/gui/shll_icon_notqueried.png":["textures.vl2"],"textures/gui/shll_icon_notqueried_hi.png":["textures.vl2"],"textures/gui/shll_icon_passworded.png":["textures.vl2"],"textures/gui/shll_icon_passworded_hi.png":["textures.vl2"],"textures/gui/shll_icon_penguin.png":["textures.vl2"],"textures/gui/shll_icon_querying.png":["textures.vl2"],"textures/gui/shll_icon_querying_hi.png":["textures.vl2"],"textures/gui/shll_icon_timedout.png":["textures.vl2"],"textures/gui/shll_icon_tourney.png":["textures.vl2"],"textures/gui/shll_icon_tourney_hi.png":["textures.vl2"],"textures/gui/shll_launch_act.png":["textures.vl2"],"textures/gui/shll_launch_rol.png":["textures.vl2"],"textures/gui/shll_launch_sep.png":["textures.vl2"],"textures/gui/shll_menuclose.png":["textures.vl2"],"textures/gui/shll_menufield.png":["textures.vl2"],"textures/gui/shll_pulldown.png":["textures.vl2"],"textures/gui/shll_pulldown_BL.png":["textures.vl2"],"textures/gui/shll_pulldown_BM.png":["textures.vl2"],"textures/gui/shll_pulldown_BR.png":["textures.vl2"],"textures/gui/shll_pulldown_ML.png":["textures.vl2"],"textures/gui/shll_pulldown_MM.png":["textures.vl2"],"textures/gui/shll_pulldown_MR.png":["textures.vl2"],"textures/gui/shll_pulldown_TL.png":["textures.vl2"],"textures/gui/shll_pulldown_TM.png":["textures.vl2"],"textures/gui/shll_pulldown_TR.png":["textures.vl2"],"textures/gui/shll_pulldownbar_act.png":["textures.vl2"],"textures/gui/shll_pulldownbar_rol.png":["textures.vl2"],"textures/gui/shll_radio.png":["textures.vl2"],"textures/gui/shll_scroll_horzbar.png":["textures.vl2"],"textures/gui/shll_scroll_horzbuttons.png":["textures.vl2"],"textures/gui/shll_scroll_horzfield.png":["textures.vl2"],"textures/gui/shll_scroll_scale.png":["textures.vl2"],"textures/gui/shll_scroll_vertbar.png":["textures.vl2"],"textures/gui/shll_scroll_vertbuttons.png":["textures.vl2"],"textures/gui/shll_scroll_vertfield.png":["textures.vl2"],"textures/gui/shll_sortarrow.png":["textures.vl2"],"textures/gui/shll_soundbutton.png":["textures.vl2"],"textures/gui/shll_tabbutton.png":["textures.vl2"],"textures/gui/shll_tabframegrad.png":["textures.vl2"],"textures/gui/shll_tabframegradedge.png":["textures.vl2"],"textures/gui/shll_titletab.png":["textures.vl2"],"textures/gui/shll_treeView.png":["textures.vl2"],"textures/gui/shll_verticalfield.png":["textures.vl2"],"textures/gui/shll_vertspacer.png":["textures.vl2"],"textures/gui/shll_wipe.png":["textures.vl2"],"textures/gui/shll_wipeend.png":["textures.vl2"],"textures/gui/shll_wipefill.png":["textures.vl2"],"textures/gui/shll_wphfieldbttm.png":["textures.vl2"],"textures/gui/shll_wphfieldtop.png":["textures.vl2"],"textures/gui/shll_wpvfield.png":["textures.vl2"],"textures/gui/treeView.png":["textures.vl2"],"textures/gui/trn_1charybdis.png":["textures.vl2"],"textures/gui/trn_2sehrganda.png":["textures.vl2"],"textures/gui/trn_3ymir.png":["textures.vl2"],"textures/gui/trn_4bloodjewel.png":["textures.vl2"],"textures/gui/trn_5draconis.png":["textures.vl2"],"textures/gui/trn_skifree_2021.png":["SkiFreeGameType.vl2"],"textures/gui/trn_skifree_daily.png":["SkiFreeGameType.vl2"],"textures/gui/trn_skifree_random.png":["SkiFreeGameType.vl2"],"textures/gui/vin_assaultVehicle.png":["textures.vl2"],"textures/gui/vin_bomberFlyer.png":["textures.vl2"],"textures/gui/vin_hapcFlyer.png":["textures.vl2"],"textures/gui/vin_mobileBaseVehicle.png":["textures.vl2"],"textures/gui/vin_scoutFlyer.png":["textures.vl2"],"textures/gui/vin_scoutVehicle.png":["textures.vl2"],"textures/gui/votemeterpassbar.png":["textures.vl2"],"textures/gui/window_close.png":["textures.vl2"],"textures/gui/window_corner.png":["textures.vl2"],"textures/gui/window_titletab.png":["textures.vl2"],"textures/haloday.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/halonite.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/harvest.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ib/skies/inf_butch_night13_BK.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_DN.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_FR.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_LF.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_RT.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_UP.png":["TWL-MapPack.vl2"],"textures/ice/bd_ebor03.PNG":["TWL2-MapPack.vl2"],"textures/ice/bd_espe03.PNG":["TWL2-MapPack.vl2"],"textures/ice/bd_ibor6.PNG":["TWL2-MapPack.vl2"],"textures/ice/bd_iceilig02.png":["TWL2-MapPack.vl2"],"textures/ice/be_elig03.PNG":["TWL2-MapPack.vl2"],"textures/ice/be_icei01a.png":["TWL2-MapPack.vl2"],"textures/ice/be_itebor02a.PNG":["TWL2-MapPack.vl2"],"textures/ice/be_itedoo01.PNG":["TWL2-MapPack.vl2"],"textures/ice/be_iteflo01.PNG":["TWL2-MapPack.vl2"],"textures/ice/ds_efloor1.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ichute02.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iflo04.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ihacei01.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ilig02.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ilig03.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iwaldeco04a.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iwaldeco05.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iwaldeco06.png":["TWL2-MapPack.vl2"],"textures/ice/ds_techwall_2.png":["TWL2-MapPack.vl2"],"textures/ice/ds_techwall_3.png":["TWL2-MapPack.vl2"],"textures/ice/icewall2020.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ice/icewall2021.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ice/icewall2022.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ice/rockSnow2.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/rockblue5.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/skies/dark_b.bm8":["ice.vl2"],"textures/ice/skies/dark_b.png":["ice.vl2"],"textures/ice/skies/dark_bottom.bm8":["ice.vl2"],"textures/ice/skies/dark_bottom.png":["ice.vl2"],"textures/ice/skies/dark_f.bm8":["ice.vl2"],"textures/ice/skies/dark_f.png":["ice.vl2"],"textures/ice/skies/dark_l.bm8":["ice.vl2"],"textures/ice/skies/dark_l.png":["ice.vl2"],"textures/ice/skies/dark_r.bm8":["ice.vl2"],"textures/ice/skies/dark_r.png":["ice.vl2"],"textures/ice/skies/dark_t.bm8":["ice.vl2"],"textures/ice/skies/dark_t.png":["ice.vl2"],"textures/ice/skies/ice_blue_emap.bm8":["ice.vl2"],"textures/ice/skies/ice_blue_emap.png":["ice.vl2"],"textures/ice/skies/ice_nite_emap.bm8":["ice.vl2"],"textures/ice/skies/ice_nite_emap.png":["ice.vl2"],"textures/ice/skies/icecloud1.bm8":["ice.vl2"],"textures/ice/skies/icecloud1.png":["ice.vl2"],"textures/ice/skies/icecloud2.bm8":["ice.vl2"],"textures/ice/skies/icecloud2.png":["ice.vl2"],"textures/ice/skies/icecloud3.bm8":["ice.vl2"],"textures/ice/skies/icecloud3.png":["ice.vl2"],"textures/ice/skies/kif_ice_day_BK.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_DN.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_FR.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_LF.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_RT.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_UP.png":["TWL-MapPack.vl2"],"textures/ice/skies/starrynite_BK.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_DN.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_FR.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_LF.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_RT.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_UP.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_v1_BK.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_BK.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_DN.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_DN.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_FR.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_FR.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_LF.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_LF.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_RT.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_RT.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_UP.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_UP.png":["ice.vl2"],"textures/ice/snowrock.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/snowrock2.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ebor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_elig01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_elig02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_espec01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_espec02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_espec03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal02a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal03a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_floorgrate.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_floorthresh.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ibor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ibor01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig02a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig02b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei02a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ichute01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ichute02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icol01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icol01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolBASE.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolCAP01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolCAP02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolSPEC01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolSPEC02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icoligolA.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ipipe01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ipipe01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ipipe02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec01agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec01gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec02agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec02gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec03glue.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01Snow.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01_4BSb.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01_4BSgl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal02Snow.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal035BSEb.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal035BSEgl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal03Snow.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal03gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal04gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal05.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal05gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP01agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP01gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP02agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP02gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalsubcap.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_screen.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_thresh01OFF.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_thresh01ON.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_threshSIDE.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_threshgrate.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/xsnowrock3.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/xsnowrock4.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice_dark.dml":["ice.vl2"],"textures/inf_butch_FrozenHope.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/inf_butch_night13.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/inf_butch_night13_x2.dml":["TWL-MapPack.vl2"],"textures/inf_butch_nov50.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/inf_butch_nov50_BK.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_DN.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_FR.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_LF.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_RT.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_UP.png":["TWL2-MapPack.vl2"],"textures/inf_butchlava51.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/island_water.dml":["textures.vl2"],"textures/jagged.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/jaggedclaw/be_edoo02.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_elig02.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_elig03.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_espec02.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_ewal06.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_icei01a.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_ihalig.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_iprflo01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itebor04.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itedoo01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itelig01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itelig02.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itewal01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itewal04.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_bk.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_dn.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_ft.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_lf.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_rt.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_up.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/deck1+.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_NefBlTrim.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_NefBlue1.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_NefWall1.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_Neffloor1.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_Neffloor5.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_ilig03.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/greylite2.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/gtext2a.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/null.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/slabgrill.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/tcement1a.png":["TWL2-MapPack.vl2"],"textures/kif_iceday.dml":["TWL-MapPack.vl2"],"textures/kif_lava_starrynight.dml":["TWL-MapPack.vl2"],"textures/kif_lava_starrynight62.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/kif_lushsunset.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Euro4_Sinivalkoinen_TMa5tersMix_water_RefleX.png":["TWL2-MapPack.vl2"],"textures/lava/Nycto-Plates.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-Trim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-bboard.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-bboard2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp3.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp4.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp7.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-computer.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-disp1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-disp2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-hitwall.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-hitwall2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-map.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall3.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall4.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-pipe.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-plasma.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/STPLATE10a.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE10c.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE12.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE13.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE5a.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate0010.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate1.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate2.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate3.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate5.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate6.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate7.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate8.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate9.png":["Classic_maps_v1.vl2"],"textures/lava/Tma5t_Cowboy1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy5.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy6.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy7.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy8.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy9.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb10.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb11.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb12.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb13.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb14.png":["TWL2-MapPack.vl2"],"textures/lava/Tma5t_Cowboyb15.png":["TWL2-MapPack.vl2"],"textures/lava/bd_iflo03b.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/be_icei01a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/be_itelig01.PNG":["TWL2-MapPack.vl2"],"textures/lava/be_itewal02a.PNG":["TWL2-MapPack.vl2"],"textures/lava/comp_screen_2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/display_blue.png":["Classic_maps_v1.vl2"],"textures/lava/display_yellow.png":["Classic_maps_v1.vl2"],"textures/lava/displaymxscar.png":["Classic_maps_v1.vl2"],"textures/lava/ds_NefBlTrim.png":["Classic_maps_v1.vl2"],"textures/lava/ds_NefBlue.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefBlue1.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefBlue2.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefBlue3.png":["Classic_maps_v1.vl2"],"textures/lava/ds_NefFloor6.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefWall1.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_Neffloor1.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor2.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor3.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor4.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor5.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neflig01.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Thresh01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_Thresh1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_alarm.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ebor01b.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ebor02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_efloor1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_eflor1.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_elig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_elig02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_elig0202.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_elig03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_eport01e.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_etechbor01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_etechbrdr2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_etran1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_etrans.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_etrans01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal01BASE.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal01a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal02a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewal05d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewal11a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewaldeco01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco08.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco09.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall05.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall06a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewall07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall1a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_floorgrate1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_genfloor.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_genwall.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_girder.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor01a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor02a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_icei01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_icei05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_iceilig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iceilig1.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ichute01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ichute02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ifloLig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ifloLig02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ifloor01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ihacei01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ihaceilig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ihalig.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ilavlight.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig05.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_inolite.png":["Classic_maps_v1.vl2"],"textures/lava/ds_iwal01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwal01a.png":["lava.vl2","yHDTextures2.0.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_iwal01aa.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_iwaldeco01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco01a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco02a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco03a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco04a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco05.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco05a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco08.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco09.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_jet01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_jet02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_jet03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_mlatched.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_mriveted2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_neflig01.png":["TR2final105-client.vl2"],"textures/lava/ds_obsidian.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_screen.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techborder1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techborder2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techwall_1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techwall_2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techwall_3.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_twall_001.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_waldeco1.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_walldeco_06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_walldeco_07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_walldeco_08.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_walldeco_09.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ext_grey8.png":["Classic_maps_v1.vl2"],"textures/lava/greylite1.png":["Classic_maps_v1.vl2"],"textures/lava/greylite2.png":["Classic_maps_v1.vl2"],"textures/lava/greylitetrim.png":["Classic_maps_v1.vl2"],"textures/lava/greylitetrim2.png":["Classic_maps_v1.vl2"],"textures/lava/grid_1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/grid_rusty_1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/grill1a.png":["Classic_maps_v1.vl2"],"textures/lava/gtext1.png":["Classic_maps_v1.vl2"],"textures/lava/gtext1a.png":["Classic_maps_v1.vl2"],"textures/lava/gtext2.png":["Classic_maps_v1.vl2"],"textures/lava/gtext2a.png":["Classic_maps_v1.vl2"],"textures/lava/gtext2b.png":["Classic_maps_v1.vl2"],"textures/lava/gtext3.png":["Classic_maps_v1.vl2"],"textures/lava/gtext4.png":["Classic_maps_v1.vl2"],"textures/lava/gtext5.png":["Classic_maps_v1.vl2"],"textures/lava/gtextpipe1.png":["Classic_maps_v1.vl2"],"textures/lava/inf_light011.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/inf_light09.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/lavadirt04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/lavarock03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/lavawall20.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/lavawall21.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/lavawall22.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/radwarn.png":["Classic_maps_v1.vl2"],"textures/lava/skies/Lavanight_v5_BK.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_DN.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_FR.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_LF.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_RT.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_UP.png":["DynamixFinalPack.vl2"],"textures/lava/skies/kif_lava_starrynight_BK.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_DN.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_FR.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_LF.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_RT.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_UP.png":["TWL-MapPack.vl2"],"textures/lava/skies/lava_starrynite_emap.bm8":["lava.vl2"],"textures/lava/skies/lava_starrynite_emap.png":["lava.vl2"],"textures/lava/skies/lavanight_v5_BK.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_DN.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_FR.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_LF.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_RT.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_UP.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavayellow_v5_BK.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_DN.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_FR.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_LF.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_RT.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_UP.png":["DynamixFinalPack.vl2"],"textures/lava/skies/starrynite_v5_BK.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_BK.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_DN.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_DN.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_FR.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_FR.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_LF.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_LF.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_RT.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_RT.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_UP.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_UP.png":["lava.vl2"],"textures/lava/skies/volcanic_starrynite_emap.bm8":["lava.vl2"],"textures/lava/skies/volcanic_starrynite_emap.png":["Classic_maps_v1.vl2","DynamixFinalPack.vl2","lava.vl2"],"textures/lava/stplate0021.png":["Classic_maps_v1.vl2"],"textures/lava/stplate14.png":["Classic_maps_v1.vl2"],"textures/lava/sw_floorgrate.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/sw_ipipe02.png":["TWL2-MapPack.vl2"],"textures/lava/tcement1a.png":["Classic_maps_v1.vl2"],"textures/lava/techwall_1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/techwall_paint.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/techwall_rusty.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/techwall_rusty2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/tlite6.png":["Classic_maps_v1.vl2"],"textures/lava/tplate1.png":["Classic_maps_v1.vl2"],"textures/lava/tplate2.png":["Classic_maps_v1.vl2"],"textures/lava/ttrim2.png":["Classic_maps_v1.vl2"],"textures/lava_dark.dml":["lava.vl2"],"textures/lava_night.dml":["Classic_maps_v1.vl2","DynamixFinalPack.vl2"],"textures/lava_yellow.dml":["DynamixFinalPack.vl2"],"textures/lavanight_v5.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidTiles/AlgaeWater.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/BlueWater.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/GreenWater.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Lava.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater01_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater02_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater03_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater04_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Modulation03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Modulation04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Shore_Modulation.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile01a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile02a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile03a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile04a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/archipelago_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/archipelago_water.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/damnation_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/ice_water_ram.png":["Classic_maps_v1.vl2"],"textures/liquidTiles/icebound_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/icebound_water.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/insalubria_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/myrkwood_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/oasis_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/oasis_water_ripply.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/quagmire_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/respite_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/reversion_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_water_1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_water_5.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_water_6.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/sanctuary_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/sanctuary_water_1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/sanctuary_water_2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/thinice_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidtiles/BloodMoon_bloodwater2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/MuddySwamp_industrial_oil.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/PlanetX_CB_water.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/SewageWater.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/caustic_water.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/industrial_oil.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/tes_water2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/BlueMoon.png":["TWL-MapPack.vl2"],"textures/lush/Roman_COLLa.png":["TWL-MapPack.vl2"],"textures/lush/Roman_COLLb.png":["TWL-MapPack.vl2"],"textures/lush/Roman_ROOF.png":["TWL-MapPack.vl2"],"textures/lush/Roman_STONE.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_BK.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_DN.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_FR.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_LF.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_RT.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_UP.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_BK_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_DN_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_FR_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_LF_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_RT_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_UP_x2.png":["TWL-MapPack.vl2"],"textures/lush/attrition_iflag.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/attrition_sflag.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/bb_red.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/bb_red2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/bb_sand.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_Edoo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor01bb.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_ebor01d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor01e.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor04a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ecombo02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_edoo02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_edoo03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eflo02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig02_nd.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_elig03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig033.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_epipe01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport01e.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec03a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec03b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec05.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec05b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec06a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec07.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec08.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec09.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_etec.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eterrain02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eterrain02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eterrain02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal02be.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_ewal03_hl.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_ewal03a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal03acrk.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_ewal04a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal05.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal05a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal05d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal06.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal07.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal077.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_ewal08.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal09b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal11b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal11d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal12b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewall10.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_gr3streak.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_gr4streak.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_iColBase01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iColTop.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iGeneric.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iGenericDark.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01b1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_icei01c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01ca.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_icei02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei03b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ichute01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ichute02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icobor1.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icobor1a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icocei.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icolig.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icolig01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icoligolA.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icomp01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icomp01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icowal02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icowal02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icowal02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iflo01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ifloWet.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ifunctec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ifunctec01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihadoo.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihaflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihalig.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihaspe01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal05a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal05b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal05c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ipipe01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ipipe01_iwal.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ipipe01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iprflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iprwal01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ispec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ispec01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ispec01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itec01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itec01c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itecei01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itecei02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itedoo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iteflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iteflo02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itelig01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itelig02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_screen.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_twal05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/beach_wal1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/beach_wal2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/beach_wal3.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/box_a.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/box_b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/box_c.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/display05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/display_07.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/dox_beam.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_bluelite1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_bluelite2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel3.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel3_b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel3_f.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel4.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_pipe1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/emap_beachblitz.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/hazard.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/ir_blocks.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_blocks.png":["TWL-MapPack.vl2"],"textures/lush/ir_plain.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_plain.png":["TWL-MapPack.vl2"],"textures/lush/ir_relief.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_relief.png":["TWL-MapPack.vl2"],"textures/lush/ir_trim1.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_trim1.png":["TWL-MapPack.vl2"],"textures/lush/ir_trim2.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_trim2.png":["TWL-MapPack.vl2"],"textures/lush/ir_wall.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_wall.png":["TWL-MapPack.vl2"],"textures/lush/kb_logitech.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/light_base01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/panel.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/reactor01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/rip.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/rustbox.png":["TWL-MapPack.vl2"],"textures/lush/rustbox_logo.png":["TWL-MapPack.vl2"],"textures/lush/skies/L4_b.bm8":["lush.vl2"],"textures/lush/skies/L4_b.png":["","lush.vl2"],"textures/lush/skies/L4_bottom.bm8":["lush.vl2"],"textures/lush/skies/L4_bottom.png":["","lush.vl2"],"textures/lush/skies/L4_f.bm8":["lush.vl2"],"textures/lush/skies/L4_f.png":["","lush.vl2"],"textures/lush/skies/L4_l.bm8":["lush.vl2"],"textures/lush/skies/L4_l.png":["","lush.vl2"],"textures/lush/skies/L4_r.bm8":["lush.vl2"],"textures/lush/skies/L4_r.png":["","lush.vl2"],"textures/lush/skies/L4_t.bm8":["lush.vl2"],"textures/lush/skies/L4_t.png":["","lush.vl2"],"textures/lush/skies/emap_dark_green.png":["TWL2-MapPack.vl2"],"textures/lush/skies/emap_muddy.png":["Classic_maps_v1.vl2"],"textures/lush/skies/kif_lushsunset_BK.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_DN.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_FR.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_LF.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_RT.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_UP.png":["TWL2-MapPack.vl2"],"textures/lush/skies/lush_01_day_v5_BK.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_DN.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_FR.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_LF.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_RT.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_UP.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_BK.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_DN.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_FR.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_LF.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_RT.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_UP.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_ram_v5_BK.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_DN.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_FR.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_LF.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_RT.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_UP.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02_dusk_BK.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_DN.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_FR.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_LF.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_RT.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_UP.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02c_dusk_BK.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_DN.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_FR.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_LF.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_RT.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_UP.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_day_emap.bm8":["lush.vl2"],"textures/lush/skies/lush_day_emap.png":["lush.vl2"],"textures/lush/skies/lush_nite_emap.bm8":["lush.vl2"],"textures/lush/skies/lush_nite_emap.png":["lush.vl2"],"textures/lush/skies/lushcloud1.bm8":["lush.vl2"],"textures/lush/skies/lushcloud1.png":["lush.vl2"],"textures/lush/skies/lushcloud3.bm8":["lush.vl2"],"textures/lush/skies/lushcloud3.png":["lush.vl2"],"textures/lush/skies/lushcloud4.bm8":["lush.vl2"],"textures/lush/skies/lushcloud4.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_BK.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_BK.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_DN.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_DN.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_FR.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_FR.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_LF.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_LF.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_RT.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_RT.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_UP.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_UP.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_BK.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_BK.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_DN.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_DN.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_FR.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_FR.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_LF.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_LF.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_RT.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_RT.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_UP.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_UP.png":["lush.vl2"],"textures/lush/skull.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/alien-01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display04.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display06.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display07.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display08.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display10.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot03.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot04.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot06.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot07.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot08.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot09.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot11.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/stone_wall1.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall2.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall3.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall4.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall5.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall7.png":["TWL2-MapPack.vl2"],"textures/lush/trim_t01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_c02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_light_c01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_trim01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_w03a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/xing.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush_dark.dml":["lush.vl2"],"textures/lush_day.dml":["DynamixFinalPack.vl2"],"textures/lush_day_x2.dml":["TWL-MapPack.vl2"],"textures/lush_dusk.dml":["Classic_maps_v1.vl2","DynamixFinalPack.vl2"],"textures/lush_night.dml":["DynamixFinalPack.vl2"],"textures/lush_ram.dml":["Classic_maps_v1.vl2"],"textures/lushdusk66.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lushsky_night11.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/magsky/mag_BK.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_FR.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_LF.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_RT.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_UP.png":["TWL2-MapPack.vl2"],"textures/mmd.dml":["TWL2-MapPack.vl2"],"textures/mmd/mmd_BK.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_DN.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_FR.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_LF.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_RT.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_UP.png":["TWL2-MapPack.vl2"],"textures/mr_02.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/muddy.dml":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_BK.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_FR.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_LF.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_RT.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_UP.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_cloud1.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_cloud2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_BK.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_DN.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_FR.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_LF.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_RT.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_UP.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_cloud1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_cloud2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_BK.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_FR.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_LF.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_RT.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_UP.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal_7.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal_Cloud1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal_Cloud2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_cloud1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night5.png":["Classic_maps_v1.vl2"],"textures/nef_5.dml":["Classic_maps_v1.vl2"],"textures/nef_BlueClear.dml":["Classic_maps_v1.vl2"],"textures/nef_RedPlanet.dml":["Classic_maps_v1.vl2"],"textures/nef_RedPlanet2.dml":["Classic_maps_v1.vl2"],"textures/nef_Red_1.dml":["Classic_maps_v1.vl2"],"textures/nef_Surreal1.dml":["Classic_maps_v1.vl2"],"textures/nef_night1.dml":["Classic_maps_v1.vl2"],"textures/nef_sset2_x2.dml":["TWL-MapPack.vl2"],"textures/nefred1/red1_BK_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_CLOUD1_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_FR_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_LF_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_RT_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_UP_x2.png":["TWL-MapPack.vl2"],"textures/nefred1_x2.dml":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_BK.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_FR.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_LF.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_RT.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_UP.png":["TWL-MapPack.vl2"],"textures/nightsky82.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ocean_water.dml":["textures.vl2"],"textures/ocular.dml":["TWL2-MapPack.vl2"],"textures/particleTest.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/raindrops.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake001.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake002.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake003.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake004.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake005.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake006.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake007.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake008.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake009.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake010.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake011.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake012.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake013.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake014.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake015.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake016.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake017.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflakes.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/purpsun.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/raindrops.dml":["textures.vl2"],"textures/rilrock/ril.darkrock.png":["S8maps.vl2"],"textures/roelcolor.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_goonflag.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_taotribes.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_toitle.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_tribescastcof.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_tribesnextcof.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Euro4_Bleed_emap.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_bk.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_dn.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_fr.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_lf.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_rt.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_up.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_BK.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_DN.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_FR.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_LF.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_RT.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_UP.png":["TWL2-MapPack.vl2"],"textures/skies/Iris/Iris_BK.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_BK.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_DN.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_DN.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_FR.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_FR.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_LF.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_LF.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_RT.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_RT.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_UP.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_UP.png":["TWL-MapPack.vl2"],"textures/skies/L4/L4_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_reflect.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/blank_DN.bm8":["TWL2-MapPack.vl2"],"textures/skies/blank_DN.png":["TWL2-MapPack.vl2"],"textures/skies/borealis/borealis_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cc_sky_bk.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_fr.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_lf.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_rt.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_up.png":["TWL2-MapPack.vl2"],"textures/skies/ccbsky2/csk2_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_BK.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_FR.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_LF.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_RT.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_UP.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/emap_muddy.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lush_02_dusk_BK.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_DN.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_FR.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_LF.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_RT.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_UP.png":["TWL-MapPack.vl2"],"textures/skies/lushdusk66/lushdusk66_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/Thumbs.db":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_CLOUD1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ocular0.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular0.png":["TWL2-MapPack.vl2"],"textures/skies/ocular180.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular180.png":["TWL2-MapPack.vl2"],"textures/skies/ocular270.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular270.png":["TWL2-MapPack.vl2"],"textures/skies/ocular90.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular90.png":["TWL2-MapPack.vl2"],"textures/skies/ocular_lush_day_emap.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular_lush_day_emap.png":["TWL2-MapPack.vl2"],"textures/skies/oculartop.bm8":["TWL2-MapPack.vl2"],"textures/skies/oculartop.png":["TWL2-MapPack.vl2"],"textures/skies/purpsun/PURPSUN_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/Cloud1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky01_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky02_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky03_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky04_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky05_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky06_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/A7branch1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/A7trunk2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/AgaritaFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/BBerryFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/BarrenSticksFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Blue.hflag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Blue.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Branch3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Branch4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Branch5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Branch6.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Branch7.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Burntwood.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/BurntwoodBranch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ChkBerryWinter.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Green.hflag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Green.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/HorseNettleFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Humnskn3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/LushMoss.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneBark.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneFoliage.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneWinter.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Maple Shrub.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MesqBark.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MesquiteBranch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MesquiteLeaves.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Mortar_Projectile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MotionSensor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NewMoss.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NewMossFull.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexDefaultFloor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexHoardFloor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexusGenerator.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexusPowerLightsON.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Oldwood.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/OldwoodBran01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/OldwoodBranch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Orange.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Plsre00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre16.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre17.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre18.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre19.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre20.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre21.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre22.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/PonderosaPineBark.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Purple.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Rabbit BushWin.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/RabbitBush.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Red.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/SBerryFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ScotchBroom.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Scout_windshield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ShieldPackActivate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ShieldPackAmbient.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Silver.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/SnowBlanket.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/StormJason.hmale.png":["StormJason.vl2"],"textures/skins/StormJason.lmale.png":["StormJason.vl2"],"textures/skins/StormJason.mmale.png":["StormJason.vl2"],"textures/skins/TR2-1.hmale.png":["TR2final105-client.vl2"],"textures/skins/TR2-1.lfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-1.mfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-1.mmale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.hmale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.lfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.mfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.mmale.png":["TR2final105-client.vl2"],"textures/skins/Vehicle_Land_Assault_Wheel.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_Land_Assault_bodyMain.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_Land_Assault_bodySide1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_Land_Assault_bodySide2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout_pipes.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout_windshield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout_windshieldInner.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_tank_bodyMain.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Weapon_missile_projectile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/WinMapShrubart.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/WinRhody.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/WinScotchArt.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Yellow.hflag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Yellow.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/a.hbioderm_512.png":["skins.vl2"],"textures/skins/a.hrobot_512.png":["skins.vl2"],"textures/skins/a.lbioderm_512.png":["skins.vl2"],"textures/skins/a.lrobot_512.png":["skins.vl2"],"textures/skins/a.mbioderm_512.png":["skins.vl2"],"textures/skins/a.mrobot_512.png":["skins.vl2"],"textures/skins/alienfirxbase2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_chaingun.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_disc.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_grenade.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_mine.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_mortar.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_plasma.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/armor.damage.1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/armor.damage.2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/armor.damage.3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/artists.plaque.png":["skins.vl2"],"textures/skins/b.hbioderm_512.png":["skins.vl2"],"textures/skins/b.hrobot_512.png":["skins.vl2"],"textures/skins/b.lbioderm_512.png":["skins.vl2"],"textures/skins/b.lrobot_512.png":["skins.vl2"],"textures/skins/b.mbioderm_512.png":["skins.vl2"],"textures/skins/b.mrobot_512.png":["skins.vl2"],"textures/skins/banner_honor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/banner_strength.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/banner_unity.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrelMount.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_aa_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_elf_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_fusion_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_missile_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_mortar_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/base.hbioderm.png":["skins.vl2"],"textures/skins/base.hbioderm_512.png":["skins.vl2"],"textures/skins/base.hflag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/base.hmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.lbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.lbioderm_512.png":["skins.vl2"],"textures/skins/base.lfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.lmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.mbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.mbioderm_512.png":["skins.vl2"],"textures/skins/base.mfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.mmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/baseb.hbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.hmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.lbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.lfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.lmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.mbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.mfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.mmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/basebbot.hmale.png":["skins.vl2"],"textures/skins/basebbot.lmale.png":["skins.vl2"],"textures/skins/basebbot.mmale.png":["skins.vl2"],"textures/skins/basebot.hmale.png":["skins.vl2"],"textures/skins/basebot.lmale.png":["skins.vl2"],"textures/skins/basebot.mmale.png":["skins.vl2"],"textures/skins/bb_bark.png":["TWL-MapPack.vl2"],"textures/skins/bb_bark2.png":["TWL-MapPack.vl2"],"textures/skins/bb_beechleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_bigleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_bush.png":["TWL-MapPack.vl2"],"textures/skins/bb_jnigraleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_palmleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_screen.png":["TWL-MapPack.vl2"],"textures/skins/bb_stripeleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree1_foliage2.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree1_side.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree2_foliage2.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree2_side.png":["TWL-MapPack.vl2"],"textures/skins/bb_trunk.png":["TWL-MapPack.vl2"],"textures/skins/beacon.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/beagle.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/beagle.hmale.png":["skins.vl2"],"textures/skins/beagle.hmale_512.png":["skins.vl2"],"textures/skins/beagle.lfemale.png":["skins.vl2"],"textures/skins/beagle.lfemale_512.png":["skins.vl2"],"textures/skins/beagle.lmale.png":["skins.vl2"],"textures/skins/beagle.lmale_512.png":["skins.vl2"],"textures/skins/beagle.mfemale.png":["skins.vl2"],"textures/skins/beagle.mfemale_512.png":["skins.vl2"],"textures/skins/beagle.mmale.png":["skins.vl2"],"textures/skins/beagle.mmale_512.png":["skins.vl2"],"textures/skins/beagle.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/beampulse.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bigdevdawg.plaque.png":["skins.vl2"],"textures/skins/billboard_1.png":["TR2final105-client.vl2"],"textures/skins/billboard_2.png":["TR2final105-client.vl2"],"textures/skins/billboard_3.png":["TR2final105-client.vl2"],"textures/skins/billboard_4.png":["TR2final105-client.vl2"],"textures/skins/blank.switch.png":["skins.vl2"],"textures/skins/blite00.png":["skins.vl2"],"textures/skins/blite01.PNG":["skins.vl2"],"textures/skins/blite02.png":["skins.vl2"],"textures/skins/blite03.png":["skins.vl2"],"textures/skins/blite04.png":["skins.vl2"],"textures/skins/blue.hflag.png":["zflags.vl2"],"textures/skins/blue.png":["skins.vl2"],"textures/skins/blue00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue00.ifl":["skins.vl2"],"textures/skins/blue01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue_blink.ifl":["skins.vl2"],"textures/skins/blue_blink0.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue_blink0.ifl":["skins.vl2"],"textures/skins/blue_blink1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue_blink2.PNG":["skins.vl2"],"textures/skins/blue_blink2.png":["yHDTextures2.0.vl2"],"textures/skins/blue_blink3.PNG":["skins.vl2"],"textures/skins/blue_blink3.png":["yHDTextures2.0.vl2"],"textures/skins/blue_blink4.PNG":["skins.vl2"],"textures/skins/blue_blink4.png":["yHDTextures2.0.vl2"],"textures/skins/borg1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/borg2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/borg4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/borg6.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/brsh5.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/brush.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole6.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cactus.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/camera.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chaingun_shot_end.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chaingun_shot_side.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chg_fmzl.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chg_smzl.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chgexhaust.ifl":["skins.vl2"],"textures/skins/cloak_core.ifl":["skins.vl2"],"textures/skins/cloak_core0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0010.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0011.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0012.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0013.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0014.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0015.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0016.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0017.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0018.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0019.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cotp.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/cotp.hmale.png":["skins.vl2"],"textures/skins/cotp.lfemale.png":["skins.vl2"],"textures/skins/cotp.lmale.png":["skins.vl2"],"textures/skins/cotp.mfemale.png":["skins.vl2"],"textures/skins/cotp.mmale.png":["skins.vl2"],"textures/skins/cotp.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cotp_hmale_512.png":["skins.vl2"],"textures/skins/cotp_lfemale_512.png":["skins.vl2"],"textures/skins/cotp_lmale_512.png":["skins.vl2"],"textures/skins/cotp_mfemale_512.png":["skins.vl2"],"textures/skins/cotp_mmale_512.png":["skins.vl2"],"textures/skins/dcase00.PNG":["skins.vl2"],"textures/skins/dcase00.ifl":["skins.vl2"],"textures/skins/dcase00.png":["yHDTextures2.0.vl2"],"textures/skins/dcase01.PNG":["skins.vl2"],"textures/skins/dcase01.png":["yHDTextures2.0.vl2"],"textures/skins/dcase02.PNG":["skins.vl2"],"textures/skins/dcase02.png":["yHDTextures2.0.vl2"],"textures/skins/dcase03.PNG":["skins.vl2"],"textures/skins/dcase03.png":["yHDTextures2.0.vl2"],"textures/skins/dcase04.PNG":["skins.vl2"],"textures/skins/dcase04.png":["yHDTextures2.0.vl2"],"textures/skins/dcase05.PNG":["skins.vl2"],"textures/skins/dcase05.png":["yHDTextures2.0.vl2"],"textures/skins/deb01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb01.ifl":["skins.vl2"],"textures/skins/deb02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb08.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb09.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb10.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb11.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb12.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb13.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb14.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb15.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb16.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb17.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb18.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb19.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb20.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb21.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb22.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb23.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb24.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb25.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb26.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb27.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb28.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb29.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb30.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb31.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb32.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb33.PNG":["skins.vl2"],"textures/skins/deb33.png":["yHDTextures2.0.vl2"],"textures/skins/deb34.PNG":["skins.vl2"],"textures/skins/deb34.png":["yHDTextures2.0.vl2"],"textures/skins/decoy.plaque.png":["skins.vl2"],"textures/skins/deploy_inv_lite.ifl":["skins.vl2"],"textures/skins/deploy_inventory_1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deploy_inventory_2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deploy_sensor_pulse.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/designers.plaque.png":["skins.vl2"],"textures/skins/diamondback.plaque.png":["skins.vl2"],"textures/skins/disc00.PNG":["skins.vl2"],"textures/skins/disc00.ifl":["skins.vl2"],"textures/skins/disc00.png":["yHDTextures2.0.vl2"],"textures/skins/disc01.PNG":["skins.vl2"],"textures/skins/disc01.png":["yHDTextures2.0.vl2"],"textures/skins/disc02.PNG":["skins.vl2"],"textures/skins/disc02.png":["yHDTextures2.0.vl2"],"textures/skins/disc03.PNG":["skins.vl2"],"textures/skins/disc03.png":["yHDTextures2.0.vl2"],"textures/skins/disc04.PNG":["skins.vl2"],"textures/skins/disc04.png":["yHDTextures2.0.vl2"],"textures/skins/disc05.PNG":["skins.vl2"],"textures/skins/disc05.png":["yHDTextures2.0.vl2"],"textures/skins/disc06.PNG":["skins.vl2"],"textures/skins/disc06.png":["yHDTextures2.0.vl2"],"textures/skins/disc07.PNG":["skins.vl2"],"textures/skins/disc07.png":["yHDTextures2.0.vl2"],"textures/skins/disc08.PNG":["skins.vl2"],"textures/skins/disc08.png":["yHDTextures2.0.vl2"],"textures/skins/disc09.PNG":["skins.vl2"],"textures/skins/disc09.png":["yHDTextures2.0.vl2"],"textures/skins/disc10.PNG":["skins.vl2"],"textures/skins/disc10.png":["yHDTextures2.0.vl2"],"textures/skins/disc11.PNG":["skins.vl2"],"textures/skins/disc11.png":["yHDTextures2.0.vl2"],"textures/skins/disc12.PNG":["skins.vl2"],"textures/skins/disc12.png":["yHDTextures2.0.vl2"],"textures/skins/disc13.PNG":["skins.vl2"],"textures/skins/disc13.png":["yHDTextures2.0.vl2"],"textures/skins/disc14.PNG":["skins.vl2"],"textures/skins/disc14.png":["yHDTextures2.0.vl2"],"textures/skins/disc15.PNG":["skins.vl2"],"textures/skins/disc15.png":["yHDTextures2.0.vl2"],"textures/skins/disc16.PNG":["skins.vl2"],"textures/skins/disc16.png":["yHDTextures2.0.vl2"],"textures/skins/disc17.PNG":["skins.vl2"],"textures/skins/disc17.png":["yHDTextures2.0.vl2"],"textures/skins/disc18.PNG":["skins.vl2"],"textures/skins/disc18.png":["yHDTextures2.0.vl2"],"textures/skins/disc19.PNG":["skins.vl2"],"textures/skins/disc19.png":["yHDTextures2.0.vl2"],"textures/skins/disc20.PNG":["skins.vl2"],"textures/skins/disc20.png":["yHDTextures2.0.vl2"],"textures/skins/disc21.PNG":["skins.vl2"],"textures/skins/disc21.png":["yHDTextures2.0.vl2"],"textures/skins/disc22.PNG":["skins.vl2"],"textures/skins/disc22.png":["yHDTextures2.0.vl2"],"textures/skins/disc23.PNG":["skins.vl2"],"textures/skins/disc23.png":["yHDTextures2.0.vl2"],"textures/skins/disc24.PNG":["skins.vl2"],"textures/skins/disc24.png":["yHDTextures2.0.vl2"],"textures/skins/disc25.PNG":["skins.vl2"],"textures/skins/disc25.png":["yHDTextures2.0.vl2"],"textures/skins/disc26.PNG":["skins.vl2"],"textures/skins/disc26.png":["yHDTextures2.0.vl2"],"textures/skins/disc27.PNG":["skins.vl2"],"textures/skins/disc27.png":["yHDTextures2.0.vl2"],"textures/skins/disc_muzzle.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/discshield2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/dox_stone.png":["TWL-MapPack.vl2"],"textures/skins/dox_wires.png":["TWL-MapPack.vl2"],"textures/skins/drawkward.plaque.png":["skins.vl2"],"textures/skins/ds.hmale_512.png":["skins.vl2"],"textures/skins/ds.lfemale_512.png":["skins.vl2"],"textures/skins/ds.lmale_512.png":["skins.vl2"],"textures/skins/ds.mfemale_512.png":["skins.vl2"],"textures/skins/ds.mmale_512.png":["skins.vl2"],"textures/skins/dsword.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/dsword.hmale.png":["skins.vl2"],"textures/skins/dsword.lfemale.png":["skins.vl2"],"textures/skins/dsword.lmale.png":["skins.vl2"],"textures/skins/dsword.mfemale.png":["skins.vl2"],"textures/skins/dsword.mmale.png":["skins.vl2"],"textures/skins/dsword.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/east.plaque.png":["skins.vl2"],"textures/skins/energy_blast.PNG":["skins.vl2"],"textures/skins/energy_blue_blink.ifl":["skins.vl2"],"textures/skins/energy_bolt.PNG":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/energy_bolt_aura.png":["skins.vl2"],"textures/skins/energy_bolt_front.png":["skins.vl2"],"textures/skins/energy_muzzle00.ifl":["skins.vl2"],"textures/skins/energy_side_muzzle00.ifl":["skins.vl2"],"textures/skins/energyb01.ifl":["skins.vl2"],"textures/skins/energyb01.png":["skins.vl2"],"textures/skins/energyb02.png":["skins.vl2"],"textures/skins/energyb03.png":["skins.vl2"],"textures/skins/energyb04.png":["skins.vl2"],"textures/skins/energyb05.png":["skins.vl2"],"textures/skins/energydis0000.ifl":["skins.vl2"],"textures/skins/energydis0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrg_frnt_muzl00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl06.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl07.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl06.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl07.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrgcore0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgpack_core.ifl":["skins.vl2"],"textures/skins/enrgpack_tubes.ifl":["skins.vl2"],"textures/skins/etcmodel02.plaque.png":["skins.vl2"],"textures/skins/flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/flaglight1.ifl":["skins.vl2"],"textures/skins/flaglight1.png":["skins.vl2"],"textures/skins/flaglight2.png":["skins.vl2"],"textures/skins/flaglight3.png":["skins.vl2"],"textures/skins/flaglight4.png":["skins.vl2"],"textures/skins/flaglight5.png":["skins.vl2"],"textures/skins/flaregreen.png":["skins.vl2"],"textures/skins/flarewhite.PNG":["skins.vl2"],"textures/skins/flyerflame1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric.ifl":["skins.vl2"],"textures/skins/forcefield_electric0.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric4.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric5.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn.ifl":["skins.vl2"],"textures/skins/forcefield_grn1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn4.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn5.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/frankrizzo.plaque.png":["skins.vl2"],"textures/skins/generator.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/generic_scorch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/glow_red.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/goal_back.png":["TR2final105-client.vl2"],"textures/skins/goal_panel.png":["TR2final105-client.vl2"],"textures/skins/goal_side.png":["TR2final105-client.vl2"],"textures/skins/goal_top.png":["TR2final105-client.vl2"],"textures/skins/gold_goal_back.png":["TR2final105-client.vl2"],"textures/skins/gold_goal_side.png":["TR2final105-client.vl2"],"textures/skins/gold_goal_top.png":["TR2final105-client.vl2"],"textures/skins/gold_post.png":["TR2final105-client.vl2"],"textures/skins/goldcube.png":["TR2final105-client.vl2"],"textures/skins/gotmilk.plaque.png":["skins.vl2"],"textures/skins/green.hflag.png":["zflags.vl2"],"textures/skins/green00.ifl":["skins.vl2"],"textures/skins/green00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/greenMortar.ifl":["skins.vl2"],"textures/skins/green_blink.ifl":["skins.vl2"],"textures/skins/green_blink0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/greenlight.ifl":["skins.vl2"],"textures/skins/grenade.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/grenade_flare.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/grenade_flash.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/grenade_projectile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hexabolic.plaque.png":["skins.vl2"],"textures/skins/horde.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/horde.hbioderm.png":["skins.vl2"],"textures/skins/horde.lbioderm.png":["skins.vl2"],"textures/skins/horde.mbioderm.png":["skins.vl2"],"textures/skins/horde.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hud_ret_bomber1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hud_ret_bomber2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hud_ret_bomber3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hunters.flag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hvybioflare.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/hvyjetpackflare.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare00.ifl":["skins.vl2"],"textures/skins/jetflare00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare2.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside00.ifl":["skins.vl2"],"textures/skins/jetflareside00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetpack.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jetpack_bio.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jetpackflare.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jetpackflare_bio.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets00.ifl":["skins.vl2"],"textures/skins/jets00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jett.plaque.png":["skins.vl2"],"textures/skins/jetyellow.png":["skins.vl2"],"textures/skins/jimmy.plaque.png":["skins.vl2"],"textures/skins/kidneythief.plaque.png":["skins.vl2"],"textures/skins/leaf_bunch2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/leafydome.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/leafydome2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/light_blue_00.PNG":["skins.vl2"],"textures/skins/light_blue_01.PNG":["skins.vl2"],"textures/skins/light_blue_02.PNG":["skins.vl2"],"textures/skins/light_blue_03.PNG":["skins.vl2"],"textures/skins/light_blue_04.PNG":["skins.vl2"],"textures/skins/light_blue_generator.ifl":["skins.vl2"],"textures/skins/light_green01.PNG":["skins.vl2"],"textures/skins/light_green01.ifl":["skins.vl2"],"textures/skins/light_green02.PNG":["skins.vl2"],"textures/skins/light_green03.PNG":["skins.vl2"],"textures/skins/light_green04.PNG":["skins.vl2"],"textures/skins/light_green05.PNG":["skins.vl2"],"textures/skins/light_green06.PNG":["skins.vl2"],"textures/skins/light_red.ifl":["skins.vl2"],"textures/skins/light_red01.PNG":["skins.vl2"],"textures/skins/light_red02.png":["skins.vl2"],"textures/skins/light_red03.png":["skins.vl2"],"textures/skins/light_red04.png":["skins.vl2"],"textures/skins/light_red05.png":["skins.vl2"],"textures/skins/light_red06.png":["skins.vl2"],"textures/skins/light_red2.ifl":["skins.vl2"],"textures/skins/light_red3.ifl":["skins.vl2"],"textures/skins/lite_blue0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_fusturt.ifl":["skins.vl2"],"textures/skins/lite_fusturt01.ifl":["skins.vl2"],"textures/skins/lite_green.ifl":["skins.vl2"],"textures/skins/lite_green0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_pack_cloak.ifl":["skins.vl2"],"textures/skins/lite_red.ifl":["skins.vl2"],"textures/skins/lite_red0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_remoteTurret.ifl":["skins.vl2"],"textures/skins/lite_rpu_pack01.ifl":["skins.vl2"],"textures/skins/lite_rpu_pack02.ifl":["skins.vl2"],"textures/skins/lite_sh_pack01.ifl":["skins.vl2"],"textures/skins/lite_sh_pack02.ifl":["skins.vl2"],"textures/skins/lite_turmiss.ifl":["skins.vl2"],"textures/skins/lite_turmort.ifl":["skins.vl2"],"textures/skins/marineleaves.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/marker.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/maximus.plaque.png":["skins.vl2"],"textures/skins/mine.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mine_anti_air.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mine_anti_land.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/missile_flash.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/missing.plaque.png":["skins.vl2"],"textures/skins/mongo.plaque.png":["skins.vl2"],"textures/skins/mort000.ifl":["skins.vl2"],"textures/skins/mort000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort010.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort011.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort012.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort013.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort014.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort015.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort016.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort017.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort018.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort019.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort020.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort021.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort022.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort023.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort024.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort025.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort026.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort027.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge00.ifl":["skins.vl2"],"textures/skins/newedge00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexgren.ifl":["skins.vl2"],"textures/skins/nexgren02.ifl":["skins.vl2"],"textures/skins/nexred.ifl":["skins.vl2"],"textures/skins/nexred00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred02.ifl":["skins.vl2"],"textures/skins/nexred02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/noise.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/olddawg.plaque.png":["skins.vl2"],"textures/skins/orange.ifl":["skins.vl2"],"textures/skins/orange00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange1.ifl":["skins.vl2"],"textures/skins/orphankazrak.plaque.png":["skins.vl2"],"textures/skins/pack_ammo.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_cloak.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_cloak2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_deploy_sensor_pulse.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_energy.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep.ifl":["skins.vl2"],"textures/skins/pack_rep01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep2.ifl":["skins.vl2"],"textures/skins/pack_rep_lite.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_repair.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_senjam.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_shield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_u_c00.png":["skins.vl2"],"textures/skins/pack_u_c01.png":["skins.vl2"],"textures/skins/pack_u_c02.png":["skins.vl2"],"textures/skins/pack_u_c03.png":["skins.vl2"],"textures/skins/pack_u_c04.png":["skins.vl2"],"textures/skins/pack_u_e.ifl":["skins.vl2"],"textures/skins/pack_u_e_lite.ifl":["skins.vl2"],"textures/skins/pack_u_e_lite00.png":["skins.vl2"],"textures/skins/pack_u_e_lite01.png":["skins.vl2"],"textures/skins/pack_u_e_lite02.png":["skins.vl2"],"textures/skins/pack_u_e_lite03.png":["skins.vl2"],"textures/skins/pack_u_e_lite04.png":["skins.vl2"],"textures/skins/pack_u_e_lite05.png":["skins.vl2"],"textures/skins/pack_u_e_lite06.png":["skins.vl2"],"textures/skins/pack_upgrade_cloaking.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_energy.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_reflection.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_repair.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_repulsor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_satchel.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_satchel2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_shield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma.ifl":["skins.vl2"],"textures/skins/plasma01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasmaTurret.ifl":["skins.vl2"],"textures/skins/plasma_ammo.ifl":["skins.vl2"],"textures/skins/plasma_exhaust.ifl":["skins.vl2"],"textures/skins/plasma_muzzle.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex08.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex09.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex10.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex11.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex12.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex13.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex14.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex15.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex16.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex17.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex18.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex19.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex20.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex21.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex22.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex23.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec00.ifl":["skins.vl2"],"textures/skins/plrec01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsTur0a.ifl":["skins.vl2"],"textures/skins/plsam00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam00.ifl":["skins.vl2"],"textures/skins/plsam01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam08.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam09.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam0a.ifl":["skins.vl2"],"textures/skins/plsam10.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam11.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam12.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam13.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam14.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam15.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam16.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam17.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam18.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam19.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam20.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam21.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam22.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam23.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam24.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam25.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam26.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam27.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam28.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam29.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam30.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam31.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam32.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam33.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam34.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam35.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam36.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam37.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam38.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam39.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam40.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsamagun.ifl":["skins.vl2"],"textures/skins/plsmabolt01.ifl":["skins.vl2"],"textures/skins/plsmabolt01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsre.ifl":["skins.vl2"],"textures/skins/pod1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/porg2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/porg4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/programmers1.plaque.png":["skins.vl2"],"textures/skins/programmers2.plaque.png":["skins.vl2"],"textures/skins/purple00.ifl":["skins.vl2"],"textures/skins/purple00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/qix.plaque.png":["skins.vl2"],"textures/skins/raf.plaque.png":["skins.vl2"],"textures/skins/ratedz.plaque.png":["skins.vl2"],"textures/skins/red_blink.ifl":["skins.vl2"],"textures/skins/red_blink0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/repair_kit.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/repair_patch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/rickets.plaque.png":["skins.vl2"],"textures/skins/rusty.mmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline.ifl":["skins.vl2"],"textures/skins/scanline1.PNG":["skins.vl2"],"textures/skins/scanline1.png":["yHDTextures2.0.vl2"],"textures/skins/scanline2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline4.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline5.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline6.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenframe.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic1.ifl":["skins.vl2"],"textures/skins/screenstatic1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sensor_pulse_large.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sensor_pulse_med.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sentry.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/shark.plaque.png":["skins.vl2"],"textures/skins/shrikeflare2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/silver_post.png":["TR2final105-client.vl2"],"textures/skins/silvercube.png":["TR2final105-client.vl2"],"textures/skins/skeet.plaque.png":["skins.vl2"],"textures/skins/skin2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke.ifl":["skins.vl2"],"textures/skins/smoke00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke16.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke17.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke18.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke19.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke20.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sneaker.plaque.png":["skins.vl2"],"textures/skins/snowleopard.plaque.png":["skins.vl2"],"textures/skins/solarpanel.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sparks00.ifl":["skins.vl2"],"textures/skins/stackable.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable1L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable1M.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable1S.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable2L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable2S.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable2m.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable3L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable3m.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable3s.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable4L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable4M.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable5L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable5m.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damage.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageL1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageL2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageL3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageM1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageM2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageM3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damage_alpha.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_inventory.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_inventory_activate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_teleporter.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_teleporter_activate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_vpad.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_HMale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_LFemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_LMale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_base.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_plaque.png":["skins.vl2"],"textures/skins/switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/switchbeam.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/swolf.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/swolf.hmale.png":["skins.vl2"],"textures/skins/swolf.lfemale.png":["skins.vl2"],"textures/skins/swolf.lmale.png":["skins.vl2"],"textures/skins/swolf.mfemale.png":["skins.vl2"],"textures/skins/swolf.mmale.png":["skins.vl2"],"textures/skins/swolf.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/swolf_hmale_512.png":["skins.vl2"],"textures/skins/swolf_lfemale_512.png":["skins.vl2"],"textures/skins/swolf_lmale_512.png":["skins.vl2"],"textures/skins/swolf_mfemale_512.png":["skins.vl2"],"textures/skins/swolf_mmale_512.png":["skins.vl2"],"textures/skins/symlink.plaque.png":["skins.vl2"],"textures/skins/todesritter.plaque.png":["skins.vl2"],"textures/skins/tomin8tor.plaque.png":["skins.vl2"],"textures/skins/tr2_flag.png":["TR2final105-client.vl2"],"textures/skins/tribes1.plaque.png":["skins.vl2"],"textures/skins/turret_InOut_deploy.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_assaultTank.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_base_large.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_belly.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_light_red.ifl":["skins.vl2"],"textures/skins/turret_remote.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_sentry.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/twitch.plaque.png":["skins.vl2"],"textures/skins/uberbob.plaque.png":["skins.vl2"],"textures/skins/vaportrail.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_bomber1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_bomber2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_bomber3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_hpc1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_hpc2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_hpc3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_scout.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_grav_tank_bodyside1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_grav_tank_bodyside2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_land_mpb1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_land_mpb2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_mpb_sensor_panelsON.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vending01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/vending02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/vpad_activate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vpad_ambient.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vpad_arm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_chaingun.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_chaingun_ammocasing.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_disc.PNG":["skins.vl2"],"textures/skins/weapon_disc.png":["yHDTextures2.0.vl2"],"textures/skins/weapon_elf.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_energy.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_energy_vehicle.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_grenade_launcher.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_missile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_missile_casement.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_mortar.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_plasma1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_plasma2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_plasmathrower.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_repair.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_shocklance.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_shocklance_glow .png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_sniper.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_targeting.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/xorg2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/yellow.hflag.png":["zflags.vl2"],"textures/skins/yellow.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/sky01.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky01/sback.png":["TWL2-MapPack.vl2"],"textures/sky01/sdown.png":["TWL2-MapPack.vl2"],"textures/sky01/sfront.png":["TWL2-MapPack.vl2"],"textures/sky01/sleft.png":["TWL2-MapPack.vl2"],"textures/sky01/sright.png":["TWL2-MapPack.vl2"],"textures/sky01/sup.png":["TWL2-MapPack.vl2"],"textures/sky03.dml":["TWL-MapPack.vl2"],"textures/sky03/TR1_Cloud1.png":["TWL-MapPack.vl2"],"textures/sky03/TR1_Cloud2.png":["TWL-MapPack.vl2"],"textures/sky03/fback.png":["TWL-MapPack.vl2"],"textures/sky03/fdown.png":["TWL-MapPack.vl2"],"textures/sky03/ffront.png":["TWL-MapPack.vl2"],"textures/sky03/fleft.png":["TWL-MapPack.vl2"],"textures/sky03/fright.png":["TWL-MapPack.vl2"],"textures/sky03/fup.png":["TWL-MapPack.vl2"],"textures/sky121.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky127.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky156.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky_badlands_cloudy.dml":["textures.vl2"],"textures/sky_badlands_starrynight.dml":["textures.vl2"],"textures/sky_beachblitz.dml":["TWL-MapPack.vl2"],"textures/sky_desert_blue.dml":["textures.vl2"],"textures/sky_desert_brown.dml":["textures.vl2"],"textures/sky_desert_starrynight.dml":["textures.vl2"],"textures/sky_ice_blue.dml":["textures.vl2"],"textures/sky_ice_cloak.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky_ice_starrynight.dml":["textures.vl2"],"textures/sky_lava_brown.dml":["textures.vl2"],"textures/sky_lava_starrynight.dml":["textures.vl2"],"textures/sky_lush_blue.dml":["textures.vl2"],"textures/sky_lush_morestars.dml":["textures.vl2"],"textures/sky_lush_starrynight.dml":["textures.vl2"],"textures/sky_volcanic_starrynight.dml":["textures.vl2"],"textures/small_circle.PNG":["textures.vl2"],"textures/small_cross.png":["textures.vl2"],"textures/small_diamond.png":["textures.vl2"],"textures/small_square.png":["textures.vl2"],"textures/small_triangle.png":["textures.vl2"],"textures/snowflake8x8.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/snowflakes.dml":["textures.vl2"],"textures/snowtest.dml":["textures.vl2"],"textures/space/TR1_Cloud1.png":["TWL-MapPack.vl2"],"textures/space/TR1_Cloud2.png":["TWL-MapPack.vl2"],"textures/space/xnight2_bk.png":["TWL-MapPack.vl2"],"textures/space/xnight2_dn.png":["TWL-MapPack.vl2"],"textures/space/xnight2_ft.png":["TWL-MapPack.vl2"],"textures/space/xnight2_lf.png":["TWL-MapPack.vl2"],"textures/space/xnight2_rt.png":["TWL-MapPack.vl2"],"textures/space/xnight2_up.png":["TWL-MapPack.vl2"],"textures/space_14.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_16.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_17.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_18.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_19.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_3.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_5.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/special/BlueImpact.PNG":["textures.vl2"],"textures/special/BlueImpact.png":["yHDTextures2.0.vl2"],"textures/special/ELFBeam.PNG":["textures.vl2"],"textures/special/ELFBeam.png":["yHDTextures2.0.vl2"],"textures/special/ELFLightning.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0000.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0002.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0004.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0006.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0008.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0010.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0012.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0014.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0016.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0018.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0020.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0022.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0024.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0026.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0028.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0030.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0032.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0034.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0036.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0038.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0040.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0042.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0044.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0046.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0048.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0050.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0052.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/GameGrid.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/LensFlare/Flare00.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/LightningBlur.PNG":["textures.vl2"],"textures/special/LightningBlur.png":["yHDTextures2.0.vl2"],"textures/special/Shocklance_effect01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Shocklance_effect02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/bigSmoke.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_001.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_002.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_003.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_004.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_005.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_006.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_007.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_008.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_009.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_010.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_011.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_012.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bigSpark.PNG":["textures.vl2"],"textures/special/bigSpark.png":["yHDTextures2.0.vl2"],"textures/special/blasterBolt.PNG":["textures.vl2","zblasterfix.vl2"],"textures/special/blasterBolt.png":["yHDTextures2.0.vl2"],"textures/special/blasterBoltCross.PNG":["textures.vl2","zblasterfix.vl2"],"textures/special/blasterBoltCross.png":["yHDTextures2.0.vl2"],"textures/special/blasterHit.PNG":["textures.vl2"],"textures/special/blasterHit.png":["yHDTextures2.0.vl2"],"textures/special/bluespark.PNG":["textures.vl2"],"textures/special/bluespark.png":["yHDTextures2.0.vl2"],"textures/special/bubbles.PNG":["textures.vl2"],"textures/special/bubbles.png":["yHDTextures2.0.vl2"],"textures/special/bullethole1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole5.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole6.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/chuteTexture.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloakTexture.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash5.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash6.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash7.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash8.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/crescent3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/crescent4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/decal.dml":["textures.vl2"],"textures/special/droplet.PNG":["textures.vl2"],"textures/special/droplet.png":["yHDTextures2.0.vl2"],"textures/special/expFlare.PNG":["textures.vl2"],"textures/special/expFlare.png":["yHDTextures2.0.vl2"],"textures/special/flare.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/flare3.PNG":["textures.vl2"],"textures/special/flare3.png":["yHDTextures2.0.vl2"],"textures/special/flareSpark.PNG":["textures.vl2"],"textures/special/flareSpark.png":["yHDTextures2.0.vl2"],"textures/special/footprints/H_bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/H_male.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/L_bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/L_male.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/M_bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/M_male.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/generic_reflect.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/generic_scorch.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/glass.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/special/gradient.PNG":["textures.vl2"],"textures/special/gradient.png":["yHDTextures2.0.vl2"],"textures/special/grainy.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/jammermap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/jetExhaust02.PNG":["textures.vl2"],"textures/special/jetExhaust02.png":["yHDTextures2.0.vl2"],"textures/special/landSpikeBolt.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/landSpikeBoltCross.PNG":["textures.vl2"],"textures/special/landSpikeBoltCross.png":["yHDTextures2.0.vl2"],"textures/special/laserrip01.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip02.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip03.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip04.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip05.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip06.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip07.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip08.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip09.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lavadeath_1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lavadeath_2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lavareflect.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lightFalloffMono.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lightning1blur.PNG":["textures.vl2"],"textures/special/lightning1blur.png":["yHDTextures2.0.vl2"],"textures/special/lightning1frame1.PNG":["textures.vl2"],"textures/special/lightning1frame1.png":["yHDTextures2.0.vl2"],"textures/special/lightning1frame2.PNG":["textures.vl2"],"textures/special/lightning1frame2.png":["yHDTextures2.0.vl2"],"textures/special/lightning1frame3.PNG":["textures.vl2"],"textures/special/lightning1frame3.png":["yHDTextures2.0.vl2"],"textures/special/lightning2blur.PNG":["textures.vl2"],"textures/special/lightning2blur.png":["yHDTextures2.0.vl2"],"textures/special/lightning2frame1.PNG":["textures.vl2"],"textures/special/lightning2frame1.png":["yHDTextures2.0.vl2"],"textures/special/lightning2frame2.PNG":["textures.vl2"],"textures/special/lightning2frame2.png":["yHDTextures2.0.vl2"],"textures/special/lightning2frame3.PNG":["textures.vl2"],"textures/special/lightning2frame3.png":["yHDTextures2.0.vl2"],"textures/special/nonlingradient.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/pulse.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/redbump2.PNG":["textures.vl2"],"textures/special/redbump2.png":["yHDTextures2.0.vl2"],"textures/special/redflare.png":["textures.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/special/shieldenvmap.PNG":["textures.vl2"],"textures/special/shieldenvmap.png":["yHDTextures2.0.vl2"],"textures/special/shieldmap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLanceZap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLightning01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLightning02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLightning03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shocklanceHit.PNG":["textures.vl2"],"textures/special/shocklanceHit.png":["yHDTextures2.0.vl2"],"textures/special/shockwave4.PNG":["textures.vl2"],"textures/special/shockwave4.png":["yHDTextures2.0.vl2"],"textures/special/shockwave5.PNG":["textures.vl2"],"textures/special/shockwave5.png":["yHDTextures2.0.vl2"],"textures/special/shrikeBolt.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shrikeBoltCross.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/skyLightning.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/sniper00.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/spark00.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/stationGlow.PNG":["textures.vl2"],"textures/special/stationGlow.png":["yHDTextures2.0.vl2"],"textures/special/stationLight.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/stationLight2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/tracer00.PNG":["textures.vl2"],"textures/special/tracer00.png":["yHDTextures2.0.vl2"],"textures/special/tracercross.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/trigger.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/underwaterSpark.PNG":["textures.vl2"],"textures/special/underwaterSpark.png":["yHDTextures2.0.vl2"],"textures/special/water2.PNG":["textures.vl2"],"textures/special/water2.png":["yHDTextures2.0.vl2"],"textures/special/watertail1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/watertail2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/watertail3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/watertail4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/whiteAlpha0.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/whiteAlpha255.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/whiteNoAlpha.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/stagnant_water.dml":["textures.vl2"],"textures/starrynite.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sunnight.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/taco/taco.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/template.dml":["textures.vl2"],"textures/terrain.BadLands.DirtBumpy.dml":["textures.vl2"],"textures/terrain.BadLands.DirtChipped.dml":["textures.vl2"],"textures/terrain.BadLands.DirtYellow.dml":["textures.vl2"],"textures/terrain.BadLands.DirtYellowCracked.dml":["textures.vl2"],"textures/terrain.BadLands.RockBrown.dml":["textures.vl2"],"textures/terrain.BadLands.RockChipped.dml":["textures.vl2"],"textures/terrain.BadLands.RockCracked.dml":["textures.vl2"],"textures/terrain.DesertWorld.RockFractured.dml":["textures.vl2"],"textures/terrain.DesertWorld.RockSmooth.dml":["textures.vl2"],"textures/terrain.DesertWorld.Sand.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandBurnt.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandDark.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandOrange.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandOxidized.dml":["textures.vl2"],"textures/terrain.FlatShade.Blue.dml":["textures.vl2"],"textures/terrain.FlatShade.Green.dml":["textures.vl2"],"textures/terrain.FlatShade.Purple.dml":["textures.vl2"],"textures/terrain.FlatShade.Red.dml":["textures.vl2"],"textures/terrain.FlatShade.White.dml":["textures.vl2"],"textures/terrain.FrequencyTest.dml":["textures.vl2"],"textures/terrain.IceWorld.Ice.dml":["textures.vl2"],"textures/terrain.IceWorld.RockBlue.dml":["textures.vl2"],"textures/terrain.IceWorld.Snow.dml":["textures.vl2"],"textures/terrain.IceWorld.SnowIce.dml":["textures.vl2"],"textures/terrain.IceWorld.SnowRock.dml":["textures.vl2"],"textures/terrain.LavaWorld.Crust.dml":["textures.vl2"],"textures/terrain.LavaWorld.LavaRockHot.dml":["textures.vl2"],"textures/terrain.LavaWorld.MuddyAsh.dml":["textures.vl2"],"textures/terrain.LushWorld.DirtMossy.dml":["textures.vl2"],"textures/terrain.LushWorld.GrassDark.dml":["textures.vl2"],"textures/terrain.LushWorld.GrassLight.dml":["textures.vl2"],"textures/terrain.LushWorld.GrassMixed.dml":["textures.vl2"],"textures/terrain.LushWorld.Lakebed.dml":["textures.vl2"],"textures/terrain.LushWorld.RockLight.dml":["textures.vl2"],"textures/terrain.LushWorld.RockMossy.dml":["textures.vl2"],"textures/terrain.Outline.dml":["textures.vl2"],"textures/terrain.mask.dml":["textures.vl2"],"textures/terrain/Badlands.DirtBumpy.png":["textures.vl2"],"textures/terrain/Badlands.DirtChipped.png":["textures.vl2"],"textures/terrain/Badlands.DirtYellow.png":["textures.vl2"],"textures/terrain/Badlands.DirtYellowCracked.png":["textures.vl2"],"textures/terrain/Badlands.RockBrown.png":["textures.vl2"],"textures/terrain/Badlands.RockChipped.png":["textures.vl2"],"textures/terrain/Badlands.RockCracked.png":["textures.vl2"],"textures/terrain/Badlands.Rockcrackedcopper.png":["textures.vl2"],"textures/terrain/Bleed.GrassLight.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Bleed.GrassMixed.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Bleed.RockMossy.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Bleed.RockSmooth.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CB1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CB2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CBgravel.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CBtrails.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Default.png":["textures.vl2"],"textures/terrain/DesertWorld.RockFractured.png":["textures.vl2"],"textures/terrain/DesertWorld.RockSmooth.png":["textures.vl2"],"textures/terrain/DesertWorld.Sand.png":["textures.vl2"],"textures/terrain/DesertWorld.SandBurnt.png":["textures.vl2"],"textures/terrain/DesertWorld.SandDark.png":["textures.vl2"],"textures/terrain/DesertWorld.SandOrange.png":["textures.vl2"],"textures/terrain/DesertWorld.SandOxidized.png":["textures.vl2"],"textures/terrain/DesertWorld.TR2Sand.png":["TR2final105-client.vl2"],"textures/terrain/Eep.MoonDirt.PNG":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Eep.MoonDirtDark.PNG":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_BeachBlitzSE_lushworld.beachsand.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_CrownSE_lushworld.beachsand.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_EpicratesDeluxeSE_tropical1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_EpicratesDeluxeSE_ugly2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoGlacier.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoRock.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoRock2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoSnow.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_PuliVeivariSE_NyctoGlacier.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/GMD.DarkRock.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/terrain/GMD.DirtMossy.png":["Classic_maps_v1.vl2"],"textures/terrain/GMD.GrassLight.png":["Classic_maps_v1.vl2"],"textures/terrain/GMD.GrassMixed.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/terrain/GMD.LightSand.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/terrain/GMD.SandBurnt.png":["Classic_maps_v1.vl2"],"textures/terrain/IceWorld.Ice.png":["textures.vl2"],"textures/terrain/IceWorld.RockBlue.png":["textures.vl2"],"textures/terrain/IceWorld.Snow.png":["textures.vl2"],"textures/terrain/IceWorld.SnowIce.png":["textures.vl2"],"textures/terrain/IceWorld.SnowRock.png":["textures.vl2"],"textures/terrain/LavaWorld.Crust.png":["textures.vl2"],"textures/terrain/LavaWorld.LavaRockHot.png":["textures.vl2"],"textures/terrain/LavaWorld.MuddyAsh.png":["textures.vl2"],"textures/terrain/LavaWorld.RockBlack.PNG":["textures.vl2"],"textures/terrain/LegendsLightSand.png":["TWL-MapPack.vl2"],"textures/terrain/LushWorld.DirtMossy.png":["textures.vl2"],"textures/terrain/LushWorld.GrassDark.png":["textures.vl2"],"textures/terrain/LushWorld.GrassLight.png":["textures.vl2"],"textures/terrain/LushWorld.GrassMixed.png":["textures.vl2"],"textures/terrain/LushWorld.Lakebed.png":["textures.vl2"],"textures/terrain/LushWorld.RockLight.png":["textures.vl2"],"textures/terrain/LushWorld.RockMossy.png":["textures.vl2"],"textures/terrain/LushWorld.TR2DirtMossy.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2GrassDark.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2GrassLight.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2GrassMixed.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2RockLight.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2RockMossy.png":["TR2final105-client.vl2"],"textures/terrain/NyctoGlacier.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/NyctoRock.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/NyctoRock2.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/NyctoSnow.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/RockLight.png":["TWL-MapPack.vl2"],"textures/terrain/TRIgreystone10.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIgreystone7.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIlava_rock.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIstone_chip.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIsub_sand.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/abbbb.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/acccc.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/adesert_cracks_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/adesert_sand2_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/aeee.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/brown_Dirt02.png":["TWL-MapPack.vl2"],"textures/terrain/brown_Dirt05.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/brown_DirtRock01.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_alien_crackedsand.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_alien_sand.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/desert_cracks_s.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/desert_sand_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/grass_autumn_red_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/grass_ground_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/green_GrassRock005.png":["TWL-MapPack.vl2"],"textures/terrain/green_SnowyGrass001.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/greenrock21.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/infbutch_Rock02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/island_sand2_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/island_sand_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_felsen1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_felsen2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_grass.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schnee.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schnee4.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schneefelsen.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schneefelsen2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schneefelsen3.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lava_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lava_mars_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lushworld.beachsand.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lushworld.lakesand.png":["Classic_maps_v1.vl2"],"textures/terrain/mmd-1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mmd-2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mmd-3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mmd-5.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/moss_ground_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mxrock0.png":["TWL-MapPack.vl2"],"textures/terrain/mxrock2tu.png":["TWL-MapPack.vl2"],"textures/terrain/mxrock2tv.png":["TWL-MapPack.vl2"],"textures/terrain/ril.darkrock.png":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/ril.darkrock1.png":["Classic_maps_v1.vl2"],"textures/terrain/rilk.shingledrock.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/rilke.sand.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/rockwall.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/seawaterfull2.PNG":["TR2final105-client.vl2"],"textures/terrain/snow2_s.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_a0.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_a2.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_brownRock00.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_grass001.png":["TWL-MapPack.vl2"],"textures/terrain/snow_rock_5.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tes_mystery1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tes_mystery2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tes_test.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tropical1.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/ugly2.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/wateregypt1.PNG":["TR2final105-client.vl2"],"textures/terrain/watr-icyblue2.PNG":["TR2final105-client.vl2"],"textures/terrainTiles/Frequency1.png":["textures.vl2"],"textures/terrainTiles/Frequency2.png":["textures.vl2"],"textures/terrainTiles/Frequency3.png":["textures.vl2"],"textures/terrainTiles/Frequency4.png":["textures.vl2"],"textures/terrainTiles/Frequency5.png":["textures.vl2"],"textures/terrainTiles/Frequency6.png":["textures.vl2"],"textures/terrainTiles/SANDDK1.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK2.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK3.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK4.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK5.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG1.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG2.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG3.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG4.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG5.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt1.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt2.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt3.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt4.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt5.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid1.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid2.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid3.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid4.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid5.PNG":["textures.vl2"],"textures/terrainTiles/blue.png":["textures.vl2"],"textures/terrainTiles/crust1.png":["textures.vl2"],"textures/terrainTiles/crust2.png":["textures.vl2"],"textures/terrainTiles/crust3.png":["textures.vl2"],"textures/terrainTiles/crust4.png":["textures.vl2"],"textures/terrainTiles/crust5.png":["textures.vl2"],"textures/terrainTiles/crust6.png":["textures.vl2"],"textures/terrainTiles/drtBumpy.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy01.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy02.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy03.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy04.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy05.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped01.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped02.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped03.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped04.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped05.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo01.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo02.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo03.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo04.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk0.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk01.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk02.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk03.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk04.PNG":["textures.vl2"],"textures/terrainTiles/grassDk1.PNG":["textures.vl2"],"textures/terrainTiles/grassDk2.PNG":["textures.vl2"],"textures/terrainTiles/grassDk3.PNG":["textures.vl2"],"textures/terrainTiles/grassDk4.PNG":["textures.vl2"],"textures/terrainTiles/grassDk5.PNG":["textures.vl2"],"textures/terrainTiles/grassDk6.PNG":["textures.vl2"],"textures/terrainTiles/grassLt1.PNG":["textures.vl2"],"textures/terrainTiles/grassLt2.PNG":["textures.vl2"],"textures/terrainTiles/grassLt3.PNG":["textures.vl2"],"textures/terrainTiles/grassLt4.PNG":["textures.vl2"],"textures/terrainTiles/grassLt5.PNG":["textures.vl2"],"textures/terrainTiles/grassMix1.PNG":["textures.vl2"],"textures/terrainTiles/grassMix2.PNG":["textures.vl2"],"textures/terrainTiles/grassMix3.PNG":["textures.vl2"],"textures/terrainTiles/grassMix4.PNG":["textures.vl2"],"textures/terrainTiles/grassMix5.PNG":["textures.vl2"],"textures/terrainTiles/grassMix6.PNG":["textures.vl2"],"textures/terrainTiles/grassMix7.PNG":["textures.vl2"],"textures/terrainTiles/green.png":["textures.vl2"],"textures/terrainTiles/ice01.png":["textures.vl2"],"textures/terrainTiles/ice02.png":["textures.vl2"],"textures/terrainTiles/ice03.png":["textures.vl2"],"textures/terrainTiles/ice04.png":["textures.vl2"],"textures/terrainTiles/ice05.png":["textures.vl2"],"textures/terrainTiles/ice06.png":["textures.vl2"],"textures/terrainTiles/ice07.png":["textures.vl2"],"textures/terrainTiles/ice08.png":["textures.vl2"],"textures/terrainTiles/ice09.png":["textures.vl2"],"textures/terrainTiles/ice10.png":["textures.vl2"],"textures/terrainTiles/icesnow1.png":["textures.vl2"],"textures/terrainTiles/icesnow2.png":["textures.vl2"],"textures/terrainTiles/icesnow3.png":["textures.vl2"],"textures/terrainTiles/icesnow4.png":["textures.vl2"],"textures/terrainTiles/icesnow5.png":["textures.vl2"],"textures/terrainTiles/icesnow6.png":["textures.vl2"],"textures/terrainTiles/lavarockhot1.png":["textures.vl2"],"textures/terrainTiles/lavarockhot2.png":["textures.vl2"],"textures/terrainTiles/lavarockhot3.png":["textures.vl2"],"textures/terrainTiles/lavarockhot4.png":["textures.vl2"],"textures/terrainTiles/lavarockhot5.png":["textures.vl2"],"textures/terrainTiles/mask.0001.png":["textures.vl2"],"textures/terrainTiles/mask.0010.png":["textures.vl2"],"textures/terrainTiles/mask.0011.png":["textures.vl2"],"textures/terrainTiles/mask.0100.png":["textures.vl2"],"textures/terrainTiles/mask.0101.png":["textures.vl2"],"textures/terrainTiles/mask.0110.png":["textures.vl2"],"textures/terrainTiles/mask.0111.png":["textures.vl2"],"textures/terrainTiles/molten1.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt1.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt2.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt3.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt4.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt5.PNG":["textures.vl2"],"textures/terrainTiles/mossRock1.PNG":["textures.vl2"],"textures/terrainTiles/mossRock2.PNG":["textures.vl2"],"textures/terrainTiles/mossRock3.PNG":["textures.vl2"],"textures/terrainTiles/mossRock4.PNG":["textures.vl2"],"textures/terrainTiles/mossRock5.PNG":["textures.vl2"],"textures/terrainTiles/muddyash1.PNG":["textures.vl2"],"textures/terrainTiles/muddyash2.PNG":["textures.vl2"],"textures/terrainTiles/muddyash3.PNG":["textures.vl2"],"textures/terrainTiles/muddyash4.PNG":["textures.vl2"],"textures/terrainTiles/muddyash5.PNG":["textures.vl2"],"textures/terrainTiles/muddyash6.PNG":["textures.vl2"],"textures/terrainTiles/outline.png":["textures.vl2"],"textures/terrainTiles/purple.png":["textures.vl2"],"textures/terrainTiles/red.png":["textures.vl2"],"textures/terrainTiles/rockBrCrak.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak01.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak02.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak03.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak04.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak05.PNG":["textures.vl2"],"textures/terrainTiles/rockLt1.PNG":["textures.vl2"],"textures/terrainTiles/rockLt2.PNG":["textures.vl2"],"textures/terrainTiles/rockLt3.PNG":["textures.vl2"],"textures/terrainTiles/rockLt4.PNG":["textures.vl2"],"textures/terrainTiles/rockLt5.PNG":["textures.vl2"],"textures/terrainTiles/rockblue.png":["textures.vl2"],"textures/terrainTiles/rockblue1.png":["textures.vl2"],"textures/terrainTiles/rockblue2.png":["textures.vl2"],"textures/terrainTiles/rockblue3.png":["textures.vl2"],"textures/terrainTiles/rockblue4.png":["textures.vl2"],"textures/terrainTiles/rockblue5.png":["textures.vl2"],"textures/terrainTiles/rockblue6.png":["textures.vl2"],"textures/terrainTiles/rockbrown.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown01.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown02.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown03.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown04.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown05.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd01.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd02.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd03.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd04.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd05.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak1.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak2.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak3.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak4.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak5.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak6.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth1.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth2.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth3.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth4.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth5.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth6.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth6x.PNG":["textures.vl2"],"textures/terrainTiles/sandorng1.PNG":["textures.vl2"],"textures/terrainTiles/sandorng2.PNG":["textures.vl2"],"textures/terrainTiles/sandorng3.PNG":["textures.vl2"],"textures/terrainTiles/sandorng4.PNG":["textures.vl2"],"textures/terrainTiles/sandorng5.PNG":["textures.vl2"],"textures/terrainTiles/seaLt1.PNG":["textures.vl2"],"textures/terrainTiles/seaLt2.PNG":["textures.vl2"],"textures/terrainTiles/seaLt3.PNG":["textures.vl2"],"textures/terrainTiles/seaLt4.PNG":["textures.vl2"],"textures/terrainTiles/seaLt5.PNG":["textures.vl2"],"textures/terrainTiles/snow1.png":["textures.vl2"],"textures/terrainTiles/snow2.png":["textures.vl2"],"textures/terrainTiles/snow3.png":["textures.vl2"],"textures/terrainTiles/snow4.png":["textures.vl2"],"textures/terrainTiles/snow5.png":["textures.vl2"],"textures/terrainTiles/snow6.png":["textures.vl2"],"textures/terrainTiles/snowrock1.png":["textures.vl2"],"textures/terrainTiles/snowrock2.png":["textures.vl2"],"textures/terrainTiles/snowrock3.png":["textures.vl2"],"textures/terrainTiles/snowrock4.png":["textures.vl2"],"textures/terrainTiles/snowrock5.png":["textures.vl2"],"textures/terrainTiles/snowrock6.png":["textures.vl2"],"textures/terrainTiles/white.png":["textures.vl2"],"textures/tesla.dml":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_bk.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_dn.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_fr.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_lf.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_rt.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_up.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_DN.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_bk.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_fr.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_lf.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_rt.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_up.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/texticons/Cred_Logo1.png":["textures.vl2"],"textures/texticons/Cred_logo5.png":["textures.vl2"],"textures/texticons/Flag_Beagle.jpg":["textures.vl2"],"textures/texticons/Flag_Bioderm.jpg":["textures.vl2"],"textures/texticons/Flag_DSword.jpg":["textures.vl2"],"textures/texticons/Flag_Phoenix.jpg":["textures.vl2"],"textures/texticons/Flag_Starwolf.jpg":["textures.vl2"],"textures/texticons/Flag_T2.jpg":["textures.vl2"],"textures/texticons/Heavy.jpg":["textures.vl2"],"textures/texticons/Logo_small_DSword.jpg":["textures.vl2"],"textures/texticons/Logo_small_Inferno.jpg":["textures.vl2"],"textures/texticons/Logo_small_Phoenix.jpg":["textures.vl2"],"textures/texticons/Logo_small_Starwolf.jpg":["textures.vl2"],"textures/texticons/Logo_small_Storm.jpg":["textures.vl2"],"textures/texticons/Logo_small_beagle.jpg":["textures.vl2"],"textures/texticons/Logo_small_bioderm.jpg":["textures.vl2"],"textures/texticons/TC_logo1.bm8":["T2csri.vl2"],"textures/texticons/TC_logo1.png":["T2csri.vl2"],"textures/texticons/bullet_1.png":["textures.vl2"],"textures/texticons/bullet_2.png":["textures.vl2"],"textures/texticons/dpub/DPUB_logo.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_BEthinking.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Beer.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Dermfused.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Spook.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Turkey.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Xmas.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Xoxo.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/mute_speaker.png":["textures.vl2"],"textures/texticons/sidebar1.jpg":["textures.vl2"],"textures/texticons/sidebar2.jpg":["textures.vl2"],"textures/texticons/sidebar3.jpg":["textures.vl2"],"textures/texticons/sys_op_eye.png":["textures.vl2"],"textures/texticons/twb/twb_BE_FLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_FMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_MLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_MMed.JPG":["textures.vl2"],"textures/texticons/twb/twb_Bioderm.jpg":["textures.vl2"],"textures/texticons/twb/twb_Bioderm_Light.jpg":["textures.vl2"],"textures/texticons/twb/twb_Bioderm_Medium.jpg":["textures.vl2"],"textures/texticons/twb/twb_Blaster.jpg":["textures.vl2"],"textures/texticons/twb/twb_BloodEagle.jpg":["textures.vl2"],"textures/texticons/twb/twb_Chaingun.jpg":["textures.vl2"],"textures/texticons/twb/twb_DS_FLight.JPG":["textures.vl2"],"textures/texticons/twb/twb_DS_Fmed.jpg":["textures.vl2"],"textures/texticons/twb/twb_DS_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_DS_MMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_DiamondSword.JPG":["textures.vl2"],"textures/texticons/twb/twb_Elfprojector.jpg":["textures.vl2"],"textures/texticons/twb/twb_Fusionmortar.jpg":["textures.vl2"],"textures/texticons/twb/twb_Grenadelauncher.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_FLight.JPG":["textures.vl2"],"textures/texticons/twb/twb_HR_FMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_MLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_MMed.JPG":["textures.vl2"],"textures/texticons/twb/twb_Harbingers.JPG":["textures.vl2"],"textures/texticons/twb/twb_Havoc.JPG":["textures.vl2"],"textures/texticons/twb/twb_Laserrifle.jpg":["textures.vl2"],"textures/texticons/twb/twb_Lineup.jpg":["textures.vl2"],"textures/texticons/twb/twb_Missilelauncher.jpg":["textures.vl2"],"textures/texticons/twb/twb_Plasmarifle.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_FLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_FMedium.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_MLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_MMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_Shrike.jpg":["textures.vl2"],"textures/texticons/twb/twb_Spinfusor.jpg":["textures.vl2"],"textures/texticons/twb/twb_Starwolves.JPG":["textures.vl2"],"textures/texticons/twb/twb_TRIBES2.jpg":["textures.vl2"],"textures/texticons/twb/twb_Thundersword.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_02.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_04.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_05.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_06.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_08.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_10.jpg":["textures.vl2"],"textures/texticons/twb/twb_blowngen_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_inferno_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_inferno_02.jpg":["textures.vl2"],"textures/texticons/twb/twb_inferno_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_lakedebris_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_lakedebris_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_shocklance.jpg":["textures.vl2"],"textures/texticons/twb/twb_soclose.jpg":["textures.vl2"],"textures/texticons/twb/twb_starwolf_fem.jpg":["textures.vl2"],"textures/texticons/twb/twb_starwolf_shrike.jpg":["textures.vl2"],"textures/texticons/twb/twb_wateraction_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_waterdemise_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_waterdemise_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_waterdemise_04.jpg":["textures.vl2"],"textures/texticons/twb/twb_woohoo_01.jpg":["textures.vl2"],"textures/tn_logo.png":["T2csri.vl2"],"textures/tyre.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/v5planet/skies/Starfallen_BK.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_FR.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_LF.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_RT.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_UP.png":["Classic_maps_v1.vl2"],"textures/violet.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/winterskyday.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/xnight.dml":["TWL-MapPack.vl2"],"tournament/browser.cs":["tournamentNetClient2.vl2"],"tournament/login.cs":["tournamentNetClient2.vl2"],"tournament/settings.cs":["tournamentNetClient2.vl2"],"zz_classic_client_v4.txt":["zz_Classic_client_v1.vl2"]}');function u(){return Object.keys(n).sort()}var v=t(9323),d=t(6538),p=t.n(d);let o=/^ (DisplayName|MissionTypes) = (.+)$/,c=/^--- ([A-Z ]+) BEGIN ---$/,x=/^--- ([A-Z ]+) END ---$/;function*_(s){for(let e of s)for(let s of(yield e,_(e.children)))yield s}let g="/t2-mapper",k="".concat(g,"/base/");function m(s,e){let t;s=function(s){if(n[s])return s;let e=u(),t=s.toLowerCase(),i=e.find(s=>s.toLowerCase()===t);if(i)return i;if(s.startsWith("textures/")){let s=e.find(s=>s.replace(/^(textures\/)((lush|desert|badlands|lava|ice|jaggedclaw|terrainTiles)\/)/,"$1").toLowerCase()===t);if(s)return s}return s}(s);try{t=function(s){let e=n[s];if(e&&e.length>0)return e[e.length-1];throw Error("Resource not found in manifest: ".concat(s))}(s)}catch(s){if(e)return e;throw s}return t?"".concat(k,"@vl2/").concat(t,"/").concat(s):"".concat(k).concat(s)}async function h(s){let e=m("textures/".concat(s)),t=await fetch(e);return(await t.text()).split(/(?:\r\n|\n|\r)/).map(s=>"textures/".concat(s.trim().replace(/\.png$/i,""),".png"))}async function T(s){let e=await fetch(m("missions/".concat(s,".mis")));return function(s){var e,t,i,r,a,l,n,u;s=s.replace(/(\/\/--- OBJECT WRITE END ---\s+)(?:.|[\r\n])*$/,"$1");let v=/(\/\/--- OBJECT WRITE BEGIN ---\s+)/.exec(s),d=/[\r\n]new SimGroup/.exec(s);s=s.slice(0,v.index+v[1].length)+s.slice(d.index),v=/(\/\/--- OBJECT WRITE BEGIN ---\s+)/.exec(s);let _=/(\/\/--- MISSION STRING END ---\s+)/.exec(s);_&&(s=s.slice(0,_.index+_[1].length)+s.slice(v.index));let g=p().parse(s),k={name:null,definitions:[]},m={},h=[];for(let s of g)if("comment"===s.type){let e=function(s){let e;return(e=s.match(c))?{type:"sectionBegin",name:e[1]}:(e=s.match(x))?{type:"sectionEnd",name:e[1]}:(e=s.match(o))?{type:"definition",identifier:e[1],value:e[2]}:null}(s.text);if(e)switch(e.type){case"definition":k.name?k.definitions.push(s):m[e.identifier]=e.value;break;case"sectionEnd":if(e.name!==k.name)throw Error("Ending unmatched section!");(k.name||k.definitions.length)&&h.push(k),k={name:null,definitions:[]};break;case"sectionBegin":if(k.name)throw Error("Already in a section!");(k.name||k.definitions.length)&&h.push(k),k={name:e.name,definitions:[]}}else k.definitions.push(s)}else k.definitions.push(s);return(k.name||k.definitions.length)&&h.push(k),{displayName:null!=(a=m.DisplayName)?a:null,missionTypes:null!=(l=null==(e=m.MissionTypes)?void 0:e.split(" "))?l:[],missionQuote:null!=(n=null==(t=h.find(s=>"MISSION QUOTE"===s.name))?void 0:t.definitions.filter(s=>"comment"===s.type).map(s=>s.text).join("\n"))?n:null,missionString:null!=(u=null==(i=h.find(s=>"MISSION STRING"===s.name))?void 0:i.definitions.filter(s=>"comment"===s.type).map(s=>s.text).join("\n"))?u:null,objects:null==(r=h.find(s=>"OBJECT WRITE"===s.name))?void 0:r.definitions.filter(s=>"instance"===s.type).map(s=>(function s(e){return{className:e.className,instanceName:e.instanceName,properties:e.body.filter(s=>"definition"===s.type).map(s=>{switch(s.value.type){case"string":case"number":case"boolean":return{target:s.target,value:s.value.value};case"reference":return{target:s.target,value:s.value};default:throw Error("Unhandled value type: ".concat(s.target.name," = ").concat(s.value.type))}}),children:e.body.filter(s=>"instance"===s.type).map(e=>s(e))}})(s)),globals:h.filter(s=>!s.name).flatMap(s=>s.definitions.filter(s=>"definition"===s.type))}}(await e.text())}async function f(s){let e=await fetch(m("terrains/".concat(s)));return function(s){let e=new DataView(s),t=0,i=e.getUint8(t++),r=new Uint16Array(65536),a=[],l=s=>{let i="";for(let r=0;r0&&a.push(r)}let n=[];for(let s of a){let s=new Uint8Array(65536);for(let i=0;i<65536;i++){var u=e.getUint8(t++);s[i]=u}n.push(s)}return{version:i,textureNames:a,heightMap:r,alphaMaps:n}}(await e.arrayBuffer())}let L=new Set(["SkiFree","SkiFree_Daily","SkiFree_Randomizer"]),D=u().map(s=>s.match(/^missions\/(.+)\.mis$/)).filter(Boolean).map(s=>s[1]).filter(s=>!L.has(s));function b(){let s=(0,r.useRef)(null),[e,t]=(0,r.useState)("TWL2_WoodyMyrk"),[n,u]=(0,r.useState)(!0),d=(0,r.useRef)({});return(0,r.useEffect)(()=>{let e=s.current,t=new a.JeP({canvas:e,antialias:!0}),i=new l.Tap,r=new v.B,n=new l.Z58,u=new l.ubm(75,e.clientWidth/e.clientHeight,.1,2e3),p=new l.dth("rgba(209, 237, 255, 1)","rgba(186, 200, 181, 1)",2);n.add(p),u.position.set(0,100,512);let o={w:!1,a:!1,s:!1,d:!1,shift:!1,space:!1},c=s=>{"KeyW"===s.code&&(o.w=!0),"KeyA"===s.code&&(o.a=!0),"KeyS"===s.code&&(o.s=!0),"KeyD"===s.code&&(o.d=!0),("ShiftLeft"===s.code||"ShiftRight"===s.code)&&(o.shift=!0),"Space"===s.code&&(o.space=!0)},x=s=>{"KeyW"===s.code&&(o.w=!1),"KeyA"===s.code&&(o.a=!1),"KeyS"===s.code&&(o.s=!1),"KeyD"===s.code&&(o.d=!1),("ShiftLeft"===s.code||"ShiftRight"===s.code)&&(o.shift=!1),"Space"===s.code&&(o.space=!1)};document.addEventListener("keydown",c),document.addEventListener("keyup",x);let _=!1,g=new l.O9p(0,0,0,"YXZ"),k=Math.PI/2,m=s=>{if(!_)return;let e=s.movementX||0,t=s.movementY||0;g.setFromQuaternion(u.quaternion),g.y-=.002*e,g.x-=.002*t,g.x=Math.max(-k,Math.min(k,g.x)),u.quaternion.setFromEuler(g)},h=()=>{_=document.pointerLockElement===e},T=()=>{_||e.requestPointerLock()};e.addEventListener("click",T),document.addEventListener("pointerlockchange",h),document.addEventListener("mousemove",m);let f=2,L=s=>{s.preventDefault();let e=s.deltaY>0?.75:1.25;f=Math.max(.025,Math.min(4,f*e)),console.log("Movement speed: ".concat(f.toFixed(3)))};return e.addEventListener("wheel",L,{passive:!1}),t.setAnimationLoop(s=>{let e=new l.Pq0;u.getWorldDirection(e);let i=new l.Pq0;i.crossVectors(e,u.up).normalize();let r=new l.Pq0;if(o.w&&r.add(e),o.s&&r.sub(e),o.a&&r.sub(i),o.d&&r.add(i),o.space&&r.add(u.up),o.shift&&r.sub(u.up),r.lengthSq()>0&&(r.normalize().multiplyScalar(f),u.position.add(r)),function(s){let e=s.domElement,t=e.clientWidth,i=e.clientHeight,r=e.width!==t||e.height!==i;return r&&s.setSize(t,i,!1),r}(t)){let s=t.domElement;u.aspect=s.clientWidth/s.clientHeight,u.updateProjectionMatrix()}t.render(n,u)}),d.current={scene:n,renderer:t,camera:u,setupColor:function(s){var e,i,r;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[1,1];return s.wrapS=s.wrapT=l.GJx,s.colorSpace=l.er$,s.repeat.set(...a),s.anisotropy=null!=(r=null==(e=(i=t.capabilities).getMaxAnisotropy)?void 0:e.call(i))?r:16,s.generateMipmaps=!0,s.minFilter=l.$_I,s.magFilter=l.k6q,s},setupMask:function(s){let e=new l.GYF(s,256,256,l.VT0,l.OUM);return e.colorSpace=l.jf0,e.wrapS=e.wrapT=l.GJx,e.generateMipmaps=!1,e.minFilter=l.k6q,e.magFilter=l.k6q,e.needsUpdate=!0,e},textureLoader:i,gltfLoader:r},()=>{document.removeEventListener("keydown",c),document.removeEventListener("keyup",x),document.removeEventListener("pointerlockchange",h),document.removeEventListener("mousemove",m),e.removeEventListener("click",T),e.removeEventListener("wheel",L),t.setAnimationLoop(null),t.dispose()}},[]),(0,r.useEffect)(()=>{let s,{scene:t,camera:i,setupColor:r,setupMask:a,textureLoader:u,gltfLoader:v}=d.current,p=!1;return async function(){var d,o,c,x,k,L;let D=await T(e),b=function(s){let e;for(let t of _(s.objects))if("TerrainBlock"===t.className){e=t;break}if(!e)throw Error("Error!");return e.properties.find(s=>"terrainFile"===s.target.name).value}(D),P=await f(b),y=P.textureNames.length,M=P.textureNames.map(s=>{var e;return r(u.load((e=(e=s).replace(/^terrain\./,""),m("textures/terrain/".concat(e,".png"),"".concat(g,"/black.png")))))}),z=P.alphaMaps.map(s=>a(s)),w=new l.bdM(2048,2048,256,256);w.rotateX(-Math.PI/2),w.rotateY(-Math.PI/2);let W=null;for(let s of _(D.objects))if("TerrainBlock"===s.className){let e=null==(d=s.properties.find(s=>"emptySquares"===s.target.name))?void 0:d.value;e&&(W=e.split(" ").map(s=>parseInt(s)));break}let H=function(s){let e=new Float32Array(s.length);for(let t=0;t>8&255,r=e>>16;for(let e=0;e=0&&r{if(M.forEach((e,t)=>{s.uniforms["albedo".concat(t)]={value:e}}),z.forEach((e,t)=>{t>0&&(s.uniforms["mask".concat(t)]={value:e})}),A&&(s.uniforms.visibilityMask={value:A}),M.forEach((e,t)=>{s.uniforms["tiling".concat(t)]={value:Math.min(512,{0:16,1:16,2:32,3:32,4:32,5:32}[t])}}),s.fragmentShader="\nuniform sampler2D albedo0;\nuniform sampler2D albedo1;\nuniform sampler2D albedo2;\nuniform sampler2D albedo3;\nuniform sampler2D albedo4;\nuniform sampler2D albedo5;\nuniform sampler2D mask1;\nuniform sampler2D mask2;\nuniform sampler2D mask3;\nuniform sampler2D mask4;\nuniform sampler2D mask5;\nuniform float tiling0;\nuniform float tiling1;\nuniform float tiling2;\nuniform float tiling3;\nuniform float tiling4;\nuniform float tiling5;\n".concat(A?"uniform sampler2D visibilityMask;":"","\n")+s.fragmentShader,A){let e="#include ";s.fragmentShader=s.fragmentShader.replace(e,"".concat(e,"\n // Early discard for invisible areas (before fog/lighting)\n float visibility = texture2D(visibilityMask, vMapUv).r;\n if (visibility < 0.5) {\n discard;\n }\n "))}s.fragmentShader=s.fragmentShader.replace("#include ","\n // Sample base albedo layers (sRGB textures auto-decoded to linear)\n vec2 baseUv = vMapUv;\n vec3 c0 = texture2D(albedo0, baseUv * vec2(tiling0)).rgb;\n ".concat(y>1?"vec3 c1 = texture2D(albedo1, baseUv * vec2(tiling1)).rgb;":"","\n ").concat(y>2?"vec3 c2 = texture2D(albedo2, baseUv * vec2(tiling2)).rgb;":"","\n ").concat(y>3?"vec3 c3 = texture2D(albedo3, baseUv * vec2(tiling3)).rgb;":"","\n ").concat(y>4?"vec3 c4 = texture2D(albedo4, baseUv * vec2(tiling4)).rgb;":"","\n ").concat(y>5?"vec3 c5 = texture2D(albedo5, baseUv * vec2(tiling5)).rgb;":"","\n\n // Sample linear masks (use R channel)\n float a1 = texture2D(mask1, baseUv).r;\n ").concat(y>1?"float a2 = texture2D(mask2, baseUv).r;":"","\n ").concat(y>2?"float a3 = texture2D(mask3, baseUv).r;":"","\n ").concat(y>3?"float a4 = texture2D(mask4, baseUv).r;":"","\n ").concat(y>4?"float a5 = texture2D(mask5, baseUv).r;":"","\n\n // Bottom-up compositing: each mask tells how much the higher layer replaces lower\n ").concat(y>1?"vec3 blended = mix(c0, c1, clamp(a1, 0.0, 1.0));":"","\n ").concat(y>2?"blended = mix(blended, c2, clamp(a2, 0.0, 1.0));":"","\n ").concat(y>3?"blended = mix(blended, c3, clamp(a3, 0.0, 1.0));":"","\n ").concat(y>4?"blended = mix(blended, c4, clamp(a4, 0.0, 1.0));":"","\n ").concat(y>5?"blended = mix(blended, c5, clamp(a5, 0.0, 1.0));":"","\n\n // Assign to diffuseColor before lighting\n diffuseColor.rgb = ").concat(y>1?"blended":"c0",";\n"))},s=new l.YJl;let R=new l.eaF(w,V);for(let e of(s.add(R),_(D.objects))){let a=s=>e.properties.find(e=>e.target.name===s),d=()=>{var s,e;let[t,i,r]=(null!=(e=null==(s=a("position"))?void 0:s.value)?e:"0 0 0").split(" ").map(s=>parseFloat(s));return[t,r,i]},p=()=>{var s,e;let[t,i,r]=(null!=(e=null==(s=a("scale"))?void 0:s.value)?e:"1 1 1").split(" ").map(s=>parseFloat(s));return[t,r,i]},_=function(){var s,e;let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],[i,r,n,u]=(null!=(e=null==(s=a("rotation"))?void 0:s.value)?e:"1 0 0 0").split(" ").map(s=>parseFloat(s));if(!t)return new l.PTz().setFromAxisAngle(new l.Pq0(i,n,-r),Math.PI/180*u);{let s=new l.PTz().setFromAxisAngle(new l.Pq0(r,n,i),-(Math.PI/180*u));return new l.PTz().setFromAxisAngle(new l.Pq0(0,1,0),Math.PI/2).multiply(s)}};switch(e.className){case"TerrainBlock":{let[s,e,t]=d();i.position.set(s-512,e+256,t-512);let[r,a,l]=p(),n=_();R.position.set(s,e,t),R.scale.set(r,a,l),R.quaternion.copy(n);break}case"Sky":{let s=null==(o=a("materialList"))?void 0:o.value;if(s){let e=await h(s),i=new l.ScU,r="".concat(g,"/black.png");t.background=i.load([m(e[1],r),m(e[3],r),m(e[4],r),m(e[5],r),m(e[0],r),m(e[2],r)])}let e=null==(c=a("fogDistance"))?void 0:c.value,i=null==(x=a("fogColor"))?void 0:x.value;if(e&&i){let s=parseFloat(e),[r,a,u]=i.split(" ").map(s=>parseFloat(s)),v=new l.Q1f().setRGB(r,a,u),d=new l.jUj(v,0,2*s);n?t.fog=d:t._fog=d}break}case"InteriorInstance":{let[e,t,i]=d(),[l,n,o]=p(),c=_(!0),x=a("interiorFile").value;v.load(m("interiors/".concat(x)).replace(/\.dif$/i,".gltf"),a=>{a.scene.traverse(s=>{var e,t;if(null==(e=s.material)?void 0:e.name){let e=s.material.name;try{let i=u.load((t=(t=e).replace(/\.\d+$/,""),m("textures/".concat(t,".png"))));s.material.map=r(i)}catch(s){console.error(s)}s.material.needsUpdate=!0}});let v=a.scene;v.position.set(i-1024,t,e-1024),v.scale.set(-l,n,-o),v.quaternion.copy(c),s.add(v)});break}case"WaterBlock":{let[e,t,i]=d(),[n,v,o]=p(),c=_(!0),x=null!=(L=null==(k=a("surfaceTexture"))?void 0:k.value)?L:"liquidTiles/BlueWater",h=new l.iNn(n,v,o),T=new l._4j({map:r(u.load(function(s){try{return m("textures/".concat(s,".png"))}catch(s){return"".concat(g,"/black.png")}}(x)),[8,8]),opacity:.8}),f=new l.eaF(h,T);f.position.set(i-1024+o/2,t+v/2,e-1024+n/2),f.quaternion.copy(c),s.add(f)}}}p||t.add(s)}(),()=>{p=!0,s.removeFromParent()}},[e]),(0,r.useEffect)(()=>{let{scene:s}=d.current;if(n){var e;s.fog=null!=(e=s._fog)?e:null,s._fog=null,s.needsUpdate=!0}else s._fog=s.fog,s.fog=null,s.needsUpdate=!0},[n]),(0,i.jsxs)("main",{children:[(0,i.jsx)("canvas",{ref:s,id:"canvas"}),(0,i.jsxs)("div",{id:"controls",children:[(0,i.jsx)("select",{id:"missionList",value:e,onChange:s=>t(s.target.value),children:D.map(s=>(0,i.jsx)("option",{children:s},s))}),(0,i.jsxs)("div",{className:"CheckboxField",children:[(0,i.jsx)("input",{id:"fogInput",type:"checkbox",checked:n,onChange:s=>{u(s.target.checked)}}),(0,i.jsx)("label",{htmlFor:"fogInput",children:"Fog?"})]})]})]})}}},s=>{s.O(0,[367,831,323,441,255,358],()=>s(s.s=6179)),_N_E=s.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/page-8e7e000eaa3b6a0e.js b/docs/_next/static/chunks/app/page-8e7e000eaa3b6a0e.js new file mode 100644 index 00000000..99495180 --- /dev/null +++ b/docs/_next/static/chunks/app/page-8e7e000eaa3b6a0e.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{6179:(s,e,t)=>{Promise.resolve().then(t.bind(t,8226))},6538:s=>{"use strict";class e extends SyntaxError{format(s){let e="Error: "+this.message;if(this.location){let t=null,i=s.find(s=>s.source===this.location.source);i&&(t=i.text.split(/\r\n|\n|\r/g));let r=this.location.start,a=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(r):r,l=this.location.source+":"+a.line+":"+a.column;if(t){let s=this.location.end,i="".padEnd(a.line.toString().length," "),n=t[r.line-1],u=(r.line===s.line?s.column:n.length+1)-r.column||1;e+="\n --\x3e "+l+"\n"+i+" |\n"+a.line+" | "+n+"\n"+i+" | "+"".padEnd(r.column-1," ")+"".padEnd(u,"^")}else e+="\n at "+l}return e}static buildMessage(s,e){function t(s){return s.codePointAt(0).toString(16).toUpperCase()}let i=Object.prototype.hasOwnProperty.call(RegExp.prototype,"unicode")?RegExp("[\\p{C}\\p{Mn}\\p{Mc}]","gu"):null;function r(s){return i?s.replace(i,s=>"\\u{"+t(s)+"}"):s}function a(s){return r(s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,s=>"\\x0"+t(s)).replace(/[\x10-\x1F\x7F-\x9F]/g,s=>"\\x"+t(s)))}function l(s){return r(s.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,s=>"\\x0"+t(s)).replace(/[\x10-\x1F\x7F-\x9F]/g,s=>"\\x"+t(s)))}let n={literal:s=>'"'+a(s.text)+'"',class(s){let e=s.parts.map(s=>Array.isArray(s)?l(s[0])+"-"+l(s[1]):l(s));return"["+(s.inverted?"^":"")+e.join("")+"]"+(s.unicode?"u":"")},any:()=>"any character",end:()=>"end of input",other:s=>s.description};function u(s){return n[s.type](s)}return"Expected "+function(s){let e=s.map(u);if(e.sort(),e.length>0){let s=1;for(let t=1;t=K.length)t=K.length-1;else for(t=e;!K[--t];);for(i={line:(i=K[t]).line,column:i.column};tJ&&(J=X,Y=[]),Y.push(s))}function si(){let e,t,i,a;for(e=X,t=[],i=sr();i!==r;)t.push(i),i=sr();return(i=X,Z++,s.length>X?(a=s.charAt(X),X++):(a=r,0===Z&&st(T)),Z--,a===r?i=void 0:(X=i,i=r),i!==r)?e=t.filter(Boolean):(X=e,e=r),e}function sr(){let e,t,i;if((e=sa())===r&&(e=sl())===r&&(e=su())===r&&(e=function(){let e,t,i,a,l,n,v,d,p,o,c,x,_,g,k,m,h,T;if(e=X,s.substr(X,10)===u?(t=u,X+=10):(t=r,0===Z&&st(D)),t!==r){for(i=[],a=so();a!==r;)i.push(a),a=so();if((a=sx())!==r){for(l=[],n=so();n!==r;)l.push(n),n=so();if(40===s.charCodeAt(X)?(n="(",X++):(n=r,0===Z&&st(b)),n!==r){for(v=[],d=so();d!==r;)v.push(d),d=so();for((d=s_())===r&&(d=null),p=[],o=so();o!==r;)p.push(o),o=so();if(41===s.charCodeAt(X)?(o=")",X++):(o=r,0===Z&&st(P)),o!==r){for(c=[],x=so();x!==r;)c.push(x),x=so();if(x=X,58===s.charCodeAt(X)?(_=":",X++):(_=r,0===Z&&st(y)),_!==r){for(g=[],k=so();k!==r;)g.push(k),k=so();(k=s_())!==r?x=_=[_,g,k]:(X=x,x=r)}else X=x,x=r;for(x===r&&(x=null),_=[],g=so();g!==r;)_.push(g),g=so();if(123===s.charCodeAt(X)?(g="{",X++):(g=r,0===Z&&st(M)),g!==r){for(k=[],m=sn();m!==r;)k.push(m),m=sn();if(125===s.charCodeAt(X)?(m="}",X++):(m=r,0===Z&&st(z)),m!==r){for(h=[],T=sc();T!==r;)h.push(T),T=sc();e={type:"datablock",className:a,instanceName:d,body:k.filter(Boolean)}}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r;return e}())===r){if(e=X,t=[],(i=so())!==r)for(;i!==r;)t.push(i),i=so();else t=r;t!==r&&(t=null),e=t}return e}function sa(){let e,t,i,a,l;if(e=X,"//"===s.substr(X,2)?(t="//",X+=2):(t=r,0===Z&&st(f)),t!==r){for(i=X,a=[],l=s.charAt(X),o.test(l)?X++:(l=r,0===Z&&st(L));l!==r;)a.push(l),l=s.charAt(X),o.test(l)?X++:(l=r,0===Z&&st(L));e={type:"comment",text:i=s.substring(i,X)}}else X=e,e=r;return e}function sl(){let e,t,i,a,l,n,u,d,p,o,c,x,_,g,k,m;if(e=X,s.substr(X,4)===v?(t=v,X+=4):(t=r,0===Z&&st(w)),t!==r){for(i=[],a=so();a!==r;)i.push(a),a=so();if((a=sx())!==r){for(l=[],n=so();n!==r;)l.push(n),n=so();if(40===s.charCodeAt(X)?(n="(",X++):(n=r,0===Z&&st(b)),n!==r){for(u=[],d=so();d!==r;)u.push(d),d=so();for((d=s_())===r&&(d=null),p=[],o=so();o!==r;)p.push(o),o=so();if(41===s.charCodeAt(X)?(o=")",X++):(o=r,0===Z&&st(P)),o!==r){for(c=[],x=so();x!==r;)c.push(x),x=so();if(123===s.charCodeAt(X)?(x="{",X++):(x=r,0===Z&&st(M)),x!==r){for(_=[],g=sn();g!==r;)_.push(g),g=sn();if(125===s.charCodeAt(X)?(g="}",X++):(g=r,0===Z&&st(z)),g!==r){for(k=[],m=sc();m!==r;)k.push(m),m=sc();e={type:"instance",className:a,instanceName:d,body:_.filter(Boolean)}}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r}else X=e,e=r;return e}function sn(){let s,e,t;if(s=X,e=[],(t=so())!==r)for(;t!==r;)e.push(t),t=so();else e=r;return e!==r&&(e=null),(s=e)===r&&(s=su())===r&&(s=sl())===r&&(s=sa()),s}function su(){let e,t,i,a,l,n,u;if(e=X,(t=function(){let s,e,t,i;if(s=X,(e=sx())!==r){for(t=[],i=sg();i!==r;)t.push(i),i=sg();s={name:e,index:t}}else X=s,s=r;return s}())!==r){for(i=[],a=so();a!==r;)i.push(a),a=so();if(61===s.charCodeAt(X)?(a="=",X++):(a=r,0===Z&&st(W)),a!==r){let i,a,v;for(l=[],n=so();n!==r;)l.push(n),n=so();if((i=function(){let e,t,i,a;if(e=X,34===s.charCodeAt(X)?(t='"',X++):(t=r,0===Z&&st(A)),t!==r){for(i=[],(a=sv())===r&&(a=sd());a!==r;)i.push(a),(a=sv())===r&&(a=sd());(34===s.charCodeAt(X)?(a='"',X++):(a=r,0===Z&&st(A)),a!==r)?e={type:"string",value:i.join("")}:(X=e,e=r)}else X=e,e=r;if(e===r)if(e=X,39===s.charCodeAt(X)?(t="'",X++):(t=r,0===Z&&st(O)),t!==r){for(i=[],(a=sv())===r&&(a=sp());a!==r;)i.push(a),(a=sv())===r&&(a=sp());(39===s.charCodeAt(X)?(a="'",X++):(a=r,0===Z&&st(O)),a!==r)?e={type:"string",value:i.join("")}:(X=e,e=r)}else X=e,e=r;return e}())===r&&(i=sk())===r&&(i=sl())===r&&(s.substr(X,4)===d?(v=d,X+=4):(v=r,0===Z&&st(I)),v===r&&(s.substr(X,5)===p?(v=p,X+=5):(v=r,0===Z&&st(U))),v!==r&&(v={type:"boolean",value:"true"===v}),(i=v)===r)&&(i=X,(a=sx())!==r&&(a={type:"reference",value:a}),i=a),(n=i)!==r)59===s.charCodeAt(X)?(u=";",X++):(u=r,0===Z&&st(H)),u===r&&(u=null),e={type:"definition",target:t,value:n};else X=e,e=r}else X=e,e=r}else X=e,e=r;return e}function sv(){let e,t,i;return(e=X,92===s.charCodeAt(X)?(t="\\",X++):(t=r,0===Z&&st(V)),t!==r&&(s.length>X?(i=s.charAt(X),X++):(i=r,0===Z&&st(T)),i!==r))?e=i:(X=e,e=r),e}function sd(){let e,t,i;if(e=X,t=[],i=s.charAt(X),c.test(i)?X++:(i=r,0===Z&&st(R)),i!==r)for(;i!==r;)t.push(i),i=s.charAt(X),c.test(i)?X++:(i=r,0===Z&&st(R));else t=r;return t!==r?s.substring(e,X):t}function sp(){let e,t,i;if(e=X,t=[],i=s.charAt(X),x.test(i)?X++:(i=r,0===Z&&st(S)),i!==r)for(;i!==r;)t.push(i),i=s.charAt(X),x.test(i)?X++:(i=r,0===Z&&st(S));else t=r;return t!==r?s.substring(e,X):t}function so(){let e;return e=s.charAt(X),_.test(e)?X++:(e=r,0===Z&&st(C)),e!==r&&(e=null),e}function sc(){let e;return 59===s.charCodeAt(X)?(e=";",X++):(e=r,0===Z&&st(H)),e}function sx(){let e,t,i,a,l,n;if(e=X,t=X,i=s.charAt(X),g.test(i)?X++:(i=r,0===Z&&st(N)),i===r&&(i=null),a=s.charAt(X),k.test(a)?X++:(a=r,0===Z&&st(G)),a!==r){for(l=[],n=s.charAt(X),m.test(n)?X++:(n=r,0===Z&&st(B));n!==r;)l.push(n),n=s.charAt(X),m.test(n)?X++:(n=r,0===Z&&st(B));t=i=[i,a,l]}else X=t,t=r;return t!==r?s.substring(e,X):t}function s_(){let s;return(s=sx())===r&&(s=sk()),s}function sg(){let e,t,i,a;return(e=function(){let e,t,i,a,l,n;if(e=X,91===s.charCodeAt(X)?(t="[",X++):(t=r,0===Z&&st(F)),t!==r){let t;for(i=[],a=so();a!==r;)i.push(a),a=so();if((t=sk())===r&&(t=sx()),(a=t)!==r){for(l=[],n=so();n!==r;)l.push(n),n=so();(93===s.charCodeAt(X)?(n="]",X++):(n=r,0===Z&&st(q)),n!==r)?e=a:(X=e,e=r)}else X=e,e=r}else X=e,e=r;return e}())===r&&((t=X,46===s.charCodeAt(X)?(i=".",X++):(i=r,0===Z&&st(E)),i!==r&&(a=sx())!==r)?t=a:(X=t,t=r),e=t),e}function sk(){let e,t,i;if(e=X,t=[],i=s.charAt(X),h.test(i)?X++:(i=r,0===Z&&st(j)),i!==r)for(;i!==r;)t.push(i),i=s.charAt(X),h.test(i)?X++:(i=r,0===Z&&st(j));else t=r;return(e=t!==r?s.substring(e,X):t)!==r&&(e={type:"number",value:parseFloat(e)}),e}let sm=(i=n())!==r&&X===s.length;function sh(){var t,a,l;throw i!==r&&X0&&void 0!==arguments[0]?arguments[0]:X,t=s.codePointAt(e);return void 0===t?"":String.fromCodePoint(t)}(J):null,l=J{"use strict";let i,r,a;t.r(e),t.d(e,{default:()=>sL});var l=t(5155),n=t(2115),u=t(63),v=t(258),d=t(8381),p=t(2454);let o=JSON.parse('{"BridgeTooFarReadme.txt":["DynamixFinalPack.vl2"],"Devil\'sElbowReadme.txt":["DynamixFinalPack.vl2"],"Dopplegangers.txt":["DesertWind.vl2","centaur.vl2"],"EULA.txt":["base.vl2"],"Info.txt":["yHDTextures2.0.vl2"],"InnerSanctumReadme.txt":["DynamixFinalPack.vl2"],"IsleOfManReadme.txt":["DynamixFinalPack.vl2"],"LICENSE":["SkiFreeGameType.vl2"],"PantheonReadme.txt":["DynamixFinalPack.vl2"],"ReadMe.txt":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"TWL-MapPack Readme.txt":["TWL-MapPack.vl2"],"TWL2-Map Pack Readme.txt":["TWL2-MapPack.vl2"],"TridentReadme.txt":["DynamixFinalPack.vl2"],"UKEULA.txt":["base.vl2"],"Xtra_missions/Attrition.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Chasmaclysmic.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DBS_Smoothed.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DX_Badlands.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DX_Desert.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/DX_Ice.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Badlands.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Desert.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Ice.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HO_Lush.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/HillKingLT.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/MapAssets.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Moonwalk.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Pariah_Mirrored.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/PlanetX.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/PuliVeivari.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Ravine.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Rush.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Badlands.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Desert.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Ice.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Lush.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Night.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/SC_Normal.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/Stripmine.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"Xtra_missions/VanDamnedLT.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/T2Intro.wav":["audio.vl2"],"audio/Windloop2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal4.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal5.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal6.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/alienanimal7.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/birdfrog.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/Bonuses/Nouns/airplane.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/astronaut.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/atmosphere.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/balloon.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/bats.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/beeswarm.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/birdofprey.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/blimp.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/bluejay.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/budgie.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/butterfly.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/camel.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/captain.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cat.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cheetah.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/chickadee.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cloud.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/colonel.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/condor.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cougar.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/cow.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/coyote.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/crow.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/dog.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/donkey.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/dove.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/dragonfly.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/flamingo.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/fly.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/general.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/goldfinch.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/grasshopper.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/helicopter.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/hornet.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/horse.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/hurricane.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/iguana.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/jaguar.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/llama.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/major.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/moon.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/msquito.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/ostrich.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/owl.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/ozone.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/parakeet.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/pelican.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/puppy.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/shark.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/snake.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/special1.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/special2.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/special3.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/swallow.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/tiger.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/tornado.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/turtle.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/warnipple.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/wasp.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/wolf.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/zebra.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/Nouns/zeppellin.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_passback1_prayer.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_passback2_moyoyo.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_passback3_rocket.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_perppass1_blast.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_perppass2_deepdish.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_perppass3_bunnybump.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_straipass1_yoyo.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_straipass2_skydive.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/down_straipass3_jolt.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/gadget3.wav":["TR2final105-client.vl2"],"audio/fx/Bonuses/high-level1-frozen.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level2-shooting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level3-dangling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level4-blazing.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level5-raining.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/high-level6-falling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_passback1_jab.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_passback2_backbreaker.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_passback3_leetlob.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_perppass1_peeler.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_perppass2_blender.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_perppass3_glasssmash.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_straipass1_bullet.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_straipass2_heist.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/horz_straipass3_smackshot.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level1-sharp.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level2-spitting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level3-whipped.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level4-popping.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/low-level5-bursting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/mario-6notes.wav":["TR2final105-client.vl2"],"audio/fx/Bonuses/med-level1-modest.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level2-ripped.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level3-shining.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level4-slick.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level5-sprinkling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/med-level6-brilliant.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_passback1_bomb.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_passback2_deliverance.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_passback3_crank.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_perppass1_fling.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_perppass2_quark.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_perppass3_juggletoss.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_straipass1_ascension.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/upward_straipass2_elevator.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level1-suspended.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level2-skeeting.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level3-hanging.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level4-arcing.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level5-pouring.wav":["TR2final093-extras.vl2"],"audio/fx/Bonuses/wow-level6-elite.wav":["TR2final093-extras.vl2"],"audio/fx/armor/breath_bio_uw.wav":["audio.vl2"],"audio/fx/armor/breath_fem_uw.wav":["audio.vl2"],"audio/fx/armor/breath_uw.wav":["audio.vl2"],"audio/fx/armor/bubbletrail.wav":["audio.vl2"],"audio/fx/armor/bubbletrail2.wav":["audio.vl2"],"audio/fx/armor/general_water_bigsplash.wav":["audio.vl2"],"audio/fx/armor/general_water_exit.wav":["audio.vl2"],"audio/fx/armor/general_water_exit2.wav":["audio.vl2"],"audio/fx/armor/general_water_medsplash.wav":["audio.vl2"],"audio/fx/armor/general_water_smallsplash.wav":["audio.vl2"],"audio/fx/armor/general_water_smallsplash2.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_hard.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_metal.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_snow.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_soft.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_uw.wav":["audio.vl2"],"audio/fx/armor/heavy_LF_water.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_hard.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_metal.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_snow.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_soft.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_uw.wav":["audio.vl2"],"audio/fx/armor/heavy_RF_water.wav":["audio.vl2"],"audio/fx/armor/heavy_land_hard.wav":["audio.vl2"],"audio/fx/armor/heavy_land_snow.wav":["audio.vl2"],"audio/fx/armor/heavy_land_soft.wav":["audio.vl2"],"audio/fx/armor/light_LF_bubbles.wav":["audio.vl2"],"audio/fx/armor/light_LF_hard.wav":["audio.vl2"],"audio/fx/armor/light_LF_metal.wav":["audio.vl2"],"audio/fx/armor/light_LF_snow.wav":["audio.vl2"],"audio/fx/armor/light_LF_soft.wav":["audio.vl2"],"audio/fx/armor/light_LF_uw.wav":["audio.vl2"],"audio/fx/armor/light_LF_wade.wav":["audio.vl2"],"audio/fx/armor/light_LF_water.wav":["audio.vl2"],"audio/fx/armor/light_RF_bubbles.wav":["audio.vl2"],"audio/fx/armor/light_RF_hard.wav":["audio.vl2"],"audio/fx/armor/light_RF_metal.wav":["audio.vl2"],"audio/fx/armor/light_RF_snow.wav":["audio.vl2"],"audio/fx/armor/light_RF_soft.wav":["audio.vl2"],"audio/fx/armor/light_RF_uw.wav":["audio.vl2"],"audio/fx/armor/light_RF_wade.wav":["audio.vl2"],"audio/fx/armor/light_RF_water.wav":["audio.vl2"],"audio/fx/armor/light_land_hard.wav":["audio.vl2"],"audio/fx/armor/light_land_metal.wav":["audio.vl2"],"audio/fx/armor/light_land_snow.wav":["audio.vl2"],"audio/fx/armor/light_land_soft.wav":["audio.vl2"],"audio/fx/armor/med_LF_hard.wav":["audio.vl2"],"audio/fx/armor/med_LF_metal.wav":["audio.vl2"],"audio/fx/armor/med_LF_snow.wav":["audio.vl2"],"audio/fx/armor/med_LF_soft.wav":["audio.vl2"],"audio/fx/armor/med_LF_uw.wav":["audio.vl2"],"audio/fx/armor/med_LF_water.wav":["audio.vl2"],"audio/fx/armor/med_RF_hard.wav":["audio.vl2"],"audio/fx/armor/med_RF_metal.wav":["audio.vl2"],"audio/fx/armor/med_RF_snow.wav":["audio.vl2"],"audio/fx/armor/med_RF_soft.wav":["audio.vl2"],"audio/fx/armor/med_RF_uw.wav":["audio.vl2"],"audio/fx/armor/med_RF_water.wav":["audio.vl2"],"audio/fx/armor/med_land_hard.wav":["audio.vl2"],"audio/fx/armor/med_land_snow.wav":["audio.vl2"],"audio/fx/armor/med_land_soft.wav":["audio.vl2"],"audio/fx/armor/ski_soft.wav":["audio.vl2"],"audio/fx/armor/thrust.wav":["audio.vl2"],"audio/fx/armor/thrust_uw.wav":["audio.vl2"],"audio/fx/bonuses/TRex.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/evillaugh.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/qseq1.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/qseq2.wav":["TR2final105-client.vl2"],"audio/fx/bonuses/qseq3.wav":["TR2final105-client.vl2"],"audio/fx/environment/IrisStaticSweep.wav":["TWL-MapPack.vl2"],"audio/fx/environment/SalDefenceWarning.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/Salbaseambience.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/Salwindsand.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/base_1.wav":["audio.vl2"],"audio/fx/environment/base_2.wav":["audio.vl2"],"audio/fx/environment/base_3.wav":["audio.vl2"],"audio/fx/environment/base_pulse_1.wav":["audio.vl2"],"audio/fx/environment/base_pulse_2.wav":["audio.vl2"],"audio/fx/environment/bird_echo1.wav":["audio.vl2"],"audio/fx/environment/bird_echo2.wav":["audio.vl2"],"audio/fx/environment/bird_echo3.wav":["audio.vl2"],"audio/fx/environment/bird_echo4.wav":["audio.vl2"],"audio/fx/environment/bird_echo5.wav":["audio.vl2"],"audio/fx/environment/bubbles1.wav":["audio.vl2"],"audio/fx/environment/bubbles2.wav":["audio.vl2"],"audio/fx/environment/caynonwind144k.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/coldwind1.wav":["audio.vl2"],"audio/fx/environment/crickets.wav":["audio.vl2"],"audio/fx/environment/crickets_drygrass.wav":["audio.vl2"],"audio/fx/environment/ctmelody1.WAV":["audio.vl2"],"audio/fx/environment/ctmelody2.WAV":["audio.vl2"],"audio/fx/environment/ctmelody3.WAV":["audio.vl2"],"audio/fx/environment/ctmelody4.WAV":["audio.vl2"],"audio/fx/environment/desertowl.wav":["audio.vl2"],"audio/fx/environment/dnabird1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnabird3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnacloseriver.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnacricketnight.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaforest1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaforest2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnafrog.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnagabbiano.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaghost.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnanightengale.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaoceano.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaoceano2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnaoceano3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnapanelsounds.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnapanelsounds2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnapigeon.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnastormblows.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnawolf.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/dnawolf2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/drywind.wav":["audio.vl2"],"audio/fx/environment/drywind2.wav":["audio.vl2"],"audio/fx/environment/fly_swarm.wav":["audio.vl2"],"audio/fx/environment/fog.wav":["audio.vl2"],"audio/fx/environment/frog1.wav":["audio.vl2"],"audio/fx/environment/frog2.wav":["audio.vl2"],"audio/fx/environment/gravel1.wav":["audio.vl2"],"audio/fx/environment/gravel2.wav":["audio.vl2"],"audio/fx/environment/gravel3.wav":["audio.vl2"],"audio/fx/environment/growl1.wav":["audio.vl2"],"audio/fx/environment/growl2.wav":["audio.vl2"],"audio/fx/environment/growl3.wav":["audio.vl2"],"audio/fx/environment/growl4.wav":["audio.vl2"],"audio/fx/environment/growl5.wav":["audio.vl2"],"audio/fx/environment/howlingwind1.wav":["audio.vl2"],"audio/fx/environment/howlingwind2.wav":["audio.vl2"],"audio/fx/environment/howlingwind3.wav":["audio.vl2"],"audio/fx/environment/icecrack1.wav":["audio.vl2"],"audio/fx/environment/icecrack2.wav":["audio.vl2"],"audio/fx/environment/icefall1.wav":["audio.vl2"],"audio/fx/environment/icefall2.wav":["audio.vl2"],"audio/fx/environment/icefall3.wav":["audio.vl2"],"audio/fx/environment/lakewaves.wav":["audio.vl2"],"audio/fx/environment/lakewaves2.wav":["audio.vl2"],"audio/fx/environment/lavabloop1.wav":["audio.vl2"],"audio/fx/environment/lavabloop2.wav":["audio.vl2"],"audio/fx/environment/lavabloop3.wav":["audio.vl2"],"audio/fx/environment/lavabloop4.wav":["audio.vl2"],"audio/fx/environment/lavabloop5.wav":["audio.vl2"],"audio/fx/environment/lavabloop6.wav":["audio.vl2"],"audio/fx/environment/lavabloop7.wav":["audio.vl2"],"audio/fx/environment/lavahiss.wav":["audio.vl2"],"audio/fx/environment/lavahostile.wav":["audio.vl2"],"audio/fx/environment/lavamellow1.wav":["audio.vl2"],"audio/fx/environment/leavesrustling.wav":["audio.vl2"],"audio/fx/environment/moaningwind1.wav":["audio.vl2"],"audio/fx/environment/oceanwaves.wav":["audio.vl2"],"audio/fx/environment/rain_hard_1.wav":["audio.vl2"],"audio/fx/environment/rain_hard_2.wav":["audio.vl2"],"audio/fx/environment/rain_light_1.wav":["audio.vl2"],"audio/fx/environment/rain_light_2.wav":["audio.vl2"],"audio/fx/environment/rain_medium_1.wav":["audio.vl2"],"audio/fx/environment/rain_medium_2.wav":["audio.vl2"],"audio/fx/environment/rain_medium_3.wav":["audio.vl2"],"audio/fx/environment/river1.wav":["audio.vl2"],"audio/fx/environment/river2.wav":["audio.vl2"],"audio/fx/environment/river3.wav":["audio.vl2"],"audio/fx/environment/rockslide1.wav":["audio.vl2"],"audio/fx/environment/rockslide2.wav":["audio.vl2"],"audio/fx/environment/rumblingthunder.wav":["audio.vl2"],"audio/fx/environment/sandpatter1.wav":["audio.vl2"],"audio/fx/environment/sandpatter2.wav":["audio.vl2"],"audio/fx/environment/sandstorm.wav":["audio.vl2"],"audio/fx/environment/sandstorm2.wav":["audio.vl2"],"audio/fx/environment/seagull1.wav":["TR2final105-client.vl2"],"audio/fx/environment/snowfall1.wav":["audio.vl2"],"audio/fx/environment/snowfall2.wav":["audio.vl2"],"audio/fx/environment/snowfall3.wav":["audio.vl2"],"audio/fx/environment/snowfall4.wav":["audio.vl2"],"audio/fx/environment/snowstorm1.wav":["audio.vl2"],"audio/fx/environment/snowstorm2.wav":["audio.vl2"],"audio/fx/environment/sys-boilingwater.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-lava1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-lava2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-lavastream.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-ocean.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-riverfast.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-riverslow.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-thunder1.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-thunderaway.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/sys-windstream.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/wetwind.wav":["audio.vl2"],"audio/fx/environment/whispers.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/fx/environment/wind_sandstorm.wav":["audio.vl2"],"audio/fx/environment/yeti_howl1.wav":["audio.vl2"],"audio/fx/environment/yeti_howl2.wav":["audio.vl2"],"audio/fx/explosions/deployables_explosion.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl03.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl10.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl23.wav":["audio.vl2"],"audio/fx/explosions/explosion.xpl27.wav":["audio.vl2"],"audio/fx/explosions/grenade_flash_explode.wav":["audio.vl2"],"audio/fx/explosions/vehicle_explosion.wav":["audio.vl2"],"audio/fx/misc/Cheer.wav":["TR2final105-client.vl2"],"audio/fx/misc/Flag1.wav":["TR2final105-client.vl2"],"audio/fx/misc/Flair.wav":["TR2final105-client.vl2"],"audio/fx/misc/MA1.wav":["TR2final105-client.vl2"],"audio/fx/misc/MA2.wav":["TR2final105-client.vl2"],"audio/fx/misc/MA3.wav":["TR2final105-client.vl2"],"audio/fx/misc/SHIELDH1.WAV":["audio.vl2"],"audio/fx/misc/Siege_Switching.WAV":["audio.vl2"],"audio/fx/misc/Yardsale.WAV":["audio.vl2"],"audio/fx/misc/bounty_bonus.wav":["audio.vl2"],"audio/fx/misc/bounty_completed.wav":["audio.vl2"],"audio/fx/misc/bounty_objrem1.wav":["audio.vl2"],"audio/fx/misc/bounty_objrem2.wav":["audio.vl2"],"audio/fx/misc/cannonshot.wav":["TR2final105-client.vl2"],"audio/fx/misc/cannonstart.wav":["TR2final105-client.vl2"],"audio/fx/misc/carscreech.wav":["TR2final105-client.vl2"],"audio/fx/misc/coin.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd-clap.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd-dis2.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd2.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowd3.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdfade.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition1a.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition1b.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition2a.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition2b.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition3a.wav":["TR2final105-client.vl2"],"audio/fx/misc/crowdtransition3b.wav":["TR2final105-client.vl2"],"audio/fx/misc/diagnostic_beep.wav":["audio.vl2"],"audio/fx/misc/diagnostic_on.wav":["audio.vl2"],"audio/fx/misc/downloading.wav":["audio.vl2"],"audio/fx/misc/flag_capture.wav":["audio.vl2"],"audio/fx/misc/flag_drop.wav":["audio.vl2"],"audio/fx/misc/flag_lost.wav":["audio.vl2"],"audio/fx/misc/flag_mined_female.wav":["audio.vl2"],"audio/fx/misc/flag_mined_male.wav":["audio.vl2"],"audio/fx/misc/flag_return.wav":["audio.vl2"],"audio/fx/misc/flag_snatch.wav":["audio.vl2"],"audio/fx/misc/flag_taken.wav":["audio.vl2"],"audio/fx/misc/flagcapture.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagenemy.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagflap.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagfriend.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagreturn.wav":["TR2final105-client.vl2"],"audio/fx/misc/flagself.wav":["TR2final105-client.vl2"],"audio/fx/misc/flipflop_lost.wav":["audio.vl2"],"audio/fx/misc/flipflop_taken.wav":["audio.vl2"],"audio/fx/misc/gameover.wav":["TR2final105-client.vl2"],"audio/fx/misc/gamestart.wav":["TR2final105-client.vl2"],"audio/fx/misc/goal.wav":["TR2final105-client.vl2"],"audio/fx/misc/gridjump.wav":["TR2final105-client.vl2"],"audio/fx/misc/health_patch.wav":["audio.vl2"],"audio/fx/misc/heartbeat.wav":["audio.vl2"],"audio/fx/misc/hunters_1.wav":["audio.vl2"],"audio/fx/misc/hunters_10.wav":["audio.vl2"],"audio/fx/misc/hunters_15.wav":["audio.vl2"],"audio/fx/misc/hunters_2.wav":["audio.vl2"],"audio/fx/misc/hunters_3.wav":["audio.vl2"],"audio/fx/misc/hunters_30.wav":["audio.vl2"],"audio/fx/misc/hunters_4.wav":["audio.vl2"],"audio/fx/misc/hunters_5.wav":["audio.vl2"],"audio/fx/misc/hunters_60.wav":["audio.vl2"],"audio/fx/misc/hunters_flag_snatch.wav":["audio.vl2"],"audio/fx/misc/hunters_greed.wav":["audio.vl2"],"audio/fx/misc/hunters_horde.wav":["audio.vl2"],"audio/fx/misc/launcher.wav":["TR2final105-client.vl2"],"audio/fx/misc/lightning_impact.wav":["audio.vl2"],"audio/fx/misc/mine.deploy.WAV":["audio.vl2"],"audio/fx/misc/misc.error.wav":["audio.vl2"],"audio/fx/misc/missed.wav":["TR2final105-client.vl2"],"audio/fx/misc/nexus_cap.wav":["audio.vl2"],"audio/fx/misc/nexus_idle.wav":["audio.vl2"],"audio/fx/misc/red_alert.wav":["audio.vl2"],"audio/fx/misc/red_alert_short.wav":["TR2final105-client.vl2"],"audio/fx/misc/rolechange.wav":["TR2final105-client.vl2"],"audio/fx/misc/slapshot.wav":["TR2final105-client.vl2"],"audio/fx/misc/static.wav":["audio.vl2"],"audio/fx/misc/switch_taken.wav":["audio.vl2"],"audio/fx/misc/target_waypoint.wav":["audio.vl2"],"audio/fx/misc/vote_fails.wav":["audio.vl2"],"audio/fx/misc/vote_initiated.wav":["audio.vl2"],"audio/fx/misc/vote_passes.wav":["audio.vl2"],"audio/fx/misc/warning_beep.wav":["audio.vl2"],"audio/fx/misc/whistle.wav":["TR2final105-client.vl2"],"audio/fx/packs/cloak_on.wav":["audio.vl2"],"audio/fx/packs/inventory_deploy.wav":["audio.vl2"],"audio/fx/packs/packs.pickupPack.wav":["audio.vl2"],"audio/fx/packs/packs.repairPackOn.wav":["audio.vl2"],"audio/fx/packs/packs.throwPack.wav":["audio.vl2"],"audio/fx/packs/repair_use.wav":["audio.vl2"],"audio/fx/packs/satchel_pack_activate.wav":["audio.vl2"],"audio/fx/packs/satchel_pack_detonate.wav":["audio.vl2"],"audio/fx/packs/sensorjammerpack_on.wav":["audio.vl2"],"audio/fx/packs/shield_hit.wav":["audio.vl2"],"audio/fx/packs/shield_on.WAV":["audio.vl2"],"audio/fx/packs/turret_place.wav":["audio.vl2"],"audio/fx/powered/base_power_loop.wav":["audio.vl2"],"audio/fx/powered/base_power_off.wav":["audio.vl2"],"audio/fx/powered/base_power_on.wav":["audio.vl2"],"audio/fx/powered/dep_inv_station.wav":["audio.vl2"],"audio/fx/powered/generator_hum.wav":["audio.vl2"],"audio/fx/powered/inv_pad_appear.wav":["audio.vl2"],"audio/fx/powered/inv_pad_off.wav":["audio.vl2"],"audio/fx/powered/inv_pad_on.wav":["audio.vl2"],"audio/fx/powered/motion_sensor_activate.wav":["audio.vl2"],"audio/fx/powered/nexus_deny.wav":["audio.vl2"],"audio/fx/powered/sensor_activate.wav":["audio.vl2"],"audio/fx/powered/sensor_hum.wav":["audio.vl2"],"audio/fx/powered/station_denied.wav":["audio.vl2"],"audio/fx/powered/station_hum.wav":["audio.vl2"],"audio/fx/powered/turret_aa_activate.wav":["audio.vl2"],"audio/fx/powered/turret_aa_fire.wav":["audio.vl2"],"audio/fx/powered/turret_heavy_activate.wav":["audio.vl2"],"audio/fx/powered/turret_heavy_idle.wav":["audio.vl2"],"audio/fx/powered/turret_heavy_reload.wav":["audio.vl2"],"audio/fx/powered/turret_indoor_fire.wav":["audio.vl2"],"audio/fx/powered/turret_light_activate.wav":["audio.vl2"],"audio/fx/powered/turret_light_idle.wav":["audio.vl2"],"audio/fx/powered/turret_light_reload.wav":["audio.vl2"],"audio/fx/powered/turret_missile_activate.wav":["audio.vl2"],"audio/fx/powered/turret_missile_fire.wav":["audio.vl2"],"audio/fx/powered/turret_mortar_explode.wav":["audio.vl2"],"audio/fx/powered/turret_mortar_fire.wav":["audio.vl2"],"audio/fx/powered/turret_outdoor_fire.wav":["audio.vl2"],"audio/fx/powered/turret_plasma_explode.wav":["audio.vl2"],"audio/fx/powered/turret_plasma_fire.wav":["audio.vl2"],"audio/fx/powered/turret_sentry_activate.wav":["audio.vl2"],"audio/fx/powered/turret_sentry_fire.wav":["audio.vl2"],"audio/fx/powered/turret_sentry_impact.wav":["audio.vl2"],"audio/fx/powered/vehicle_pad_on.wav":["audio.vl2"],"audio/fx/powered/vehicle_screen_off.wav":["audio.vl2"],"audio/fx/powered/vehicle_screen_on.wav":["audio.vl2"],"audio/fx/powered/vehicle_screen_on2.wav":["audio.vl2"],"audio/fx/vehicles/MPB_close_lid.wav":["audio.vl2"],"audio/fx/vehicles/MPB_deploy.wav":["audio.vl2"],"audio/fx/vehicles/MPB_deploy_station.wav":["audio.vl2"],"audio/fx/vehicles/MPB_deploy_turret.wav":["audio.vl2"],"audio/fx/vehicles/MPB_undeploy_turret.wav":["audio.vl2"],"audio/fx/vehicles/MPB_undeploy_turret2.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_dryfire.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_impact.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_projectile.wav":["audio.vl2"],"audio/fx/vehicles/bomber_bomb_reload.wav":["audio.vl2"],"audio/fx/vehicles/bomber_boost.wav":["audio.vl2"],"audio/fx/vehicles/bomber_engine.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_activate.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_dryfire.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_fire.wav":["audio.vl2"],"audio/fx/vehicles/bomber_turret_reload.wav":["audio.vl2"],"audio/fx/vehicles/cockpit_activate.wav":["audio.vl2"],"audio/fx/vehicles/crash_grav_soft.wav":["audio.vl2"],"audio/fx/vehicles/crash_ground_vehicle.wav":["audio.vl2"],"audio/fx/vehicles/crash_hard.wav":["audio.vl2"],"audio/fx/vehicles/crash_soft.wav":["audio.vl2"],"audio/fx/vehicles/htransport_boost.wav":["audio.vl2"],"audio/fx/vehicles/htransport_thrust.wav":["audio.vl2"],"audio/fx/vehicles/inventory_pad_appear.wav":["audio.vl2"],"audio/fx/vehicles/inventory_pad_on.wav":["audio.vl2"],"audio/fx/vehicles/mount.wav":["audio.vl2"],"audio/fx/vehicles/mount_dis.wav":["audio.vl2"],"audio/fx/vehicles/mpb_boost.wav":["audio.vl2"],"audio/fx/vehicles/mpb_inv_station.wav":["audio.vl2"],"audio/fx/vehicles/mpb_thrust.wav":["audio.vl2"],"audio/fx/vehicles/outrider_boost.wav":["audio.vl2"],"audio/fx/vehicles/outrider_engine.wav":["audio.vl2"],"audio/fx/vehicles/outrider_skid.wav":["audio.vl2"],"audio/fx/vehicles/shrike_blaster.wav":["audio.vl2"],"audio/fx/vehicles/shrike_blaster_projectile.wav":["audio.vl2"],"audio/fx/vehicles/shrike_blaster_projectile_impact.wav":["audio.vl2"],"audio/fx/vehicles/shrike_boost.wav":["audio.vl2"],"audio/fx/vehicles/shrike_engine.wav":["audio.vl2"],"audio/fx/vehicles/tank_activate.wav":["audio.vl2"],"audio/fx/vehicles/tank_boost.wav":["audio.vl2"],"audio/fx/vehicles/tank_chaingun.wav":["audio.vl2"],"audio/fx/vehicles/tank_engine.wav":["audio.vl2"],"audio/fx/vehicles/tank_mortar_fire.wav":["audio.vl2"],"audio/fx/vehicles/tank_skid.wav":["audio.vl2"],"audio/fx/vehicles/wake_shrike_n_tank.wav":["audio.vl2"],"audio/fx/vehicles/wake_wildcat.wav":["audio.vl2"],"audio/fx/weapons/ELF_fire.wav":["audio.vl2"],"audio/fx/weapons/ELF_hit.wav":["audio.vl2"],"audio/fx/weapons/ELF_underwater.wav":["audio.vl2"],"audio/fx/weapons/TR2spinfusor_fire.wav":["TR2final105-client.vl2"],"audio/fx/weapons/blaster_activate.wav":["audio.vl2"],"audio/fx/weapons/blaster_fire.WAV":["audio.vl2"],"audio/fx/weapons/blaster_impact.wav":["audio.vl2"],"audio/fx/weapons/blaster_projectile.wav":["audio.vl2"],"audio/fx/weapons/cg_hard1.wav":["audio.vl2"],"audio/fx/weapons/cg_hard2.wav":["audio.vl2"],"audio/fx/weapons/cg_hard3.wav":["audio.vl2"],"audio/fx/weapons/cg_hard4.wav":["audio.vl2"],"audio/fx/weapons/cg_metal1.wav":["audio.vl2"],"audio/fx/weapons/cg_metal2.wav":["audio.vl2"],"audio/fx/weapons/cg_metal3.wav":["audio.vl2"],"audio/fx/weapons/cg_metal4.wav":["audio.vl2"],"audio/fx/weapons/cg_soft1.wav":["audio.vl2"],"audio/fx/weapons/cg_soft2.wav":["audio.vl2"],"audio/fx/weapons/cg_soft3.wav":["audio.vl2"],"audio/fx/weapons/cg_soft4.wav":["audio.vl2"],"audio/fx/weapons/cg_water1.wav":["audio.vl2"],"audio/fx/weapons/cg_water2.wav":["audio.vl2"],"audio/fx/weapons/cg_water3.wav":["audio.vl2"],"audio/fx/weapons/cg_water4.wav":["audio.vl2"],"audio/fx/weapons/chaingun_activate.wav":["audio.vl2"],"audio/fx/weapons/chaingun_dryfire.wav":["audio.vl2"],"audio/fx/weapons/chaingun_fire.wav":["audio.vl2"],"audio/fx/weapons/chaingun_impact.wav":["audio.vl2"],"audio/fx/weapons/chaingun_off.wav":["audio.vl2"],"audio/fx/weapons/chaingun_projectile.wav":["audio.vl2"],"audio/fx/weapons/chaingun_spindown.wav":["audio.vl2"],"audio/fx/weapons/chaingun_spinup.wav":["audio.vl2"],"audio/fx/weapons/chaingun_start.wav":["audio.vl2"],"audio/fx/weapons/generic_switch.wav":["audio.vl2"],"audio/fx/weapons/grenade_camera_activate.wav":["audio.vl2"],"audio/fx/weapons/grenade_camera_attach.wav":["audio.vl2"],"audio/fx/weapons/grenade_explode.wav":["audio.vl2"],"audio/fx/weapons/grenade_explode_UW.wav":["audio.vl2"],"audio/fx/weapons/grenade_flash_explode.wav":["audio.vl2"],"audio/fx/weapons/grenade_switch.wav":["audio.vl2"],"audio/fx/weapons/grenade_throw.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_activate.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_dryfire.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_fire.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_projectile.wav":["audio.vl2"],"audio/fx/weapons/grenadelauncher_reload.wav":["audio.vl2"],"audio/fx/weapons/mine_deploy.wav":["audio.vl2"],"audio/fx/weapons/mine_detonate.wav":["audio.vl2"],"audio/fx/weapons/mine_detonate_UW.wav":["audio.vl2"],"audio/fx/weapons/mine_switch.wav":["audio.vl2"],"audio/fx/weapons/missile_fire.wav":["audio.vl2"],"audio/fx/weapons/missile_firer_lock.wav":["audio.vl2"],"audio/fx/weapons/missile_firer_search.wav":["audio.vl2"],"audio/fx/weapons/missile_launcher_activate.wav":["audio.vl2"],"audio/fx/weapons/missile_launcher_dryfire.wav":["audio.vl2"],"audio/fx/weapons/missile_projectile.wav":["audio.vl2"],"audio/fx/weapons/missile_target_inbound.wav":["audio.vl2"],"audio/fx/weapons/missile_target_lock.wav":["audio.vl2"],"audio/fx/weapons/mortar_activate.wav":["audio.vl2"],"audio/fx/weapons/mortar_dryfire.wav":["audio.vl2"],"audio/fx/weapons/mortar_explode.wav":["audio.vl2"],"audio/fx/weapons/mortar_explode_UW.wav":["audio.vl2"],"audio/fx/weapons/mortar_fire.wav":["audio.vl2"],"audio/fx/weapons/mortar_projectile.wav":["audio.vl2"],"audio/fx/weapons/mortar_reload.wav":["audio.vl2"],"audio/fx/weapons/plasma_dryfire.wav":["audio.vl2"],"audio/fx/weapons/plasma_fizzle.wav":["audio.vl2"],"audio/fx/weapons/plasma_rifle_activate.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_fire.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_idle.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_projectile.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_projectile_die.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_projectile_hit.WAV":["audio.vl2"],"audio/fx/weapons/plasma_rifle_reload.WAV":["audio.vl2"],"audio/fx/weapons/shocklance_activate.wav":["audio.vl2"],"audio/fx/weapons/shocklance_dryfire.wav":["audio.vl2"],"audio/fx/weapons/shocklance_fire.wav":["audio.vl2"],"audio/fx/weapons/shocklance_miss.wav":["audio.vl2"],"audio/fx/weapons/shocklance_reload.wav":["audio.vl2"],"audio/fx/weapons/sniper_activate.wav":["audio.vl2"],"audio/fx/weapons/sniper_fire.wav":["audio.vl2"],"audio/fx/weapons/sniper_impact.wav":["audio.vl2"],"audio/fx/weapons/sniper_miss.wav":["audio.vl2"],"audio/fx/weapons/sniper_underwater.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_activate.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_dryfire.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_fire.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_idle.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_impact.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_impact_UW.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_projectile.wav":["audio.vl2"],"audio/fx/weapons/spinfusor_reload.sfk":["audio.vl2"],"audio/fx/weapons/spinfusor_reload.wav":["audio.vl2"],"audio/fx/weapons/targetinglaser_paint.wav":["audio.vl2"],"audio/fx/weapons/temp.wav":["audio.vl2"],"audio/fx/weapons/throw_grenade.wav":["audio.vl2"],"audio/fx/weapons/throw_mine.wav":["audio.vl2"],"audio/fx/weapons/weapon.missilereload.wav":["audio.vl2"],"audio/gui/buttonDown.wav":["audio.vl2"],"audio/gui/buttonOver.wav":["audio.vl2"],"audio/gui/command_hum.wav":["audio.vl2"],"audio/gui/command_off.wav":["audio.vl2"],"audio/gui/command_on.wav":["audio.vl2"],"audio/gui/inventory_hum.wav":["audio.vl2"],"audio/gui/inventory_off.wav":["audio.vl2"],"audio/gui/inventory_on.wav":["audio.vl2"],"audio/gui/launchMenuOpen.wav":["audio.vl2"],"audio/gui/launchMenuOver.wav":["audio.vl2"],"audio/gui/loading_hum.wav":["audio.vl2"],"audio/gui/objective_notification.wav":["audio.vl2"],"audio/gui/shell_hum.wav":["audio.vl2"],"audio/gui/vote_nopass.wav":["audio.vl2"],"audio/gui/vote_pass.wav":["audio.vl2"],"audio/gui/youvegotmail.wav":["audio.vl2"],"audio/gui/youvegotmail2.WAV":["audio.vl2"],"audio/space_bird_3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/turret_2.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/turret_3.wav":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"audio/voice/Training/Briefings/SkiFree.brief01.WAV":["SkiFreeGameType.vl2"],"classic_maps.txt":["Classic_maps_v1.vl2"],"console_end.cs":["base.vl2"],"effects/Armor.ifr":["base.vl2"],"effects/explosions.ifr":["base.vl2"],"effects/gui.ifr":["base.vl2"],"effects/misc.ifr":["base.vl2"],"effects/packs.ifr":["base.vl2"],"effects/powered.ifr":["base.vl2"],"effects/vehicles.ifr":["base.vl2"],"effects/weapons.ifr":["base.vl2"],"flags.png":["zflags.vl2"],"fonts/Arial Bold_10.gft":["base.vl2"],"fonts/Arial Bold_12.gft":["base.vl2"],"fonts/Arial Bold_13.gft":["base.vl2"],"fonts/Arial Bold_14.gft":["base.vl2"],"fonts/Arial Bold_16.gft":["base.vl2"],"fonts/Arial Bold_18.gft":["base.vl2"],"fonts/Arial Bold_24.gft":["base.vl2"],"fonts/Arial Bold_32.gft":["base.vl2"],"fonts/Arial_12.gft":["base.vl2"],"fonts/Arial_13.gft":["base.vl2"],"fonts/Arial_14.gft":["base.vl2"],"fonts/Arial_16.gft":["base.vl2"],"fonts/Arial_18.gft":["base.vl2"],"fonts/Arial_20.gft":["base.vl2"],"fonts/Lucida Console_12.gft":["base.vl2"],"fonts/Sui Generis_14.gft":["base.vl2"],"fonts/Sui Generis_20.gft":["base.vl2"],"fonts/Sui Generis_22.gft":["base.vl2"],"fonts/Univers Bold_16.gft":["base.vl2"],"fonts/Univers Bold_18.gft":["base.vl2"],"fonts/Univers Condensed Bold_20.gft":["base.vl2"],"fonts/Univers Condensed_10.gft":["base.vl2"],"fonts/Univers Condensed_12.gft":["base.vl2"],"fonts/Univers Condensed_14.gft":["base.vl2"],"fonts/Univers Condensed_18.gft":["base.vl2"],"fonts/Univers Condensed_20.gft":["base.vl2"],"fonts/Univers Condensed_22.gft":["base.vl2"],"fonts/Univers condensed bold_28.gft":["base.vl2"],"fonts/Univers condensed_28.gft":["base.vl2"],"fonts/Univers condensed_30.gft":["base.vl2"],"fonts/Univers italic_16.gft":["base.vl2"],"fonts/Univers italic_18.gft":["base.vl2"],"fonts/Univers_12.gft":["base.vl2"],"fonts/Univers_14.gft":["base.vl2"],"fonts/Univers_16.gft":["base.vl2"],"fonts/Univers_18.gft":["base.vl2"],"fonts/Univers_22.gft":["base.vl2"],"fonts/Verdana Bold_12.gft":["base.vl2"],"fonts/Verdana Bold_13.gft":["base.vl2"],"fonts/Verdana Bold_14.gft":["base.vl2"],"fonts/Verdana Bold_16.gft":["base.vl2"],"fonts/Verdana Bold_24.gft":["base.vl2"],"fonts/Verdana Bold_36.gft":["base.vl2"],"fonts/Verdana Italic_12.gft":["base.vl2"],"fonts/Verdana Italic_13.gft":["base.vl2"],"fonts/Verdana Italic_14.gft":["base.vl2"],"fonts/Verdana Italic_16.gft":["base.vl2"],"fonts/Verdana_10.gft":["base.vl2"],"fonts/Verdana_12.gft":["base.vl2"],"fonts/Verdana_13.gft":["base.vl2"],"fonts/Verdana_14.gft":["base.vl2"],"fonts/Verdana_16.gft":["base.vl2"],"fonts/Verdana_18.gft":["base.vl2"],"fonts/arial bold_20.gft":["base.vl2"],"fonts/arial bold_50.gft":["base.vl2"],"fonts/times_24.gft":["base.vl2"],"fonts/times_36.gft":["base.vl2"],"fonts/univers condensed_16.gft":["base.vl2"],"gui/AIEButtonBarDlg.gui":["scripts.vl2"],"gui/AIEFrameSetDlg.gui":["scripts.vl2"],"gui/AIEStatusbarDlg.gui":["scripts.vl2"],"gui/AIEWorkingDlg.gui":["scripts.vl2"],"gui/AIEditorGui.gui":["scripts.vl2"],"gui/AIEditorToolBar.gui":["scripts.vl2"],"gui/AddressDlg.gui":["scripts.vl2"],"gui/AdvancedHostDlg.gui":["scripts.vl2"],"gui/BrowserEditInfoDlg.gui":["scripts.vl2"],"gui/BrowserSearchDlg.gui":["scripts.vl2"],"gui/CenterPrint.gui":["scripts.vl2"],"gui/ChannelBanDlg.gui":["scripts.vl2"],"gui/ChannelKeyDlg.gui":["scripts.vl2"],"gui/ChannelOptionsDlg.gui":["scripts.vl2"],"gui/ChatDlg.gui":["scripts.vl2"],"gui/ChatGui.gui":["scripts.vl2"],"gui/ChatOptionsDlg.gui":["scripts.vl2"],"gui/ChooseFilterDlg.gui":["scripts.vl2"],"gui/CommanderChatDlg.gui":["scripts.vl2"],"gui/CommanderMapGui.gui":["scripts.vl2"],"gui/CommonLoadDlg.gui":["scripts.vl2"],"gui/CommonSaveDlg.gui":["scripts.vl2"],"gui/CompTestGui.gui":["scripts.vl2"],"gui/ConsoleDlg.gui":["scripts.vl2"],"gui/CreateAccountDlg.gui":["scripts.vl2"],"gui/CreateTribeDlg.gui":["scripts.vl2"],"gui/CreditsGui.gui":["scripts.vl2"],"gui/DebriefGui.gui":["scripts.vl2"],"gui/DebuggerBreakConditionDlg.gui":["scripts.vl2"],"gui/DebuggerConnectDlg.gui":["scripts.vl2"],"gui/DebuggerEditWatchDlg.gui":["scripts.vl2"],"gui/DebuggerFindDlg.gui":["scripts.vl2"],"gui/DebuggerGui.gui":["scripts.vl2"],"gui/DebuggerWatchDlg.gui":["scripts.vl2"],"gui/DemoLoadProgressDlg.gui":["scripts.vl2"],"gui/DemoPlaybackDlg.gui":["scripts.vl2"],"gui/DemoRenameFileDlg.gui":["scripts.vl2"],"gui/DetailSetDlg.gui":["scripts.vl2"],"gui/DriverInfoDlg.gui":["scripts.vl2"],"gui/EULADlg.gui":["scripts.vl2"],"gui/EditChatCommandDlg.gui":["scripts.vl2"],"gui/EditChatMenuDlg.gui":["scripts.vl2"],"gui/EditChatMenuGui.gui":["scripts.vl2"],"gui/EditorGui.gui":["scripts.vl2"],"gui/EditorSaveMissionDlg.gui":["scripts.vl2"],"gui/EditorToolBarGui.gui":["scripts.vl2"],"gui/EditorToolCreatorGui.gui":["scripts.vl2"],"gui/EditorToolInspectorGui.gui":["scripts.vl2"],"gui/EditorToolMissionAreaGui.gui":["scripts.vl2"],"gui/EditorToolThumbnailGui.gui":["scripts.vl2"],"gui/EditorToolTreeViewGui.gui":["scripts.vl2"],"gui/EditorToolbarDlg.gui":["scripts.vl2"],"gui/EmailBlockDlg.gui":["scripts.vl2"],"gui/EmailComposeDlg.gui":["scripts.vl2"],"gui/EmailGui.gui":["scripts.vl2"],"gui/EnterIPDlg.gui":["scripts.vl2"],"gui/FilterEditDlg.gui":["scripts.vl2"],"gui/FindServerDlg.gui":["scripts.vl2"],"gui/FrameOverlayGui.gui":["scripts.vl2"],"gui/GameGui.gui":["scripts.vl2"],"gui/GenDialog.gui":["scripts.vl2"],"gui/GuiEditorGui.gui":["scripts.vl2"],"gui/GuiTestGui.gui":["scripts.vl2"],"gui/HUDDlgs.gui":["scripts.vl2"],"gui/HelpDlg.gui":["scripts.vl2"],"gui/IHVTest.gui":["scripts.vl2"],"gui/ImmSplashDlg.gui":["scripts.vl2"],"gui/InspectAddFieldDlg.gui":["scripts.vl2"],"gui/InspectDlg.gui":["scripts.vl2"],"gui/InteriorDebug.gui":["scripts.vl2"],"gui/InteriorPreviewGui.gui":["scripts.vl2"],"gui/JoinChatDlg.gui":["scripts.vl2"],"gui/JoystickConfigDlg.gui":["scripts.vl2"],"gui/LaunchGui.gui":["scripts.vl2"],"gui/LaunchToolbarDlg.gui":["scripts.vl2"],"gui/LoadingGui.gui":["scripts.vl2"],"gui/LobbyGui.gui":["scripts.vl2"],"gui/LoginDlg.gui":["scripts.vl2"],"gui/LoginMessageBoxDlg.gui":["scripts.vl2"],"gui/MessageBoxDlg.gui":["scripts.vl2"],"gui/MessagePopupDlg.gui":["scripts.vl2"],"gui/MouseConfigDlg.gui":["scripts.vl2"],"gui/MoveThreadDlg.gui":["scripts.vl2"],"gui/NewMissionGui.gui":["scripts.vl2"],"gui/NewWarriorDlg.gui":["scripts.vl2"],"gui/OptionsDlg.gui":["scripts.vl2"],"gui/PanoramaGui.gui":["scripts.vl2"],"gui/PasswordDlg.gui":["scripts.vl2"],"gui/PickTeamDlg.gui":["scripts.vl2"],"gui/PlayGui.gui":["scripts.vl2"],"gui/RecordingsDlg.gui":["scripts.vl2"],"gui/RemapDlg.gui":["scripts.vl2"],"gui/ServerInfoDlg.gui":["scripts.vl2"],"gui/ShellLoadFileDlg.gui":["scripts.vl2"],"gui/ShellSaveFileDlg.gui":["scripts.vl2"],"gui/SinglePlayerEscapeDlg.gui":["scripts.vl2"],"gui/TR2DebriefGui.gui":["TR2final105-client.vl2"],"gui/TSShowDetailControlDlg.gui":["scripts.vl2"],"gui/TSShowEditScale.gui":["scripts.vl2"],"gui/TSShowGui.gui":["scripts.vl2"],"gui/TSShowLightDlg.gui":["scripts.vl2"],"gui/TSShowLoadDlg.gui":["scripts.vl2"],"gui/TSShowMiscDlg.gui":["scripts.vl2"],"gui/TSShowThreadControlDlg.gui":["scripts.vl2"],"gui/TSShowTranDurEditDlg.gui":["scripts.vl2"],"gui/TSShowTransitionDlg.gui":["scripts.vl2"],"gui/TaskHudDlg.gui":["scripts.vl2"],"gui/TerraformerFullScreenGui.gui":["scripts.vl2"],"gui/TerraformerGui.gui":["scripts.vl2"],"gui/TerraformerHeightfieldGui.gui":["scripts.vl2"],"gui/TerraformerTextureGui.gui":["scripts.vl2"],"gui/TerrainEditorButtonbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorExtraToolbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorFramesetDlg.gui":["scripts.vl2"],"gui/TerrainEditorGui.gui":["scripts.vl2"],"gui/TerrainEditorStatusbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorTextureSelectGui.gui":["scripts.vl2"],"gui/TerrainEditorToolbarDlg.gui":["scripts.vl2"],"gui/TerrainEditorVSettingsGui.gui":["scripts.vl2"],"gui/TerrainEditorValuesSettingsGui.gui":["scripts.vl2"],"gui/TestGui.gui":["scripts.vl2"],"gui/TrainingGui.gui":["scripts.vl2"],"gui/TribeAdminMemberDlg.gui":["scripts.vl2"],"gui/TribeAndWarriorBrowserGui.gui":["scripts.vl2"],"gui/TribePropertiesDlg.gui":["scripts.vl2"],"gui/WarriorPropertiesDlg.gui":["scripts.vl2"],"gui/WorldEditorButtonbarDlg.gui":["scripts.vl2"],"gui/WorldEditorFramesetDlg.gui":["scripts.vl2"],"gui/WorldEditorGui.gui":["scripts.vl2"],"gui/WorldEditorSettingsDlg.gui":["scripts.vl2"],"gui/WorldEditorStatusbarDlg.gui":["scripts.vl2"],"gui/WorldEditorToolbarDlg.gui":["scripts.vl2"],"gui/cmdMapHelpText.gui":["scripts.vl2"],"gui/guiProfiles.cs":["scripts.vl2"],"gui/helpTextGui.gui":["scripts.vl2"],"gui/objectBuilderGui.gui":["scripts.vl2"],"gui/sceneLightingGui.gui":["scripts.vl2"],"help/1. About.hfl":["scripts.vl2"],"help/2. Mission Editor Overview.hfl":["scripts.vl2"],"help/3. World Editor.hfl":["scripts.vl2"],"help/4. Mission Area Editor.hfl":["scripts.vl2"],"help/5. Terrain Editor.hfl":["scripts.vl2"],"help/6. Terrain Terraform Editor.hfl":["scripts.vl2"],"help/7. Terrain Texture Editor.hfl":["scripts.vl2"],"help/8. Terrain Texture Painter.hfl":["scripts.vl2"],"input.log":["base.vl2"],"interiors/Euro4_Bleed_Base.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Euro4_Bleed_turret.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Euro4_Bleed_vpad.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Euro4_Dissention_dox_bb_bunkera_x2.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_Dissention_dox_bb_hangar_x2.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_Dissention_rilke_whitedwarf_mainbase.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_FrozenHope_inf_butch_fhope_base47.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_FrozenHope_inf_butch_fhope_flag6.dif":["TWL2-MapPack.vl2"],"interiors/Euro4_FrozenHope_inf_butch_fhope_turret12.dif":["TWL2-MapPack.vl2"],"interiors/Euro_salgenroom2.dif":["TWL-MapPack.vl2"],"interiors/Euro_salproj1.dif":["TWL-MapPack.vl2"],"interiors/Euro_salturretsus1.dif":["TWL-MapPack.vl2"],"interiors/Euro_slblocks.dif":["TWL-MapPack.vl2"],"interiors/Euro_slinvstat.dif":["TWL-MapPack.vl2"],"interiors/Euro_slremo2.dif":["TWL-MapPack.vl2"],"interiors/Euro_slsusbr1.dif":["TWL-MapPack.vl2"],"interiors/Euro_slvehramp1.dif":["TWL-MapPack.vl2"],"interiors/Magellan_kab_magbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Magellan_kab_magflagstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Magellan_kab_turretstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/SpinCycle_spbase2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Starfallen.dif":["Classic_maps_v1.vl2"],"interiors/TL_bmiscpan_ruind.dif":["TWL2-MapPack.vl2"],"interiors/TL_btowr9.dif":["TWL2-MapPack.vl2"],"interiors/TL_drorck-base.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnumbase.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/TL_magnumflag.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnummisc.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnumturret.dif":["TWL2-MapPack.vl2"],"interiors/TL_magnumvs.dif":["TWL2-MapPack.vl2"],"interiors/Vpad_Bunker.dif":["TWL-MapPack.vl2"],"interiors/Xtra_AF_airtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_AF_invowheel.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_AF_newbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Bastage_BT_MainBase_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Bastage_BT_bunktower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Bastage_BT_tunnel.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_bridge.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_lamp.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_main.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Caustic_tri_turret.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Crown_tri_flag.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Crown_tri_turret.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_cross.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_cross2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_obtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_tombstone2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_GraveStone_tombstone3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_Base_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_BunkerA.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_Flagstand_mk2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_HM_TurretPillar.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Hellfire_dbase_ccb1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Hellfire_dmisc_int_fstand_old.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Hellfire_dwall_ccb1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1_mod2a.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1_mod3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_base1_mod4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_bridge1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_bridge2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Insurgence_ccb_bd_platform2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_salgenroom2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_salproj1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_salturretsus1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slblocks.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slinvstat.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slremo2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slsusbr1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Malignant_slvehramp1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ProjectX_tribalma5ters_coyboybebop_basecom1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ProjectX_tunneloflove.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepbridge4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepbridge4b.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepbridgeh4b.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepsab3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_SR_eepsab4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Torrent_kif_bigbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Torrent_kif_torrent_turret_tower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_attackgate.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_base.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_gate.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_guntower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_medtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Vestige_vpad.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_WSol_Flagstand_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_WSol_GenBase_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_WSol_Turret_CK.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Xerxes_Turret.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Xerxes_Turret2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_Xerxes_proto.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ZV_bbunk_ccb1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ZV_ccb_be_spire1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_infernoflagstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_stormflagstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_tower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_attrition_vbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_beachchair01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_dmisc_-nefflagstand1_x2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_ghostdance_proto.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_base01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_bunker01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_stand01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_imperium_tower01.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_bridge.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_bridge_tunnel.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_lush_mainbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_rip.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_metaltanks_xing.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_rst_transitbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_rst_transitstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/Xtra_t_base0.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_cardiacbase.dif":["S8maps.vl2"],"interiors/anthem_cardiacbridge.dif":["S8maps.vl2"],"interiors/anthem_cardiacstand.dif":["S8maps.vl2"],"interiors/anthem_cardiactower.dif":["S8maps.vl2"],"interiors/anthem_cardiacturret.dif":["S8maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipebasemini.dif":["S5maps.vl2"],"interiors/anthem_pipebunker.dif":["S5maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-badlands.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-beach.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-desert.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-ice.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2-lava.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pipestand2.dif":["S5maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/anthem_pitbase.dif":["S5maps.vl2"],"interiors/anthem_pitstand.dif":["S5maps.vl2"],"interiors/anthemblock.dif":["S5maps.vl2"],"interiors/bbase1.dif":["interiors.vl2"],"interiors/bbase4cm.dif":["interiors.vl2"],"interiors/bbase6.dif":["interiors.vl2"],"interiors/bbase7.dif":["interiors.vl2"],"interiors/bbase9.dif":["interiors.vl2"],"interiors/bbase_-nefvbase_x.dif":["TWL-MapPack.vl2"],"interiors/bbase_-nefvbase_x2.dif":["TWL-MapPack.vl2"],"interiors/bbase_ccb1.dif":["TWL-MapPack.vl2"],"interiors/bbase_ccb5.dif":["Classic_maps_v1.vl2"],"interiors/bbase_nefhillside.dif":["Classic_maps_v1.vl2"],"interiors/bbrdg0.dif":["interiors.vl2"],"interiors/bbrdg1.dif":["interiors.vl2"],"interiors/bbrdg2.dif":["interiors.vl2"],"interiors/bbrdg3.dif":["interiors.vl2"],"interiors/bbrdg4.dif":["interiors.vl2"],"interiors/bbrdg5.dif":["interiors.vl2"],"interiors/bbrdg6.dif":["interiors.vl2"],"interiors/bbrdg7.dif":["interiors.vl2"],"interiors/bbrdg8.dif":["interiors.vl2"],"interiors/bbrdg9.dif":["interiors.vl2"],"interiors/bbrdga.dif":["interiors.vl2"],"interiors/bbrdgb.dif":["interiors.vl2"],"interiors/bbrdgn.dif":["interiors.vl2"],"interiors/bbrdgo.dif":["interiors.vl2"],"interiors/bbunk1.dif":["interiors.vl2"],"interiors/bbunk2.dif":["interiors.vl2"],"interiors/bbunk5.dif":["interiors.vl2"],"interiors/bbunk7.dif":["interiors.vl2"],"interiors/bbunk8.dif":["interiors.vl2"],"interiors/bbunk9.dif":["interiors.vl2"],"interiors/bbunkb.dif":["interiors.vl2"],"interiors/bbunkc.dif":["interiors.vl2"],"interiors/bbunkd.dif":["interiors.vl2"],"interiors/bbunke.dif":["Classic_maps_v1.vl2","DynamixFinalPack.vl2"],"interiors/bmisc1.dif":["interiors.vl2"],"interiors/bmisc2.dif":["interiors.vl2"],"interiors/bmisc3.dif":["interiors.vl2"],"interiors/bmisc4.dif":["interiors.vl2"],"interiors/bmisc5.dif":["interiors.vl2"],"interiors/bmisc6.dif":["interiors.vl2"],"interiors/bmisc7.dif":["interiors.vl2"],"interiors/bmisc8.dif":["interiors.vl2"],"interiors/bmisc9.dif":["interiors.vl2"],"interiors/bmisc_-nef_flagstand1_x.dif":["TR2final105-client.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmisc_-nef_flagstand1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmisc_nefledge1.dif":["Classic_maps_v1.vl2"],"interiors/bmisc_neftrstand1.dif":["TR2final105-client.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmisc_nefvbay.dif":["Classic_maps_v1.vl2"],"interiors/bmiscpan_bridge0.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_bridge0_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_bunker1.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_bunker1_x.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_bunker1_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruina.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruina_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinb.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinb_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinc.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinc_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruind.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruind_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruine.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruine_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinf.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinf_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruing.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruing_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruinh.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_ruinh_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_ruini.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_tower1.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_tower1_x2.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_tower2.dif":["DynamixFinalPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/bmiscpan_tower2_x.dif":["TWL-MapPack.vl2"],"interiors/bmiscpan_tower2_x2.dif":["TWL-MapPack.vl2"],"interiors/bplat1.dif":["interiors.vl2"],"interiors/bplat2.dif":["interiors.vl2"],"interiors/bplat3.dif":["interiors.vl2"],"interiors/bplat4.dif":["interiors.vl2"],"interiors/bplat6.dif":["interiors.vl2"],"interiors/bpower1.dif":["interiors.vl2"],"interiors/brock6.dif":["interiors.vl2"],"interiors/brock7.dif":["interiors.vl2"],"interiors/brock8.dif":["interiors.vl2"],"interiors/brocka.dif":["interiors.vl2"],"interiors/brockc.dif":["interiors.vl2"],"interiors/bspir1.dif":["interiors.vl2"],"interiors/bspir2.dif":["interiors.vl2"],"interiors/bspir3.dif":["interiors.vl2"],"interiors/bspir4.dif":["interiors.vl2"],"interiors/bspir5.dif":["interiors.vl2"],"interiors/btf_base1.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_bridge1.dif":["DynamixFinalPack.vl2"],"interiors/btf_bridge2.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_bridge3.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_genbunk.dif":["DynamixFinalPack.vl2"],"interiors/btf_turretplatform.dif":["DynamixFinalPack.vl2","TWL-MapPack.vl2"],"interiors/btf_turretplatform_c.dif":["Classic_maps_v1.vl2"],"interiors/btf_turretplatform_x.dif":["TWL-MapPack.vl2"],"interiors/btf_turretplatform_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/btowr2.dif":["interiors.vl2"],"interiors/btowr5-Lava.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/btowr5.dif":["interiors.vl2"],"interiors/btowr6.dif":["interiors.vl2"],"interiors/btowr8.dif":["interiors.vl2"],"interiors/btowr9.dif":["DynamixFinalPack.vl2"],"interiors/btowr_ccb1.dif":["TWL2-MapPack.vl2"],"interiors/btowra.dif":["interiors.vl2"],"interiors/bvpad.dif":["interiors.vl2"],"interiors/bwall1.dif":["interiors.vl2"],"interiors/bwall2.dif":["interiors.vl2"],"interiors/bwall3.dif":["interiors.vl2"],"interiors/bwall4.dif":["interiors.vl2"],"interiors/cannon.dif":["TR2final105-client.vl2"],"interiors/cannon2.dif":["TR2final105-client.vl2"],"interiors/cap.dif":["TR2final105-client.vl2"],"interiors/ccb_be_tower1a_x2.dif":["TWL-MapPack.vl2"],"interiors/ccb_be_tower1b_x2.dif":["S5maps.vl2","TWL-MapPack.vl2","TWL2-MapPack.vl2"],"interiors/ccbase1.dif":["TWL2-MapPack.vl2"],"interiors/ccbase2.dif":["TWL2-MapPack.vl2"],"interiors/ccflagstand.dif":["TWL2-MapPack.vl2"],"interiors/cctower.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/centaur.dif":["S5maps.vl2"],"interiors/centower.dif":["S5maps.vl2"],"interiors/conbase.dif":["TWL2-MapPack.vl2"],"interiors/conspire.dif":["TWL2-MapPack.vl2"],"interiors/damnationstand.dif":["S5maps.vl2"],"interiors/dbase2.dif":["interiors.vl2"],"interiors/dbase3.dif":["interiors.vl2"],"interiors/dbase4.dif":["interiors.vl2"],"interiors/dbase5.dif":["DynamixFinalPack.vl2"],"interiors/dbase6.dif":["DynamixFinalPack.vl2"],"interiors/dbase_-nefbase1_x.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_-nefbase1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_-nefbase2_x.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_-nefbase2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbase_broadside_nef.dif":["Classic_maps_v1.vl2"],"interiors/dbase_nefRaindance.dif":["Classic_maps_v1.vl2"],"interiors/dbase_neffloat1.dif":["Classic_maps_v1.vl2"],"interiors/dbase_neffloat2.dif":["Classic_maps_v1.vl2"],"interiors/dbase_neficeridge.dif":["Classic_maps_v1.vl2"],"interiors/dbase_tokrz_scarabrae.dif":["Classic_maps_v1.vl2"],"interiors/dbrdg1.dif":["interiors.vl2"],"interiors/dbrdg10.dif":["interiors.vl2"],"interiors/dbrdg11.dif":["interiors.vl2"],"interiors/dbrdg2.dif":["interiors.vl2"],"interiors/dbrdg3.dif":["interiors.vl2"],"interiors/dbrdg3a.dif":["interiors.vl2"],"interiors/dbrdg4.dif":["interiors.vl2"],"interiors/dbrdg5.dif":["interiors.vl2"],"interiors/dbrdg6.dif":["interiors.vl2"],"interiors/dbrdg7.dif":["interiors.vl2"],"interiors/dbrdg7a.dif":["interiors.vl2"],"interiors/dbrdg8.dif":["interiors.vl2"],"interiors/dbrdg9.dif":["interiors.vl2"],"interiors/dbrdg9a.dif":["interiors.vl2"],"interiors/dbunk5.dif":["interiors.vl2"],"interiors/dbunk6.dif":["interiors.vl2"],"interiors/dbunk_nef_invbunk1.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_nefcliffside.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_nefdcbunk.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_nefsmall.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_rf04.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dbunk_snowblind.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_stonehenge1.dif":["Classic_maps_v1.vl2"],"interiors/dbunk_vbunk1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc1.dif":["DynamixFinalPack.vl2","interiors.vl2"],"interiors/dmisc1_x.dif":["TWL-MapPack.vl2"],"interiors/dmisc1_x2.dif":["TWL-MapPack.vl2"],"interiors/dmisc_-nefflagstand1_x.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dmisc_-nefflagstand1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dmisc_nefbridge.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefflagstand2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefflagstand3.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefobj1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefobj2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefplat1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefplug1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_nefrdbridge1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_neftower1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_neftower2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_neftower3.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_stonehenge1.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_stonehenge2.dif":["Classic_maps_v1.vl2"],"interiors/dmisc_stonehenge3.dif":["Classic_maps_v1.vl2"],"interiors/doubleramp2.dif":["TR2final105-client.vl2"],"interiors/dox_bb_box_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_bunkera_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_bunkerb_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_droptop_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_fstand_x2.dif":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"interiors/dox_bb_hangar_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_platform_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_rig_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_rustbox_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_sandcastle_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_slab_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_spade_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_steelsheet2_x2.dif":["TWL-MapPack.vl2"],"interiors/dox_bb_steelsheet_x2.dif":["TWL-MapPack.vl2"],"interiors/dplat1.dif":["interiors.vl2"],"interiors/dplat2.dif":["DynamixFinalPack.vl2","interiors.vl2"],"interiors/dplat3.dif":["interiors.vl2"],"interiors/dpole1.dif":["interiors.vl2"],"interiors/drock6.dif":["interiors.vl2"],"interiors/drock7.dif":["interiors.vl2"],"interiors/drock8.dif":["interiors.vl2"],"interiors/drocka.dif":["interiors.vl2"],"interiors/dspir1.dif":["interiors.vl2"],"interiors/dspir2.dif":["interiors.vl2"],"interiors/dspir3.dif":["interiors.vl2"],"interiors/dspir4.dif":["interiors.vl2"],"interiors/dspir5.dif":["interiors.vl2"],"interiors/dtowr1.dif":["DynamixFinalPack.vl2","interiors.vl2"],"interiors/dtowr2.dif":["interiors.vl2"],"interiors/dtowr4.dif":["interiors.vl2"],"interiors/dtowr_classic1.dif":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/dvent.dif":["interiors.vl2"],"interiors/dvpad.dif":["interiors.vl2"],"interiors/dvpad1.dif":["interiors.vl2"],"interiors/dwall1.dif":["interiors.vl2"],"interiors/epicrates_base.dif":["TWL-MapPack.vl2"],"interiors/epicrates_bridge.dif":["TWL-MapPack.vl2"],"interiors/epicrates_turret.dif":["TWL-MapPack.vl2"],"interiors/flagbridge.dif":["Classic_maps_v1.vl2"],"interiors/flingbase01.dif":["S5maps.vl2"],"interiors/flingbase02.dif":["S5maps.vl2"],"interiors/flingrock01.dif":["S8maps.vl2"],"interiors/flingrockvent01.dif":["S8maps.vl2"],"interiors/flingsilo03.dif":["S8maps.vl2"],"interiors/flingsilo03b.dif":["S8maps.vl2"],"interiors/flingstand01.dif":["S5maps.vl2"],"interiors/flingstand02.dif":["S8maps.vl2"],"interiors/flingtanktrap01.dif":["S8maps.vl2"],"interiors/flingteeth.dif":["S5maps.vl2"],"interiors/flingtower01.dif":["S5maps.vl2"],"interiors/flingtower02.dif":["S5maps.vl2"],"interiors/flingturretstand01.dif":["S5maps.vl2"],"interiors/flingvpad01.dif":["S8maps.vl2"],"interiors/flingvpad01b.dif":["S8maps.vl2"],"interiors/frostclawbase.dif":["TWL-MapPack.vl2"],"interiors/hbbunker.dif":["TWL2-MapPack.vl2"],"interiors/hbflagstand.dif":["TWL2-MapPack.vl2"],"interiors/idbase.dif":["TWL2-MapPack.vl2"],"interiors/idhangar.dif":["TWL2-MapPack.vl2"],"interiors/idmiddle.dif":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/inf_butch_fg2base1.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_fg2flag21.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_fg2turret13.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_fg2turret9.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_icebase51.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_iceturretbase9.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_icevehicle11.dif":["TWL2-MapPack.vl2"],"interiors/inf_butch_lava_flagbase06.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/inf_butch_lava_plat6.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/inf_butch_lava_sensor12.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/infbutch_blackairinv13.dif":["Classic_maps_v1.vl2"],"interiors/infbutch_blackbase5618_final.dif":["Classic_maps_v1.vl2"],"interiors/infbutch_blackturret8.dif":["Classic_maps_v1.vl2"],"interiors/irisbase.dif":["TWL-MapPack.vl2"],"interiors/irisinside.dif":["TWL-MapPack.vl2"],"interiors/irismonu.dif":["TWL-MapPack.vl2"],"interiors/irisruin2.dif":["TWL-MapPack.vl2"],"interiors/irisruin3.dif":["TWL-MapPack.vl2"],"interiors/irisruins1.dif":["TWL-MapPack.vl2"],"interiors/iristurbase.dif":["TWL-MapPack.vl2"],"interiors/jagged_base3.dif":["TWL2-MapPack.vl2"],"interiors/kif_cinereousfs.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_cinereousinv.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_cinereousplat1.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_cinereoustt.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/kif_skylightbase.dif":["TWL2-MapPack.vl2"],"interiors/kif_skylightfs.dif":["TWL2-MapPack.vl2"],"interiors/magnum_vehicle_stop.dif":["TWL2-MapPack.vl2"],"interiors/mmbase.dif":["TWL2-MapPack.vl2"],"interiors/mmbridge.dif":["TWL2-MapPack.vl2"],"interiors/muddyswampstand.dif":["TWL2-MapPack.vl2"],"interiors/nef_bowl1.dif":["TR2final105-client.vl2"],"interiors/nef_bowl2.dif":["TR2final105-client.vl2"],"interiors/nef_bowl3.dif":["TR2final105-client.vl2"],"interiors/nef_ramp1.dif":["TR2final105-client.vl2"],"interiors/nycto-base1.dif":["TWL-MapPack.vl2"],"interiors/nycto-base2.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec1.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec2.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec3.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec4.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec5.dif":["TWL-MapPack.vl2"],"interiors/nycto-ec6.dif":["TWL-MapPack.vl2"],"interiors/nycto-stand1.dif":["TWL-MapPack.vl2"],"interiors/nycto-tunnel-1.dif":["TWL-MapPack.vl2"],"interiors/ocular-flagstand.dif":["TWL2-MapPack.vl2"],"interiors/pbase3.dif":["interiors.vl2"],"interiors/pbase_nef_giant.dif":["Classic_maps_v1.vl2"],"interiors/pbase_nef_vbase1.dif":["Classic_maps_v1.vl2"],"interiors/pbrdg0.dif":["interiors.vl2"],"interiors/pbrdg1.dif":["interiors.vl2"],"interiors/pbrdg2.dif":["interiors.vl2"],"interiors/pbrdg3.dif":["interiors.vl2"],"interiors/pbrdg4.dif":["interiors.vl2"],"interiors/pbrdgn.dif":["interiors.vl2"],"interiors/pbrdgo.dif":["interiors.vl2"],"interiors/pbrdgp.dif":["interiors.vl2"],"interiors/pbunk1.dif":["interiors.vl2"],"interiors/pbunk2.dif":["interiors.vl2"],"interiors/pbunk3.dif":["interiors.vl2"],"interiors/pbunk4a_CC.dif":["Classic_maps_v1.vl2"],"interiors/pbunk5.dif":["interiors.vl2"],"interiors/pbunk6.dif":["interiors.vl2"],"interiors/pbunk7.dif":["interiors.vl2"],"interiors/pbunk7a_CC.dif":["Classic_maps_v1.vl2"],"interiors/pbunk8.dif":["interiors.vl2"],"interiors/peach_lush_bunker1.dif":["TWL2-MapPack.vl2"],"interiors/pmisc1.dif":["interiors.vl2"],"interiors/pmisc2.dif":["interiors.vl2"],"interiors/pmisc3.dif":["interiors.vl2"],"interiors/pmisc4.dif":["interiors.vl2"],"interiors/pmisc5.dif":["interiors.vl2"],"interiors/pmisca.dif":["interiors.vl2"],"interiors/pmiscb.dif":["interiors.vl2"],"interiors/pmiscc.dif":["interiors.vl2"],"interiors/pplat1.dif":["interiors.vl2"],"interiors/pplat2.dif":["interiors.vl2"],"interiors/pplat3.dif":["interiors.vl2"],"interiors/pplat4.dif":["interiors.vl2"],"interiors/pplat5.dif":["interiors.vl2"],"interiors/prock6.dif":["interiors.vl2"],"interiors/prock7.dif":["interiors.vl2"],"interiors/prock8.dif":["interiors.vl2"],"interiors/procka.dif":["interiors.vl2"],"interiors/prockb.dif":["interiors.vl2"],"interiors/prockc.dif":["interiors.vl2"],"interiors/pspir1.dif":["interiors.vl2"],"interiors/pspir2.dif":["interiors.vl2"],"interiors/pspir3.dif":["interiors.vl2"],"interiors/pspir4.dif":["interiors.vl2"],"interiors/pspir5.dif":["interiors.vl2"],"interiors/ptowr1.dif":["interiors.vl2"],"interiors/ptowr2.dif":["interiors.vl2"],"interiors/ptowr4.dif":["interiors.vl2"],"interiors/ptowr5.dif":["interiors.vl2"],"interiors/ptowr7.dif":["interiors.vl2"],"interiors/pvbay1.dif":["interiors.vl2"],"interiors/pvpad.dif":["interiors.vl2"],"interiors/pwall1.dif":["interiors.vl2"],"interiors/rail1.dif":["TR2final105-client.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/ram_base.dif":["Classic_maps_v1.vl2"],"interiors/ram_tower.dif":["Classic_maps_v1.vl2"],"interiors/ram_wall4.dif":["Classic_maps_v1.vl2"],"interiors/ramp1.dif":["TR2final105-client.vl2"],"interiors/rilke_bombscare_flagstand_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_ctm1_flagstand1_x2.dif":["TWL-MapPack.vl2"],"interiors/rilke_ctm1_platform1_x2.dif":["TWL-MapPack.vl2"],"interiors/rilke_ctm1_sensorbunker1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_ctm1_sensorbunker2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_ctm1_vpad_x2.dif":["TWL-MapPack.vl2"],"interiors/rilke_domain2_boundrymarker.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain2_boundrymarker2.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain2_bridge1.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain2_mainbase.dif":["Classic_maps_v1.vl2"],"interiors/rilke_domain_turretbase1.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_bridge.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_bridge2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_bridgebase1_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_bunker2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_mainbase.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_platform1.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_platform2_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_platform3_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_towerbunker.dif":["Classic_maps_v1.vl2"],"interiors/rilke_whitedwarf_towerbunker2_x2.dif":["S5maps.vl2","TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rilke_whitedwarf_vehiclepad_x2.dif":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_FaceBase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_FaceBase2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_FaceStand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave1_part1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave1_part2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave1_part3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEcave2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SEtower.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_SimpleFlagArena.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_agroleonbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_agroleonstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_arenalight.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_astro_bunker.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_astro_stand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_barrier1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_barrier2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_beagleship.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbunker.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbunker2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterbunker3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_bitterstand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_debris1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_debris2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building5.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building6.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building7.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_building8.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_bunker.dif":["S5maps.vl2"],"interiors/rst_derm_citybase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_citybridge.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_mainbase.dif":["S5maps.vl2"],"interiors/rst_derm_midfield.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_derm_newpillarstand.dif":["S5maps.vl2"],"interiors/rst_derm_pillar.dif":["S5maps.vl2"],"interiors/rst_derm_plat.dif":["S5maps.vl2"],"interiors/rst_derm_plat2.dif":["S5maps.vl2"],"interiors/rst_derm_podium.dif":["S5maps.vl2"],"interiors/rst_derm_snipenest.dif":["S5maps.vl2"],"interiors/rst_derm_turretbase.dif":["S5maps.vl2"],"interiors/rst_derm_vechpad.dif":["S5maps.vl2"],"interiors/rst_dogma_base.dif":["S8maps.vl2"],"interiors/rst_dogma_bridge.dif":["S8maps.vl2"],"interiors/rst_dogma_bridge2.dif":["S8maps.vl2"],"interiors/rst_islebase.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_islebase2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lighthouse.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_flagplat.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle1.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle10.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle3.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle4.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle5.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle6.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle7.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle8.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_floatingisle9.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_lush_rock2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_newlighthouse.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_padbottom.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_padbottom2.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_pipedream.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_spir_base3.dif":["S8maps.vl2"],"interiors/rst_spir_pillar.dif":["S8maps.vl2"],"interiors/rst_spit_base.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_spit_stand.dif":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/rst_swd_flagstand.dif":["S5maps.vl2"],"interiors/rst_swd_ship2.dif":["S5maps.vl2"],"interiors/ruin1.dif":["Classic_maps_v1.vl2"],"interiors/ruin2.dif":["Classic_maps_v1.vl2"],"interiors/ruin3.dif":["Classic_maps_v1.vl2"],"interiors/ruin4.dif":["Classic_maps_v1.vl2"],"interiors/ruinarch.dif":["Classic_maps_v1.vl2"],"interiors/s5_anthem_pipebase.dif":["S5maps.vl2"],"interiors/s5_anthem_pipestand.dif":["S5maps.vl2"],"interiors/sbase1.dif":["interiors.vl2"],"interiors/sbase3.dif":["interiors.vl2"],"interiors/sbase5.dif":["interiors.vl2"],"interiors/sbrdg1.dif":["interiors.vl2"],"interiors/sbrdg2.dif":["interiors.vl2"],"interiors/sbrdg3.dif":["interiors.vl2"],"interiors/sbrdg4.dif":["interiors.vl2"],"interiors/sbrdg5.dif":["interiors.vl2"],"interiors/sbrdg6.dif":["interiors.vl2"],"interiors/sbrdg7.dif":["interiors.vl2"],"interiors/sbrdgn.dif":["interiors.vl2"],"interiors/sbrdgo.dif":["interiors.vl2"],"interiors/sbunk2.dif":["interiors.vl2"],"interiors/sbunk9.dif":["interiors.vl2"],"interiors/sbunk_nef1.dif":["Classic_maps_v1.vl2"],"interiors/siege.dif":["Classic_maps_v1.vl2"],"interiors/singleramp.dif":["TR2final105-client.vl2"],"interiors/smisc1.dif":["interiors.vl2"],"interiors/smisc3.dif":["interiors.vl2"],"interiors/smisc4.dif":["interiors.vl2"],"interiors/smisc5.dif":["interiors.vl2"],"interiors/smisc_nef1.dif":["Classic_maps_v1.vl2"],"interiors/smisca.dif":["interiors.vl2"],"interiors/smiscb.dif":["interiors.vl2"],"interiors/smiscc.dif":["interiors.vl2"],"interiors/spawnbase.dif":["TR2final105-client.vl2"],"interiors/spawnbase2.dif":["TR2final105-client.vl2"],"interiors/sphere.dif":["TR2final105-client.vl2"],"interiors/splat1.dif":["interiors.vl2"],"interiors/splat3.dif":["interiors.vl2"],"interiors/splat7.dif":["interiors.vl2"],"interiors/srock6.dif":["interiors.vl2"],"interiors/srock7.dif":["interiors.vl2"],"interiors/srock8.dif":["interiors.vl2"],"interiors/srocka.dif":["interiors.vl2"],"interiors/srockb.dif":["interiors.vl2"],"interiors/srockc.dif":["interiors.vl2"],"interiors/sspir1.dif":["interiors.vl2"],"interiors/sspir2.dif":["interiors.vl2"],"interiors/sspir3.dif":["interiors.vl2"],"interiors/sspir4.dif":["interiors.vl2"],"interiors/stowr1.dif":["interiors.vl2"],"interiors/stowr3.dif":["interiors.vl2"],"interiors/stowr4.dif":["interiors.vl2"],"interiors/stowr6.dif":["interiors.vl2"],"interiors/svpad.dif":["interiors.vl2"],"interiors/swall1.dif":["interiors.vl2"],"interiors/t_bbase_ccb2a.dif":["Classic_maps_v1.vl2"],"interiors/t_bmisc_tunl_ccb1.dif":["Classic_maps_v1.vl2"],"interiors/t_bwall2a_cnr_CC.dif":["Classic_maps_v1.vl2"],"interiors/t_bwall2a_lrg_CC.dif":["Classic_maps_v1.vl2"],"interiors/t_bwall2a_sm_CC.dif":["Classic_maps_v1.vl2"],"interiors/tes_flagbase_x2.dif":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"interiors/tes_flagbunker.dif":["TWL-MapPack.vl2"],"interiors/tes_flyingvehicle_x2.dif":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"interiors/tes_flyingvehiclebase.dif":["TWL-MapPack.vl2"],"interiors/tes_turretholder.dif":["TWL-MapPack.vl2"],"interiors/tri_base.dif":["DynamixFinalPack.vl2"],"interiors/tri_gate.dif":["DynamixFinalPack.vl2"],"interiors/tri_misc1.dif":["DynamixFinalPack.vl2"],"interiors/tri_powerpit.dif":["DynamixFinalPack.vl2"],"interiors/tri_tbunker.dif":["DynamixFinalPack.vl2"],"interiors/tri_tbunker_x.dif":["TWL-MapPack.vl2"],"interiors/tri_tbunker_x2.dif":["TWL-MapPack.vl2"],"interiors/tri_tower.dif":["DynamixFinalPack.vl2"],"interiors/tri_tower_x2.dif":["TWL-MapPack.vl2"],"interiors/tri_wall3.dif":["DynamixFinalPack.vl2"],"interiors/tri_wall4.dif":["DynamixFinalPack.vl2"],"interiors/tri_wall5.dif":["DynamixFinalPack.vl2"],"interiors/tri_wall6.dif":["DynamixFinalPack.vl2"],"interiors/underhillmidbalancedfnl.dif":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"interiors/underhillsideonefnl.dif":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"interiors/xbase1.dif":["interiors.vl2"],"interiors/xbase2.dif":["interiors.vl2"],"interiors/xbrdg0.dif":["interiors.vl2"],"interiors/xbrdg1.dif":["interiors.vl2"],"interiors/xbrdg10.dif":["interiors.vl2"],"interiors/xbrdg2.dif":["interiors.vl2"],"interiors/xbrdg3.dif":["interiors.vl2"],"interiors/xbrdg4.dif":["interiors.vl2"],"interiors/xbrdg5.dif":["interiors.vl2"],"interiors/xbrdg6.dif":["interiors.vl2"],"interiors/xbrdg7.dif":["interiors.vl2"],"interiors/xbrdg8.dif":["interiors.vl2"],"interiors/xbrdg9.dif":["interiors.vl2"],"interiors/xbrdga.dif":["interiors.vl2"],"interiors/xbrdgb.dif":["interiors.vl2"],"interiors/xbrdgn.dif":["interiors.vl2"],"interiors/xbrdgo.dif":["interiors.vl2"],"interiors/xbunk1.dif":["interiors.vl2"],"interiors/xbunk2.dif":["interiors.vl2"],"interiors/xbunk5.dif":["interiors.vl2"],"interiors/xbunk6.dif":["interiors.vl2"],"interiors/xbunk9.dif":["interiors.vl2"],"interiors/xbunkb.dif":["interiors.vl2"],"interiors/xmisc1.dif":["interiors.vl2"],"interiors/xmisc2.dif":["interiors.vl2"],"interiors/xmisc3.dif":["interiors.vl2"],"interiors/xmisc4.dif":["interiors.vl2"],"interiors/xmisc5.dif":["interiors.vl2"],"interiors/xmisca.dif":["interiors.vl2"],"interiors/xmiscb.dif":["interiors.vl2"],"interiors/xmiscc.dif":["interiors.vl2"],"interiors/xplat1.dif":["interiors.vl2"],"interiors/xplat2.dif":["interiors.vl2"],"interiors/xplat3.dif":["interiors.vl2"],"interiors/xrock6.dif":["interiors.vl2"],"interiors/xrock7.dif":["interiors.vl2"],"interiors/xrock8.dif":["interiors.vl2"],"interiors/xrocka.dif":["interiors.vl2"],"interiors/xrockb.dif":["interiors.vl2"],"interiors/xrockc.dif":["interiors.vl2"],"interiors/xspir1.dif":["interiors.vl2"],"interiors/xspir2.dif":["interiors.vl2"],"interiors/xspir3.dif":["interiors.vl2"],"interiors/xspir5.dif":["interiors.vl2"],"interiors/xtowr1.dif":["interiors.vl2"],"interiors/xtowr3.dif":["interiors.vl2"],"interiors/xtowr4.dif":["interiors.vl2"],"interiors/xtowr7.dif":["interiors.vl2"],"interiors/xvpad.dif":["interiors.vl2"],"interiors/xwall1.dif":["interiors.vl2"],"lighting/Aeroena_2343a8be.ml":[""],"lighting/Agorazscium_f4b21f81.ml":[""],"lighting/ArenaDome_a0de9542.ml":[""],"lighting/ArenaHeaven_1e1fe293.ml":[""],"lighting/AstersDescent_53a3207b.ml":[""],"lighting/AttritionLT_832adbb5.ml":[""],"lighting/BerylBasin_c9d35ce.ml":[""],"lighting/Blastside_nef_6830e4bf.ml":[""],"lighting/Blink_d9ab8a18.ml":[""],"lighting/BonespurLT_915823ed.ml":[""],"lighting/BonespurLT_9cca0579.ml":[""],"lighting/BoxLak_a3e35494.ml":[""],"lighting/Broadside_nef_e852f76.ml":[""],"lighting/BulwarkLT_4a3f297.ml":[""],"lighting/Bulwark_ab283278.ml":[""],"lighting/CankerLak_2f63997d.ml":[""],"lighting/CapriLT_66f22508.ml":[""],"lighting/Cinerarium_7aca722b.ml":[""],"lighting/Circleofstones_affcd75f.ml":[""],"lighting/CirclesEdgeLT_411f1e4d.ml":[""],"lighting/CirclesEdgeLT_7a5c076c.ml":[""],"lighting/CloakofLak_74b7f3a4.ml":[""],"lighting/CloakofNightV_fc052e2a.ml":[""],"lighting/CloudBurst_ae430433.ml":[""],"lighting/ClusterUnFuct_ba9a0db4.ml":[""],"lighting/Coliseum_638e3c7c.ml":[""],"lighting/Confusco_629e6bc0.ml":[""],"lighting/CrashClash_4a04db6b.ml":[""],"lighting/CrossfiredLak_af679bb1.ml":[""],"lighting/DMP_Agroleon_39e78691.ml":[""],"lighting/DMP_BastardForgeLT_192bda18.ml":[""],"lighting/DMP_BastardForgeLT_23118b55.ml":[""],"lighting/DMP_BastardForge_69e0050.ml":[""],"lighting/DMP_BunkeredLT_22bd8e06.ml":[""],"lighting/DMP_BunkeredLT_7f074860.ml":[""],"lighting/DMP_CinerariumLT_1770607b.ml":[""],"lighting/DMP_Cinerarium_29f905f2.ml":[""],"lighting/DMP_FaceCrossing_562603da.ml":[""],"lighting/DMP_Hoth_1f2b4ebe.ml":[""],"lighting/DMP_IceGiant_27ae32f9.ml":[""],"lighting/DMP_Magellan_3ec75495.ml":[""],"lighting/DMP_MoonDance_4a0aa2ce.ml":[""],"lighting/DMP_Paranoia_a73116c7.ml":[""],"lighting/DMP_PariahLT_1eeeb2f3.ml":[""],"lighting/DMP_PariahLT_5dbbd253.ml":[""],"lighting/DMP_Pariah_5774d3ab.ml":[""],"lighting/DMP_Pariah_bae29d7a.ml":[""],"lighting/DMP_PipeDream_b4220f7e.ml":[""],"lighting/DMP_RavineV_32d83be0.ml":[""],"lighting/DMP_ScorchedEarth_6ef2eb26.ml":[""],"lighting/DMP_SimpleFlagArena_81bb7f85.ml":[""],"lighting/DMP_SpinCycle_8111999d.ml":[""],"lighting/DMP_SpincycleLT_c077aa18.ml":[""],"lighting/DMP_StarFallLT_313a7dd7.ml":[""],"lighting/DMP_StarFallLT_51b265f4.ml":[""],"lighting/DMP_Tyre_5d7be94.ml":[""],"lighting/DMP_Wasteland_87bf335.ml":[""],"lighting/DX_IceLT_69603e1f.ml":[""],"lighting/DX_Ice_492b02b7.ml":[""],"lighting/Damnation_a8afd69c.ml":[""],"lighting/DangerousCrossingLT_8205e1c3.ml":[""],"lighting/DangerousCrossingLT_98fe44b0.ml":[""],"lighting/DeathBirdsFly1_e1b6748d.ml":[""],"lighting/DermCrossingDeluxeLT_86255d21.ml":[""],"lighting/DermCrossingDeluxe_b5489c73.ml":[""],"lighting/DesertofDeathLak_9ef72690.ml":[""],"lighting/DiscordLT_8799b81.ml":[""],"lighting/Discord_d9dc93e8.ml":[""],"lighting/DustRunLak_6779c9d4.ml":[""],"lighting/DustToDust_c2ba2158.ml":[""],"lighting/El_FinLT_e9dab457.ml":[""],"lighting/El_Fin_8316b0e5.ml":[""],"lighting/Entombed_e3bacfe0.ml":[""],"lighting/Envyrena_7791ad94.ml":[""],"lighting/EnyLand_68f85a3b.ml":[""],"lighting/Exhumed_20605cf5.ml":[""],"lighting/Extractor_d5e74134.ml":[""],"lighting/FF_Hillside_2daafc5b.ml":[""],"lighting/Fallout_9b18601a.ml":[""],"lighting/Fenix_78eeb8cd.ml":[""],"lighting/Firestorm_16de2343.ml":[""],"lighting/Floatarena_297e95cb.ml":[""],"lighting/FourWayCheckmate_f33d2fb6.ml":[""],"lighting/FrozenForgeLT_743ce94a.ml":[""],"lighting/FrozenForgeLT_9931f1ae.ml":[""],"lighting/FrozenHopeLT_7213db78.ml":[""],"lighting/FrozenHopeLT_b46d68eb.ml":[""],"lighting/FrozenHope_3a657c29.ml":[""],"lighting/FunHouse_604d2f6a.ml":[""],"lighting/GodsRiftLak_18e44714.ml":[""],"lighting/GrassyKnollLT_68c6cce.ml":[""],"lighting/GrassyKnoll_5c7374ad.ml":[""],"lighting/GrassyKnoll_a8a31131.ml":[""],"lighting/GreenLawn_f4f6854f.ml":[""],"lighting/HO_Ice_259f9801.ml":[""],"lighting/HO_Lush_37ea33f0.ml":[""],"lighting/HarvestDance_c7a75c2.ml":[""],"lighting/Headstone_772e32ed.ml":[""],"lighting/Helioarena_1e75a885.ml":[""],"lighting/HiddenValley_a1dce28d.ml":[""],"lighting/HighOctane_85127c80.ml":[""],"lighting/HighOctane_b_ac85e4.ml":[""],"lighting/HighWire_471b6cf9.ml":[""],"lighting/HillKingLT_50bd1439.ml":[""],"lighting/HillKingLT_8da13f48.ml":[""],"lighting/HillKingLT_d836ed12.ml":[""],"lighting/HillSideLT_4f08df8f.ml":[""],"lighting/Hillside_33bc6f09.ml":[""],"lighting/Horde_4a800bd6.ml":[""],"lighting/HostileLoch_d7362c7.ml":[""],"lighting/IcePick_56b79dca.ml":[""],"lighting/IcePick_600de852.ml":[""],"lighting/InfernusLak_7d2be4ad.ml":[""],"lighting/IveHadWorse_e39c99bf.ml":[""],"lighting/JadeValley_7ef73b3d.ml":[""],"lighting/Lakefront_3703d244.ml":[""],"lighting/Logans_Run_c40b6d12.ml":[""],"lighting/Mac_FlagArena_90666881.ml":[""],"lighting/Machineeggs_a5ccddc0.ml":[""],"lighting/MagmaticLak_4073d809.ml":[""],"lighting/Minerva_33feccb1.ml":[""],"lighting/MiniSunDried_3c5a0fc8.ml":[""],"lighting/Minotaur_171384b8.ml":[""],"lighting/MisadventureV2_ec7544a8.ml":[""],"lighting/Moonwalk_174f2bd4.ml":[""],"lighting/NarcolepsyLT_73e7c21a.ml":[""],"lighting/NatureMagic_2544c03b.ml":[""],"lighting/Nightdance_7bfc8136.ml":[""],"lighting/Norty_eb1bd063.ml":[""],"lighting/OsIrisLT_a734e9f4.ml":[""],"lighting/OsIrisLT_c9b12d6.ml":[""],"lighting/OuterWildsLT_fc7787a1.ml":[""],"lighting/OuterWilds_ad3695ec.ml":[""],"lighting/PipeDreamLT_be0ac5c7.ml":[""],"lighting/PipeDreamLT_c8a581c1.ml":[""],"lighting/PlanetX_8a6e98e8.ml":[""],"lighting/PrizmaticLT_d1bb228d.ml":[""],"lighting/PuliVeivari_ba861c8e.ml":[""],"lighting/RaindanceLT_8b15c940.ml":[""],"lighting/RaindanceLT_ed3eadcd.ml":[""],"lighting/Raindance_nefLak_35b8f6bc.ml":[""],"lighting/Raindance_nef_542af516.ml":[""],"lighting/Ravine_d9f4db83.ml":[""],"lighting/Reversion_16355b81.ml":[""],"lighting/RiverDance_51da8ec1.ml":[""],"lighting/Rollercoaster_nef_236560f9.ml":[""],"lighting/RoundTheMountainLT_1d5f7a42.ml":[""],"lighting/RoundTheMountainLT_d8d7a00a.ml":[""],"lighting/RoundTheMountain_3c873c59.ml":[""],"lighting/Ruined_928042b0.ml":[""],"lighting/RunenmachtLT_566cc4af.ml":[""],"lighting/RunenmachtLT_e29440db.ml":[""],"lighting/RushLT_83e7ec01.ml":[""],"lighting/RushLT_8cc32def.ml":[""],"lighting/Rush_7f8c0bd.ml":[""],"lighting/S5_DamnationLT_2e874420.ml":[""],"lighting/S5_DamnationLT_93d28001.ml":[""],"lighting/S5_Damnation_12876ea.ml":[""],"lighting/S5_Icedance_23935c84.ml":[""],"lighting/S5_MassiveLT_774d8053.ml":[""],"lighting/S5_MassiveLT_aa83559d.ml":[""],"lighting/S5_Massive_72b32b94.ml":[""],"lighting/S5_Massive_a0889977.ml":[""],"lighting/S5_Mimicry_a7de0fbe.ml":[""],"lighting/S5_Mordacity_7f7769e0.ml":[""],"lighting/S5_Reynard_3d07b96b.ml":[""],"lighting/S5_Sherman_d255001b.ml":[""],"lighting/S5_SilenusLT_b44256fa.ml":[""],"lighting/S5_Silenus_337a3c5b.ml":[""],"lighting/S5_Woodymyrk_ec89b88f.ml":[""],"lighting/S8_Cardiac_1b8fd622.ml":[""],"lighting/S8_GeothermalLak_20f3a205.ml":[""],"lighting/S8_Mountking_44b27865.ml":[""],"lighting/S8_Opus_efcc41a2.ml":[""],"lighting/S8_ZilchLT_b45c6931.ml":[""],"lighting/S8_ZilchLT_d5e6be15.ml":[""],"lighting/SC_Ice_af6eba.ml":[""],"lighting/SC_Normal_799da350.ml":[""],"lighting/SaddiesHill_698e83d5.ml":[""],"lighting/Sanctuary_7c20b606.ml":[""],"lighting/SandyRunLT_91cbfd2f.ml":[""],"lighting/Sangre_de_Grado_ae25e9e2.ml":[""],"lighting/Sentry_21483143.ml":[""],"lighting/ShortFall_aa1e57bb.ml":[""],"lighting/SignalLT_4f74b06a.ml":[""],"lighting/SignalLT_9bae58a.ml":[""],"lighting/Signal_e7aade91.ml":[""],"lighting/SkiFree_Randomizer_7dda3eb1.ml":[""],"lighting/SkinnyDipLak_c997a78f.ml":[""],"lighting/Slapdash_93679deb.ml":[""],"lighting/SmallCrossingLT_8b0a6034.ml":[""],"lighting/SmallTimeLT_89653a5e.ml":[""],"lighting/SolsDescentLak_11a78868.ml":[""],"lighting/SpectreLak_5e17e9b3.ml":[""],"lighting/SpyLand_21ea4c6.ml":[""],"lighting/SunDriedLak_e0d74cbd.ml":[""],"lighting/Sundance_2b83620c.ml":[""],"lighting/SuperHappyBouncyFunTime_b901c3ef.ml":[""],"lighting/SuperiorWaterworks_f456e8d9.ml":[""],"lighting/TWL2_Bleed_e6d5b374.ml":[""],"lighting/TWL2_BlueMoon_21ccae9c.ml":[""],"lighting/TWL2_BlueMoon_7c61bcd5.ml":[""],"lighting/TWL2_BlueMoon_a95478a6.ml":[""],"lighting/TWL2_CanyonCrusadeDeluxeLT_c1ae3753.ml":[""],"lighting/TWL2_CanyonCrusadeDeluxeLT_dbd8196e.ml":[""],"lighting/TWL2_CanyonCrusadeDeluxe_7452f969.ml":[""],"lighting/TWL2_CelerityLT_bc01478.ml":[""],"lighting/TWL2_CelerityLT_f2ecb468.ml":[""],"lighting/TWL2_Celerity_83b5b539.ml":[""],"lighting/TWL2_Dissention_d30eb753.ml":[""],"lighting/TWL2_Drifts_a70061b9.ml":[""],"lighting/TWL2_Drorck_add44b54.ml":[""],"lighting/TWL2_FrozenGlory_e2aae3eb.ml":[""],"lighting/TWL2_HildebrandLT_4cb441fb.ml":[""],"lighting/TWL2_HildebrandLT_fbf9260d.ml":[""],"lighting/TWL2_Hildebrand_ff9349b8.ml":[""],"lighting/TWL2_IceDagger_a8551aa2.ml":[""],"lighting/TWL2_JaggedClawLT_13a8fe76.ml":[""],"lighting/TWL2_JaggedClawLT_caff2b5d.ml":[""],"lighting/TWL2_JaggedClaw_ae434bfa.ml":[""],"lighting/TWL2_Magnum_bbaaf3b7.ml":[""],"lighting/TWL2_MidnightMayhemDeluxe_f0479bd5.ml":[""],"lighting/TWL2_MuddySwamp_202e755e.ml":[""],"lighting/TWL2_Norty_8a4142af.ml":[""],"lighting/TWL2_Ocular_d10fca4c.ml":[""],"lighting/TWL2_SkylightLT_c37d56e9.ml":[""],"lighting/TWL2_SkylightLT_f4b7bcf2.ml":[""],"lighting/TWL_Abaddon_661d5ca.ml":[""],"lighting/TWL_BeachBlitzLT_d50e4150.ml":[""],"lighting/TWL_BeachBlitzLT_ff00cacb.ml":[""],"lighting/TWL_BeachBlitzLak_8391be13.ml":[""],"lighting/TWL_BeachBlitz_2ba27e9a.ml":[""],"lighting/TWL_BeggarsRun_ac20e6fb.ml":[""],"lighting/TWL_Boss_d15d03dd.ml":[""],"lighting/TWL_Chokepoint_a2218645.ml":[""],"lighting/TWL_Crossfire_68b88bb4.ml":[""],"lighting/TWL_Damnation_f601da24.ml":[""],"lighting/TWL_DangerousCrossing_c0f5608a.ml":[""],"lighting/TWL_DeadlyBirdsSong_9eb082cf.ml":[""],"lighting/TWL_Drifts_3957320.ml":[""],"lighting/TWL_FeignLT_423b7f43.ml":[""],"lighting/TWL_FeignLT_97abf48c.ml":[""],"lighting/TWL_Feign_69a86ab3.ml":[""],"lighting/TWL_Harvester_6c61fcbf.ml":[""],"lighting/TWL_Katabatic_28e374c5.ml":[""],"lighting/TWL_Magmatic_79ca25bd.ml":[""],"lighting/TWL_Minotaur_4735e9ea.ml":[""],"lighting/TWL_OsIris_af0cd5e3.ml":[""],"lighting/TWL_Pandemonium_96c05f13.ml":[""],"lighting/TWL_Quagmire_3d196e62.ml":[""],"lighting/TWL_Raindance_e335287d.ml":[""],"lighting/TWL_Ramparts_e1d65b38.ml":[""],"lighting/TWL_Reversion_2057b26c.ml":[""],"lighting/TWL_RollercoasterLT_4becc052.ml":[""],"lighting/TWL_Runenmacht_fce2e1dd.ml":[""],"lighting/TWL_Slapdash_386535c9.ml":[""],"lighting/TWL_Slapdash_6c5d45fc.ml":[""],"lighting/TWL_Snowblind_7d864772.ml":[""],"lighting/TWL_Starfallen_220caf10.ml":[""],"lighting/TWL_StonehengeLT_186408d.ml":[""],"lighting/TWL_StonehengeLT_b54394a1.ml":[""],"lighting/TWL_Stonehenge_4be1bf55.ml":[""],"lighting/TWL_SubZero_d26856d3.ml":[""],"lighting/TWL_Surreal_928c01fe.ml":[""],"lighting/TWL_Titan_f2ca1f12.ml":[""],"lighting/TWL_WilderZoneLT_b23d9623.ml":[""],"lighting/TWL_WilderZoneLT_c9eea074.ml":[""],"lighting/TWL_WilderZone_f391f176.ml":[""],"lighting/Tacocat-DantesHill_1fadb4f4.ml":[""],"lighting/Tacocat-Dunes_b3ca40d2.ml":[""],"lighting/Tacocat-Jagged_2f4bf1c1.ml":[""],"lighting/Tacocat-SoylentJade_a5360959.ml":[""],"lighting/TenebrousCTF_de5eec4e.ml":[""],"lighting/TheFray_ee6d9255.ml":[""],"lighting/TheSewer_f4f75077.ml":[""],"lighting/TibbawLak_104ce121.ml":[""],"lighting/TitanV_b_527804b0.ml":[""],"lighting/TreasureIslandLak_f456aa59.ml":[""],"lighting/Triad_ff08cb0b.ml":[""],"lighting/TrueGrit_95ae0ce4.ml":[""],"lighting/UporDown_5cadb65.ml":[""],"lighting/VanDamnedLT_657123fb.ml":[""],"lighting/VanDamnedLT_fc126eb7.ml":[""],"lighting/VaubanLak_b072a992.ml":[""],"lighting/Vauban_fe733076.ml":[""],"lighting/Waterbox_c7bd8997.ml":[""],"lighting/WhiteDwarfDeluxeLT_7adbd60e.ml":[""],"lighting/WhiteDwarfDeluxeLT_afa63289.ml":[""],"lighting/WindyGap_d2bee4e7.ml":[""],"lighting/Wonderena_a304a21e.ml":[""],"lighting/Yubarena_2638aaa0.ml":[""],"lighting/Zilch_6b242845.ml":[""],"lighting/aabaa_571e7c86.ml":[""],"lighting/berlard_2823ce88.ml":[""],"lighting/cagematch_b93c2e85.ml":[""],"lighting/random2_aeea92ad.ml":[""],"lighting/random_ad5187a1.ml":[""],"loginScreens.cs":["T2csri.vl2"],"loginScreens.cs.dso":["T2csri.vl2"],"missions/2ArenaDome.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2ArenaValley.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2DustBowl.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2Flyersarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2IceDome.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/2IndoorIntensity.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/4thGradeDropout.mis":["4thGradeDropout.vl2"],"missions/Abominable.mis":["missions.vl2"],"missions/AcidRain.mis":["Classic_maps_v1.vl2"],"missions/Aeroena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/AgentsOfFortune.mis":["missions.vl2"],"missions/Alcatraz.mis":["missions.vl2"],"missions/Archipelago.mis":["missions.vl2"],"missions/ArenaHeaven.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaHell.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaHell2.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaInTheHill.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ArenaUnderTheHill.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/AryoArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/AshesToAshes.mis":["missions.vl2"],"missions/Atropos2.mis":["atroposthereturn.vl2"],"missions/BeggarsRun.mis":["missions.vl2"],"missions/BeneathTheHill.mis":["BeneathTheHill.vl2"],"missions/Blastside_nef.mis":["Classic_maps_v1.vl2"],"missions/BrainFreeze.mis":["brainfreeze.vl2"],"missions/BridgeTooFar.mis":["DynamixFinalPack.vl2"],"missions/Broadside_nef.mis":["Classic_maps_v1.vl2"],"missions/Broken_Dreams.mis":["brokendreams_2.vl2"],"missions/Caldera.mis":["missions.vl2"],"missions/Casern_Cavite.mis":["missions.vl2"],"missions/Centaur.mis":["centaur.vl2"],"missions/Checkmate.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ColdFusion.mis":["ColdFusion.vl2"],"missions/ColdWar.mis":["ColdWar.vl2"],"missions/Conclave.mis":["Conclave.vl2"],"missions/Confusco.mis":["Classic_maps_v1.vl2"],"missions/ContainmentLarge.mis":["ContainmentLarge.vl2"],"missions/CrashClash.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Crater71.mis":["TR2final105-client.vl2"],"missions/DMP_Agroleon.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Astro.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_BastardForge.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_BitterGorge.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Bunkered.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Cinerarium.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_DermCity.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Embers.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_EmeraldSpit.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_FaceCrossing.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Hoth.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_IceGiant.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_IsleDeBatalla.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_LavaGods.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Magellan.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_MoonDance.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Pantheon.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Paranoia.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Pariah.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_PipeDream.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_RavineV.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_ScorchedEarth.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_SimpleFlagArena.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_SpinCycle.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_StarFall.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Tyre.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/DMP_Wasteland.mis":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"missions/Damnation.mis":["missions.vl2"],"missions/DangerousCrossingArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/DangerousCrossing_nef.mis":["Classic_maps_v1.vl2"],"missions/DeathBirdsFly.mis":["missions.vl2"],"missions/DeathFromBelow.mis":["DeathFromBelow.vl2"],"missions/DeathRow.mis":["DeathRow.vl2"],"missions/DesertWind.mis":["DesertWind.vl2"],"missions/DesertofDeath_nef.mis":["Classic_maps_v1.vl2"],"missions/Desiccator.mis":["missions.vl2"],"missions/DevilsElbow.mis":["DynamixFinalPack.vl2"],"missions/DraconisVII.mis":["DraconisVII.vl2"],"missions/DustToDust.mis":["missions.vl2"],"missions/Envyrena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/EnyLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Equinox.mis":["missions.vl2"],"missions/Escalade.mis":["missions.vl2"],"missions/EveningLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Exposure.mis":["Exposure-v1.1.vl2"],"missions/FinalRevenge.mis":["FinalRevenge.vl2"],"missions/Firestorm.mis":["missions.vl2"],"missions/Flashpoint.mis":["missions.vl2"],"missions/Fracas.mis":["missions.vl2"],"missions/FrozenFury.mis":["TR2final105-client.vl2"],"missions/Gauntlet.mis":["missions.vl2"],"missions/Gehenna.mis":["missions.vl2"],"missions/Geronimo.mis":["Geronimo.vl2"],"missions/GodsRift.mis":["TR2final105-client.vl2"],"missions/Gorgon.mis":["Classic_maps_v1.vl2"],"missions/Haven.mis":["TR2final105-client.vl2"],"missions/Helioarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Hillside.mis":["Classic_maps_v1.vl2"],"missions/IceBound.mis":["missions.vl2"],"missions/IceRidge_nef.mis":["Classic_maps_v1.vl2"],"missions/InnerSanctum.mis":["DynamixFinalPack.vl2"],"missions/Insalubria.mis":["missions.vl2"],"missions/Invictus.mis":["missions.vl2"],"missions/IsleOfMan.mis":["DynamixFinalPack.vl2"],"missions/IveHadWorse.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/JacobsLadder.mis":["missions.vl2"],"missions/Katabatic.mis":["missions.vl2"],"missions/Khalarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Lakefront.mis":["Classic_maps_v1.vl2"],"missions/Magmatic.mis":["Classic_maps_v1.vl2"],"missions/Masada.mis":["missions.vl2"],"missions/Minotaur.mis":["missions.vl2"],"missions/Morena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/MountainSiege.mis":["MountainSiege.vl2"],"missions/Mudside.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Mutiny.mis":["Mutiny.vl2"],"missions/MyrkWood.mis":["missions.vl2"],"missions/Oasis.mis":["missions.vl2"],"missions/Overreach.mis":["missions.vl2"],"missions/Pantheon.mis":["DynamixFinalPack.vl2"],"missions/Patience.mis":["Patience.vl2"],"missions/PhasmaDust.mis":["TR2final105-client.vl2"],"missions/Planetside.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Prismatic.mis":["Prismatic.vl2"],"missions/ProArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Pyroclasm.mis":["missions.vl2"],"missions/Quagmire.mis":["missions.vl2"],"missions/Raindance_nef.mis":["Classic_maps_v1.vl2"],"missions/Ramparts.mis":["Classic_maps_v1.vl2"],"missions/Rasp.mis":["missions.vl2"],"missions/Recalescence.mis":["missions.vl2"],"missions/Respite.mis":["missions.vl2"],"missions/Reversion.mis":["missions.vl2"],"missions/Ridgerena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Rimehold.mis":["missions.vl2"],"missions/RiverDance.mis":["missions.vl2"],"missions/Rollercoaster_nef.mis":["Classic_maps_v1.vl2"],"missions/S5_Centaur.mis":["S5maps.vl2"],"missions/S5_Damnation.mis":["S5maps.vl2"],"missions/S5_Drache.mis":["S5maps.vl2"],"missions/S5_HawkingHeat.mis":["S5maps.vl2"],"missions/S5_Icedance.mis":["S5maps.vl2"],"missions/S5_Massive.mis":["S5maps.vl2"],"missions/S5_Mimicry.mis":["S5maps.vl2"],"missions/S5_Misadventure.mis":["S5maps.vl2"],"missions/S5_Mordacity.mis":["S5maps.vl2"],"missions/S5_Reynard.mis":["S5maps.vl2"],"missions/S5_Sherman.mis":["S5maps.vl2"],"missions/S5_Silenus.mis":["S5maps.vl2"],"missions/S5_Woodymyrk.mis":["S5maps.vl2"],"missions/S8_Cardiac.mis":["S8maps.vl2"],"missions/S8_CentralDogma.mis":["S8maps.vl2"],"missions/S8_Geothermal.mis":["S8maps.vl2"],"missions/S8_Mountking.mis":["S8maps.vl2"],"missions/S8_Opus.mis":["S8maps.vl2"],"missions/S8_Zilch.mis":["S8maps.vl2"],"missions/Sanctuary.mis":["missions.vl2"],"missions/Sandstorm.mis":["Classic_maps_v1.vl2"],"missions/Scarabrae_nef.mis":["Classic_maps_v1.vl2"],"missions/ShockRidge.mis":["Classic_maps_v1.vl2"],"missions/ShrineArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ShrineArenaII.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/SiegeofYmir.mis":["SiegeofYmir.vl2"],"missions/SilentStorm.mis":["SilentStorm.vl2"],"missions/Sirocco.mis":["missions.vl2"],"missions/SkiFree.mis":["SkiFreeGameType.vl2"],"missions/SkiFreeZ_Championship_2021.mis":["SkiFreeGameType.vl2"],"missions/SkiFree_Daily.mis":["SkiFreeGameType.vl2"],"missions/SkiFree_Randomizer.mis":["SkiFreeGameType.vl2"],"missions/SkinnyDip.mis":["TR2final105-client.vl2"],"missions/Slapdash.mis":["missions.vl2"],"missions/SmogArena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/SnowBound.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Snowblind_nef.mis":["Classic_maps_v1.vl2"],"missions/SoccerLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Solace.mis":["Solace.vl2"],"missions/SolsDescent.mis":["TR2final105-client.vl2"],"missions/SpyLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Starfallen.mis":["Classic_maps_v1.vl2"],"missions/Stonehenge_Arena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Stonehenge_nef.mis":["Classic_maps_v1.vl2"],"missions/SubZero.mis":["Classic_maps_v1.vl2"],"missions/SunDried.mis":["missions.vl2"],"missions/Surreal.mis":["Classic_maps_v1.vl2"],"missions/TWL2_Bleed.mis":["TWL2-MapPack.vl2"],"missions/TWL2_BlueMoon.mis":["TWL2-MapPack.vl2"],"missions/TWL2_CanyonCrusadeDeluxe.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Celerity.mis":["TWL2-MapPack.vl2"],"missions/TWL2_CloakOfNight.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Crevice.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Dissention.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Drifts.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Drorck.mis":["TWL2-MapPack.vl2"],"missions/TWL2_FrozenGlory.mis":["TWL2-MapPack.vl2"],"missions/TWL2_FrozenHope.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Hildebrand.mis":["TWL2-MapPack.vl2"],"missions/TWL2_IceDagger.mis":["TWL2-MapPack.vl2"],"missions/TWL2_JaggedClaw.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Magnum.mis":["TWL2-MapPack.vl2"],"missions/TWL2_MidnightMayhemDeluxe.mis":["TWL2-MapPack.vl2"],"missions/TWL2_MuddySwamp.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Norty.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Ocular.mis":["TWL2-MapPack.vl2"],"missions/TWL2_RoughLand.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Ruined.mis":["TWL2-MapPack.vl2"],"missions/TWL2_Skylight.mis":["TWL2-MapPack.vl2"],"missions/TWL2_WoodyMyrk.mis":["TWL2-MapPack.vl2"],"missions/TWL_Abaddon.mis":["TWL-MapPack.vl2"],"missions/TWL_BaNsHee.mis":["TWL-MapPack.vl2"],"missions/TWL_BeachBlitz.mis":["TWL-MapPack.vl2"],"missions/TWL_BeggarsRun.mis":["TWL-MapPack.vl2"],"missions/TWL_BlueMoon.mis":["TWL-MapPack.vl2"],"missions/TWL_Boss.mis":["TWL-MapPack.vl2"],"missions/TWL_Celerity.mis":["TWL-MapPack.vl2"],"missions/TWL_Chokepoint.mis":["TWL-MapPack.vl2"],"missions/TWL_Cinereous.mis":["TWL-MapPack.vl2"],"missions/TWL_Clusterfuct.mis":["TWL-MapPack.vl2"],"missions/TWL_Crossfire.mis":["TWL-MapPack.vl2"],"missions/TWL_Curtilage.mis":["TWL-MapPack.vl2"],"missions/TWL_Damnation.mis":["TWL-MapPack.vl2"],"missions/TWL_DangerousCrossing.mis":["TWL-MapPack.vl2"],"missions/TWL_DeadlyBirdsSong.mis":["TWL-MapPack.vl2"],"missions/TWL_Deserted.mis":["TWL-MapPack.vl2"],"missions/TWL_Desiccator.mis":["TWL-MapPack.vl2"],"missions/TWL_Drifts.mis":["TWL-MapPack.vl2"],"missions/TWL_Feign.mis":["TWL-MapPack.vl2"],"missions/TWL_Frostclaw.mis":["TWL-MapPack.vl2"],"missions/TWL_Frozen.mis":["TWL-MapPack.vl2"],"missions/TWL_Harvester.mis":["TWL-MapPack.vl2"],"missions/TWL_Horde.mis":["TWL-MapPack.vl2"],"missions/TWL_Katabatic.mis":["TWL-MapPack.vl2"],"missions/TWL_Magmatic.mis":["TWL-MapPack.vl2"],"missions/TWL_Minotaur.mis":["TWL-MapPack.vl2"],"missions/TWL_Neve.mis":["TWL-MapPack.vl2"],"missions/TWL_NoShelter.mis":["TWL-MapPack.vl2"],"missions/TWL_OsIris.mis":["TWL-MapPack.vl2"],"missions/TWL_Pandemonium.mis":["TWL-MapPack.vl2"],"missions/TWL_Quagmire.mis":["TWL-MapPack.vl2"],"missions/TWL_Raindance.mis":["TWL-MapPack.vl2"],"missions/TWL_Ramparts.mis":["TWL-MapPack.vl2"],"missions/TWL_Reversion.mis":["TWL-MapPack.vl2"],"missions/TWL_Rollercoaster.mis":["TWL-MapPack.vl2"],"missions/TWL_Runenmacht.mis":["TWL-MapPack.vl2"],"missions/TWL_Sandstorm.mis":["TWL-MapPack.vl2"],"missions/TWL_Slapdash.mis":["TWL-MapPack.vl2"],"missions/TWL_Snowblind.mis":["TWL-MapPack.vl2"],"missions/TWL_Starfallen.mis":["TWL-MapPack.vl2"],"missions/TWL_Stonehenge.mis":["TWL-MapPack.vl2"],"missions/TWL_SubZero.mis":["TWL-MapPack.vl2"],"missions/TWL_Surreal.mis":["TWL-MapPack.vl2"],"missions/TWL_Titan.mis":["TWL-MapPack.vl2"],"missions/TWL_WhiteDwarf.mis":["TWL-MapPack.vl2"],"missions/TWL_WilderZone.mis":["TWL-MapPack.vl2"],"missions/TWL_WoodyMyrk.mis":["TWL-MapPack.vl2"],"missions/Talus.mis":["missions.vl2"],"missions/TempleTussleVersion2.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Tenebrous.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/ThinIce.mis":["missions.vl2"],"missions/Titan.mis":["Classic_maps_v1.vl2"],"missions/Tombstone.mis":["missions.vl2"],"missions/Training1.mis":["missions.vl2"],"missions/Training2.mis":["missions.vl2"],"missions/Training3.mis":["missions.vl2"],"missions/Training4.mis":["missions.vl2"],"missions/Training5.mis":["missions.vl2"],"missions/TreasureIsland.mis":["TR2final105-client.vl2"],"missions/Trident.mis":["DynamixFinalPack.vl2"],"missions/TridentLE.mis":["TridentLE.vl2"],"missions/TrueGrit.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/UltimaThule.mis":["missions.vl2"],"missions/Underhill.mis":["missions.vl2"],"missions/UphillBattle.mis":["UphillBattle.vl2"],"missions/UporDown.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/VulcansHammer.mis":["VulcansHammer.vl2"],"missions/WalledIn.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/WalledInII.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/WhiteDwarf.mis":["Classic_maps_v1.vl2"],"missions/Whiteout.mis":["missions.vl2"],"missions/WonderLand.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"missions/Yubarena.mis":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"music/badlands.mp3":[""],"music/desert.mp3":[""],"music/ice.mp3":[""],"music/lush.mp3":[""],"music/volcanic.mp3":[""],"other/SkiFreeCreator.java":["SkiFreeGameType.vl2"],"other/terrain list.csv":["SkiFreeGameType.vl2"],"readme.txt":["centaur.vl2"],"scripts/BountyGame.cs":["scripts.vl2"],"scripts/CTFGame.cs":["scripts.vl2"],"scripts/CenterPrint.cs":["scripts.vl2"],"scripts/ChatGui.cs":["scripts.vl2"],"scripts/ChooseFilterDlg.cs":["scripts.vl2"],"scripts/CnHGame.cs":["scripts.vl2"],"scripts/CreativityGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/DMGame.cs":["scripts.vl2"],"scripts/DebriefGui.cs":["scripts.vl2"],"scripts/DefaultTurretsGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/DemoEndGui.cs":["scripts.vl2"],"scripts/DnDGame.cs":["scripts.vl2"],"scripts/EditChatMenuGui.cs":["scripts.vl2"],"scripts/EditorGui.cs":["scripts.vl2"],"scripts/EditorProfiles.cs":["scripts.vl2"],"scripts/GameGui.cs":["scripts.vl2"],"scripts/HothFFsGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/HuntersGame.cs":["scripts.vl2"],"scripts/LaunchLanGui.cs":["scripts.vl2"],"scripts/LobbyGui.cs":["scripts.vl2"],"scripts/OptionsDlg.cs":["scripts.vl2"],"scripts/PantherXL.cs":["scripts.vl2"],"scripts/PathEdit.cs":["scripts.vl2"],"scripts/RabbitGame.cs":["scripts.vl2"],"scripts/SiegeGame.cs":["scripts.vl2"],"scripts/SinglePlayerGame.cs":["scripts.vl2"],"scripts/SkiFreeAI.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeDatablock.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeGame.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeOverrides.cs":["SkiFreeGameType.vl2"],"scripts/SkiFreeTerrains.cs":["SkiFreeGameType.vl2"],"scripts/TR2BonusCategories.cs":["TR2final105-server.vl2"],"scripts/TR2BonusHud.cs":["TR2final105-client.vl2"],"scripts/TR2BonusSounds.cs":["TR2final105-server.vl2"],"scripts/TR2Bonuses.cs":["TR2final105-server.vl2"],"scripts/TR2Descriptions.cs":["TR2final105-server.vl2"],"scripts/TR2EventHud.cs":["TR2final105-client.vl2"],"scripts/TR2FlagToss.cs":["TR2final105-client.vl2"],"scripts/TR2Game.cs":["TR2final105-server.vl2"],"scripts/TR2Items.cs":["TR2final105-server.vl2"],"scripts/TR2Nouns.cs":["TR2final105-server.vl2"],"scripts/TR2ObserverQueue.cs":["TR2final105-server.vl2"],"scripts/TR2OtherBonuses.cs":["TR2final105-server.vl2"],"scripts/TR2Packages.cs":["TR2final105-server.vl2"],"scripts/TR2Particles.cs":["TR2final105-server.vl2"],"scripts/TR2Penalties.cs":["TR2final105-server.vl2"],"scripts/TR2Physics.cs":["TR2final105-server.vl2"],"scripts/TR2Prefixes.cs":["TR2final105-server.vl2"],"scripts/TR2Qualifiers.cs":["TR2final105-server.vl2"],"scripts/TR2Roles.cs":["TR2final105-server.vl2"],"scripts/TR2WeaponBonuses.cs":["TR2final105-server.vl2"],"scripts/TR2heavy_male.cs":["TR2final105-server.vl2"],"scripts/TR2light_female.cs":["TR2final105-server.vl2"],"scripts/TR2light_male.cs":["TR2final105-server.vl2"],"scripts/TR2medium_female.cs":["TR2final105-server.vl2"],"scripts/TR2medium_male.cs":["TR2final105-server.vl2"],"scripts/TeamHuntersGame.cs":["scripts.vl2"],"scripts/TeleportGame.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/Training1.cs":["scripts.vl2"],"scripts/Training2.cs":["scripts.vl2"],"scripts/Training3.cs":["scripts.vl2"],"scripts/Training4.cs":["scripts.vl2"],"scripts/Training5.cs":["scripts.vl2"],"scripts/TrainingGui.cs":["scripts.vl2"],"scripts/admin.cs":["scripts.vl2"],"scripts/ai.cs":["scripts.vl2"],"scripts/aiBotProfiles.cs":["scripts.vl2"],"scripts/aiBountyGame.cs":["scripts.vl2"],"scripts/aiCTF.cs":["scripts.vl2"],"scripts/aiChat.cs":["scripts.vl2"],"scripts/aiCnH.cs":["scripts.vl2"],"scripts/aiDeathMatch.cs":["scripts.vl2"],"scripts/aiDebug.cs":["scripts.vl2"],"scripts/aiDefaultTasks.cs":["scripts.vl2"],"scripts/aiDnD.cs":["scripts.vl2"],"scripts/aiHumanTasks.cs":["scripts.vl2"],"scripts/aiHunters.cs":["scripts.vl2"],"scripts/aiInventory.cs":["scripts.vl2"],"scripts/aiObjectiveBuilder.cs":["scripts.vl2"],"scripts/aiObjectives.cs":["scripts.vl2"],"scripts/aiRabbit.cs":["scripts.vl2"],"scripts/aiSiege.cs":["scripts.vl2"],"scripts/aiTeamHunters.cs":["scripts.vl2"],"scripts/autoexec/AllowBotSkin.cs":[""],"scripts/autoexec/InvincibleInv.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/autoexec/LakRabbitObjHud.cs":["zAddOnsVL2s/LakRabbit_Client.vl2"],"scripts/autoexec/SkiFreeSinglePlayer.cs":["SkiFreeGameType.vl2"],"scripts/autoexec/UEfix1.cs":[""],"scripts/autoexec/adminHud.cs":["","zz_Classic_client_v1.vl2"],"scripts/autoexec/arenaSupport.cs":["zAddOnsVL2s/arenaSupport.vl2"],"scripts/autoexec/chatmenuHudClear.cs":[""],"scripts/autoexec/classicPropMap.cs":["zz_Classic_client_v1.vl2"],"scripts/autoexec/clientOverloads.cs":["zz_Classic_client_v1.vl2"],"scripts/autoexec/dmpVersionCheck.cs":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"scripts/autoexec/fov.cs":[""],"scripts/autoexec/ircTempFix.cs":[""],"scripts/autoexec/meltdownfix.cs":[""],"scripts/autoexec/modHud.cs":["","zz_Classic_client_v1.vl2"],"scripts/autoexec/perfCounter.cs":[""],"scripts/autoexec/practiceHud.cs":["zz_Classic_client_v1.vl2"],"scripts/autoexec/scripts.txt":["scripts.vl2"],"scripts/autoexec/statushud.cs":[""],"scripts/autoexec/t2csri_IRCfix.cs":["T2csri.vl2"],"scripts/autoexec/t2csri_IRCfix.cs.dso":["T2csri.vl2"],"scripts/autoexec/t2csri_list.cs":["T2csri.vl2"],"scripts/autoexec/t2csri_list.cs.dso":["T2csri.vl2"],"scripts/autoexec/t2csri_serv.cs":["T2csri.vl2"],"scripts/autoexec/t2csri_serv.cs.dso":["T2csri.vl2"],"scripts/autoexec/tourneyInit.cs":["tournamentNetClient2.vl2"],"scripts/badlandsPropMap.cs":["scripts.vl2"],"scripts/bioderm_heavy.cs":["scripts.vl2"],"scripts/bioderm_light.cs":["scripts.vl2"],"scripts/bioderm_medium.cs":["scripts.vl2"],"scripts/camera.cs":["scripts.vl2"],"scripts/cannedChatItems.cs":["scripts.vl2"],"scripts/chatMenuHud.cs":["scripts.vl2"],"scripts/client.cs":["scripts.vl2"],"scripts/clientAudio.cs":["scripts.vl2"],"scripts/clientDefaults.cs":["scripts.vl2"],"scripts/clientTasks.cs":["scripts.vl2"],"scripts/commanderMap.cs":["scripts.vl2"],"scripts/commanderMapHelpText.cs":["scripts.vl2"],"scripts/commanderMapIcons.cs":["scripts.vl2"],"scripts/commanderProfiles.cs":["scripts.vl2"],"scripts/commonDialogs.cs":["scripts.vl2"],"scripts/controlDefaults.cs":["scripts.vl2"],"scripts/creditsGui.cs":["scripts.vl2"],"scripts/creditsText.cs":["scripts.vl2"],"scripts/cursors.cs":["scripts.vl2"],"scripts/damageTypes.cs":["scripts.vl2"],"scripts/deathMessages.cs":["scripts.vl2"],"scripts/debuggerGui.cs":["scripts.vl2"],"scripts/defaultGame.cs":["scripts.vl2"],"scripts/deployables.cs":["scripts.vl2"],"scripts/depthSort.cs":["scripts.vl2"],"scripts/desertPropMap.cs":["scripts.vl2"],"scripts/editor.bind.cs":["scripts.vl2"],"scripts/editor.cs":["scripts.vl2"],"scripts/editorRender.cs":["scripts.vl2"],"scripts/environmentals.cs":["scripts.vl2"],"scripts/forceField.cs":["scripts.vl2"],"scripts/gameBase.cs":["scripts.vl2"],"scripts/gameCanvas.cs":["scripts.vl2"],"scripts/graphBuild.cs":["scripts.vl2"],"scripts/heavy_male.cs":["scripts.vl2"],"scripts/help.cs":["scripts.vl2"],"scripts/helpGuiText.cs":["scripts.vl2"],"scripts/hud.cs":["scripts.vl2"],"scripts/icePropMap.cs":["scripts.vl2"],"scripts/inventory.cs":["scripts.vl2"],"scripts/inventoryHud.cs":["scripts.vl2"],"scripts/item.cs":["scripts.vl2"],"scripts/joystickBind.cs":["scripts.vl2"],"scripts/lavaPropMap.cs":["scripts.vl2"],"scripts/light_female.cs":["scripts.vl2"],"scripts/light_male.cs":["scripts.vl2"],"scripts/lightning.cs":["scripts.vl2"],"scripts/liquidProfiles.cs":["scripts.vl2"],"scripts/loadingGui.cs":["scripts.vl2"],"scripts/lushPropMap.cs":["scripts.vl2"],"scripts/markers.cs":["scripts.vl2"],"scripts/medium_female.cs":["scripts.vl2"],"scripts/medium_male.cs":["scripts.vl2"],"scripts/message.cs":["scripts.vl2"],"scripts/navGraph.cs":["scripts.vl2"],"scripts/objectiveHud.cs":["scripts.vl2"],"scripts/pack.cs":["scripts.vl2"],"scripts/packs/ELFbarrelPack.cs":["scripts.vl2"],"scripts/packs/TR2energypack.cs":["TR2final105-server.vl2"],"scripts/packs/aabarrelPack.cs":["scripts.vl2"],"scripts/packs/ammopack.cs":["scripts.vl2"],"scripts/packs/cloakingpack.cs":["scripts.vl2"],"scripts/packs/energypack.cs":["scripts.vl2"],"scripts/packs/missilebarrelPack.cs":["scripts.vl2"],"scripts/packs/mortarBarrelPack.cs":["scripts.vl2"],"scripts/packs/plasmabarrelPack.cs":["scripts.vl2"],"scripts/packs/repairpack.cs":["scripts.vl2"],"scripts/packs/satchelCharge.cs":["scripts.vl2"],"scripts/packs/sensorjammerpack.cs":["scripts.vl2"],"scripts/packs/shieldpack.cs":["scripts.vl2"],"scripts/particleDummies.cs":["scripts.vl2"],"scripts/particleEmitter.cs":["scripts.vl2"],"scripts/player.cs":["scripts.vl2"],"scripts/power.cs":["scripts.vl2"],"scripts/projectiles.cs":["scripts.vl2"],"scripts/recordings.cs":["scripts.vl2"],"scripts/redbook.cs":["scripts.vl2"],"scripts/scoreList.cs":["scripts.vl2"],"scripts/scoreScreen.cs":["scripts.vl2"],"scripts/server.cs":["scripts.vl2"],"scripts/serverAudio.cs":["scripts.vl2"],"scripts/serverCommanderMap.cs":["scripts.vl2"],"scripts/serverDefaults.cs":["scripts.vl2"],"scripts/serverTasks.cs":["scripts.vl2"],"scripts/simGroup.cs":["scripts.vl2"],"scripts/spdialog.cs":["scripts.vl2"],"scripts/staticShape.cs":["scripts.vl2"],"scripts/station.cs":["scripts.vl2"],"scripts/stationSetInv.cs":["scripts.vl2"],"scripts/targetManager.cs":["scripts.vl2"],"scripts/teribaen/arena_support_info.txt":["zAddOnsVL2s/arenaSupport.vl2"],"scripts/trigger.cs":["scripts.vl2"],"scripts/turret.cs":["scripts.vl2"],"scripts/turrets/ELFBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/aaBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/indoorDeployableBarrel.cs":["scripts.vl2"],"scripts/turrets/missileBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/mortarBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/outdoorDeployableBarrel.cs":["scripts.vl2"],"scripts/turrets/plasmaBarrelLarge.cs":["scripts.vl2"],"scripts/turrets/sentryTurret.cs":["scripts.vl2"],"scripts/vehicles/clientVehicleHud.cs":["scripts.vl2"],"scripts/vehicles/serverVehicleHud.cs":["scripts.vl2"],"scripts/vehicles/vehicle.cs":["scripts.vl2"],"scripts/vehicles/vehicle_bomber.cs":["scripts.vl2"],"scripts/vehicles/vehicle_havoc.cs":["scripts.vl2"],"scripts/vehicles/vehicle_mpb.cs":["scripts.vl2"],"scripts/vehicles/vehicle_shrike.cs":["scripts.vl2"],"scripts/vehicles/vehicle_spec_fx.cs":["scripts.vl2"],"scripts/vehicles/vehicle_tank.cs":["scripts.vl2"],"scripts/vehicles/vehicle_wildcat.cs":["scripts.vl2"],"scripts/voiceBinds.cs":["scripts.vl2"],"scripts/voiceChat.cs":["scripts.vl2"],"scripts/waveProfiles.cs":["scripts.vl2"],"scripts/weapTurretCode.cs":["scripts.vl2"],"scripts/weapons.cs":["scripts.vl2"],"scripts/weapons/ELFGun.cs":["scripts.vl2"],"scripts/weapons/TR2chaingun.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2disc.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2grenade.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2grenadeLauncher.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2mortar.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2shockLance.cs":["TR2final105-server.vl2"],"scripts/weapons/TR2targetingLaser.cs":["TR2final105-server.vl2"],"scripts/weapons/blaster.cs":["scripts.vl2"],"scripts/weapons/cameraGrenade.cs":["scripts.vl2"],"scripts/weapons/chaingun.cs":["scripts.vl2"],"scripts/weapons/concussionGrenade.cs":["scripts.vl2"],"scripts/weapons/disc.cs":["scripts.vl2"],"scripts/weapons/flareGrenade.cs":["scripts.vl2"],"scripts/weapons/flashGrenade.cs":["scripts.vl2"],"scripts/weapons/grenade.cs":["scripts.vl2"],"scripts/weapons/grenadeLauncher.cs":["scripts.vl2"],"scripts/weapons/mine.cs":["scripts.vl2"],"scripts/weapons/missileLauncher.cs":["scripts.vl2"],"scripts/weapons/mortar.cs":["scripts.vl2"],"scripts/weapons/plasma.cs":["scripts.vl2"],"scripts/weapons/shockLance.cs":["scripts.vl2"],"scripts/weapons/sniperRifle.cs":["scripts.vl2"],"scripts/weapons/targetingLaser.cs":["scripts.vl2"],"scripts/weather.cs":["scripts.vl2"],"scripts/webbrowser.cs":["scripts.vl2"],"scripts/webemail.cs":["scripts.vl2"],"scripts/webforums.cs":["scripts.vl2"],"scripts/weblinks.cs":["scripts.vl2"],"scripts/webnews.cs":["scripts.vl2"],"scripts/webstuff.cs":["scripts.vl2"],"scripts/webtest.cs":["scripts.vl2"],"shapes/C_BaseLoPro.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/TR2flag.dts":["TR2final105-client.vl2"],"shapes/TR2heavy_male.dts":["TR2final105-client.vl2"],"shapes/TR2heavy_male_back.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celdance.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celflex.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celjump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celtaunt.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_land.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_root.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_side.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2heavy_male_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female.dts":["TR2final105-client.vl2"],"shapes/TR2light_female_back.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celbow.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celdance.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_land.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_root.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_side.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntbutt.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2light_female_tauntkiss.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male.dts":["TR2final105-client.vl2"],"shapes/TR2light_male_back.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_land.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_root.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_side.dsq":["TR2final105-client.vl2"],"shapes/TR2light_male_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female.dts":["TR2final105-client.vl2"],"shapes/TR2medium_female_back.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celbow.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celdisco.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_land.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_root.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_side.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntbutt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_female_tauntkiss.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male.dts":["TR2final105-client.vl2"],"shapes/TR2medium_male_back.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celdance.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celflex.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celrocky.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celsalute.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celtaunt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_celwave.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieback.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diechest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieforward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diehead.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieknees.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieleglf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dielegrt.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diesidelf.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diesidert.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_dieslump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_diespin.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_fall.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_forward.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_jet.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_jump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_land.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_root.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_side.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_sitting.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_ski.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_standjump.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_tauntbest.dsq":["TR2final105-client.vl2"],"shapes/TR2medium_male_tauntimp.dsq":["TR2final105-client.vl2"],"shapes/TR2weapon_chaingun.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_disc.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_grenade_launcher.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_mortar.dts":["TR2final105-client.vl2"],"shapes/TR2weapon_shocklance.dts":["TR2final105-client.vl2"],"shapes/ammo_chaingun.dts":["shapes.vl2"],"shapes/ammo_disc.dts":["shapes.vl2"],"shapes/ammo_grenade.dts":["shapes.vl2"],"shapes/ammo_mine.dts":["shapes.vl2"],"shapes/ammo_missile.dts":["shapes.vl2"],"shapes/ammo_mortar.dts":["shapes.vl2"],"shapes/ammo_plasma.dts":["shapes.vl2"],"shapes/banner_honor.dts":["shapes.vl2"],"shapes/banner_strength.dts":["shapes.vl2"],"shapes/banner_unity.dts":["shapes.vl2"],"shapes/beacon.dts":["shapes.vl2"],"shapes/billboard_1.dts":["TR2final105-client.vl2"],"shapes/billboard_2.dts":["TR2final105-client.vl2"],"shapes/billboard_3.dts":["TR2final105-client.vl2"],"shapes/billboard_4.dts":["TR2final105-client.vl2"],"shapes/bio_player_debris.dts":["shapes.vl2"],"shapes/bioderm_heavy.dts":["shapes.vl2"],"shapes/bioderm_heavy_back.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celflex2.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celgora.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celjump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celroar.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celsalute.dsq":["shapes.vl2"],"shapes/bioderm_heavy_celyeah.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieback.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diechest.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieforward.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diehead.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieknees.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieleglft.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dielegrt.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diesidelft.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diesidert.dsq":["shapes.vl2"],"shapes/bioderm_heavy_dieslump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_diespin.dsq":["shapes.vl2"],"shapes/bioderm_heavy_fall.dsq":["shapes.vl2"],"shapes/bioderm_heavy_forward.dsq":["shapes.vl2"],"shapes/bioderm_heavy_head.dsq":["shapes.vl2"],"shapes/bioderm_heavy_headside.dsq":["shapes.vl2"],"shapes/bioderm_heavy_idlepda.dsq":["shapes.vl2"],"shapes/bioderm_heavy_jet.dsq":["shapes.vl2"],"shapes/bioderm_heavy_jump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_land.dsq":["shapes.vl2"],"shapes/bioderm_heavy_lookde.dsq":["shapes.vl2"],"shapes/bioderm_heavy_lookms.dsq":["shapes.vl2"],"shapes/bioderm_heavy_looknw.dsq":["shapes.vl2"],"shapes/bioderm_heavy_recoilde.dsq":["shapes.vl2"],"shapes/bioderm_heavy_root.dsq":["shapes.vl2"],"shapes/bioderm_heavy_side.dsq":["shapes.vl2"],"shapes/bioderm_heavy_ski.dsq":["shapes.vl2"],"shapes/bioderm_heavy_standjump.dsq":["shapes.vl2"],"shapes/bioderm_heavy_tauntbest.dsq":["shapes.vl2"],"shapes/bioderm_heavy_tauntbull.dsq":["shapes.vl2"],"shapes/bioderm_light.dts":["shapes.vl2"],"shapes/bioderm_light_back.dsq":["shapes.vl2"],"shapes/bioderm_light_celflex2.dsq":["shapes.vl2"],"shapes/bioderm_light_celgora.dsq":["shapes.vl2"],"shapes/bioderm_light_celjump.dsq":["shapes.vl2"],"shapes/bioderm_light_celroar.dsq":["shapes.vl2"],"shapes/bioderm_light_celsalute.dsq":["shapes.vl2"],"shapes/bioderm_light_celyeah.dsq":["shapes.vl2"],"shapes/bioderm_light_dieback.dsq":["shapes.vl2"],"shapes/bioderm_light_diechest.dsq":["shapes.vl2"],"shapes/bioderm_light_dieforward.dsq":["shapes.vl2"],"shapes/bioderm_light_diehead.dsq":["shapes.vl2"],"shapes/bioderm_light_dieknees.dsq":["shapes.vl2"],"shapes/bioderm_light_dieleglft.dsq":["shapes.vl2"],"shapes/bioderm_light_dielegrt.dsq":["shapes.vl2"],"shapes/bioderm_light_diesidelft.dsq":["shapes.vl2"],"shapes/bioderm_light_diesidert.dsq":["shapes.vl2"],"shapes/bioderm_light_dieslump.dsq":["shapes.vl2"],"shapes/bioderm_light_diespin.dsq":["shapes.vl2"],"shapes/bioderm_light_fall.dsq":["shapes.vl2"],"shapes/bioderm_light_forward.dsq":["shapes.vl2"],"shapes/bioderm_light_head.dsq":["shapes.vl2"],"shapes/bioderm_light_headside.dsq":["shapes.vl2"],"shapes/bioderm_light_idlepda.dsq":["shapes.vl2"],"shapes/bioderm_light_jet.dsq":["shapes.vl2"],"shapes/bioderm_light_jump.dsq":["shapes.vl2"],"shapes/bioderm_light_land.dsq":["shapes.vl2"],"shapes/bioderm_light_lookde.dsq":["shapes.vl2"],"shapes/bioderm_light_lookms.dsq":["shapes.vl2"],"shapes/bioderm_light_looknw.dsq":["shapes.vl2"],"shapes/bioderm_light_recoilde.dsq":["shapes.vl2"],"shapes/bioderm_light_root.dsq":["shapes.vl2"],"shapes/bioderm_light_scoutroot.dsq":["shapes.vl2"],"shapes/bioderm_light_side.dsq":["shapes.vl2"],"shapes/bioderm_light_sitting.dsq":["shapes.vl2"],"shapes/bioderm_light_ski.dsq":["shapes.vl2"],"shapes/bioderm_light_standjump.dsq":["shapes.vl2"],"shapes/bioderm_light_tauntbest.dsq":["shapes.vl2"],"shapes/bioderm_light_tauntbull.dsq":["shapes.vl2"],"shapes/bioderm_medium.dts":["shapes.vl2"],"shapes/bioderm_medium_back.dsq":["shapes.vl2"],"shapes/bioderm_medium_celflex2.dsq":["shapes.vl2"],"shapes/bioderm_medium_celgora.dsq":["shapes.vl2"],"shapes/bioderm_medium_celjump.dsq":["shapes.vl2"],"shapes/bioderm_medium_celroar.dsq":["shapes.vl2"],"shapes/bioderm_medium_celsalute.dsq":["shapes.vl2"],"shapes/bioderm_medium_celyeah.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieback.dsq":["shapes.vl2"],"shapes/bioderm_medium_diechest.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieforward.dsq":["shapes.vl2"],"shapes/bioderm_medium_diehead.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieknees.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieleglft.dsq":["shapes.vl2"],"shapes/bioderm_medium_dielegrt.dsq":["shapes.vl2"],"shapes/bioderm_medium_diesidelft.dsq":["shapes.vl2"],"shapes/bioderm_medium_diesidert.dsq":["shapes.vl2"],"shapes/bioderm_medium_dieslump.dsq":["shapes.vl2"],"shapes/bioderm_medium_diespin.dsq":["shapes.vl2"],"shapes/bioderm_medium_fall.dsq":["shapes.vl2"],"shapes/bioderm_medium_forward.dsq":["shapes.vl2"],"shapes/bioderm_medium_head.dsq":["shapes.vl2"],"shapes/bioderm_medium_headside.dsq":["shapes.vl2"],"shapes/bioderm_medium_idlepda.dsq":["shapes.vl2"],"shapes/bioderm_medium_jet.dsq":["shapes.vl2"],"shapes/bioderm_medium_jump.dsq":["shapes.vl2"],"shapes/bioderm_medium_land.dsq":["shapes.vl2"],"shapes/bioderm_medium_lookde.dsq":["shapes.vl2"],"shapes/bioderm_medium_lookms.dsq":["shapes.vl2"],"shapes/bioderm_medium_looknw.dsq":["shapes.vl2"],"shapes/bioderm_medium_recoilde.dsq":["shapes.vl2"],"shapes/bioderm_medium_root.dsq":["shapes.vl2"],"shapes/bioderm_medium_side.dsq":["shapes.vl2"],"shapes/bioderm_medium_sitting.dsq":["shapes.vl2"],"shapes/bioderm_medium_ski.dsq":["shapes.vl2"],"shapes/bioderm_medium_standjump.dsq":["shapes.vl2"],"shapes/bioderm_medium_tauntbest.dsq":["shapes.vl2"],"shapes/bioderm_medium_tauntbull.dsq":["shapes.vl2"],"shapes/bmiscf.dts":["shapes.vl2"],"shapes/bomb.dts":["shapes.vl2"],"shapes/bombers_eye.dts":["shapes.vl2"],"shapes/borg1.dts":["shapes.vl2"],"shapes/borg11.dts":["Classic_maps_v1.vl2"],"shapes/borg12.dts":["shapes.vl2"],"shapes/borg13.dts":["shapes.vl2"],"shapes/borg15.dts":["shapes.vl2"],"shapes/borg16-Autumn.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/borg16.dts":["shapes.vl2"],"shapes/borg17.dts":["shapes.vl2"],"shapes/borg18.dts":["shapes.vl2"],"shapes/borg19-Autumn.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/borg19.dts":["shapes.vl2"],"shapes/borg2.dts":["shapes.vl2"],"shapes/borg20.dts":["shapes.vl2"],"shapes/borg23.dts":["shapes.vl2"],"shapes/borg25.dts":["shapes.vl2"],"shapes/borg3.dts":["shapes.vl2"],"shapes/borg31.dts":["shapes.vl2"],"shapes/borg32.dts":["shapes.vl2"],"shapes/borg33.dts":["shapes.vl2"],"shapes/borg34.dts":["shapes.vl2"],"shapes/borg4.dts":["shapes.vl2"],"shapes/borg5.dts":["shapes.vl2"],"shapes/borg6.dts":["shapes.vl2"],"shapes/borg7.dts":["shapes.vl2"],"shapes/borg8.dts":["shapes.vl2"],"shapes/camera.dts":["shapes.vl2"],"shapes/chaingun_shot.dts":["shapes.vl2"],"shapes/debris_generic.dts":["shapes.vl2"],"shapes/debris_generic_small.dts":["shapes.vl2"],"shapes/debris_player.dts":["shapes.vl2"],"shapes/deploy_ammo.dts":["shapes.vl2"],"shapes/deploy_inventory.dts":["shapes.vl2"],"shapes/deploy_sensor_motion.dts":["shapes.vl2"],"shapes/deploy_sensor_pulse.dts":["shapes.vl2"],"shapes/disc.dts":["shapes.vl2"],"shapes/disc_explosion.dts":["shapes.vl2"],"shapes/dmiscf.dts":["shapes.vl2"],"shapes/dorg15.dts":["shapes.vl2"],"shapes/dorg16.dts":["shapes.vl2"],"shapes/dorg17.dts":["shapes.vl2"],"shapes/dorg18.dts":["shapes.vl2"],"shapes/dorg19.dts":["shapes.vl2"],"shapes/effect_plasma_explosion.dts":["shapes.vl2"],"shapes/energy_bolt.dts":["shapes.vl2"],"shapes/energy_explosion.dts":["shapes.vl2"],"shapes/ext_flagstand.dts":["shapes.vl2"],"shapes/flag.dts":["shapes.vl2"],"shapes/goal_back.dts":["TR2final105-client.vl2"],"shapes/goal_panel.dts":["TR2final105-client.vl2"],"shapes/goal_side.dts":["TR2final105-client.vl2"],"shapes/goal_top.dts":["TR2final105-client.vl2"],"shapes/gold_goal_back.dts":["TR2final105-client.vl2"],"shapes/gold_goal_side.dts":["TR2final105-client.vl2"],"shapes/gold_goal_top.dts":["TR2final105-client.vl2"],"shapes/golden_pole.dts":["TR2final105-client.vl2"],"shapes/gravemarker_1.dts":["shapes.vl2"],"shapes/grenade.dts":["shapes.vl2"],"shapes/grenade_flare.dts":["shapes.vl2"],"shapes/grenade_flash.dts":["shapes.vl2"],"shapes/grenade_projectile.dts":["shapes.vl2"],"shapes/heavy_male.dts":["shapes.vl2"],"shapes/heavy_male_back.dsq":["shapes.vl2"],"shapes/heavy_male_celdance.dsq":["shapes.vl2"],"shapes/heavy_male_celflex.dsq":["shapes.vl2"],"shapes/heavy_male_celjump.dsq":["shapes.vl2"],"shapes/heavy_male_celsalute.dsq":["shapes.vl2"],"shapes/heavy_male_celtaunt.dsq":["shapes.vl2"],"shapes/heavy_male_celwave.dsq":["shapes.vl2"],"shapes/heavy_male_dead.dts":["shapes.vl2"],"shapes/heavy_male_dieback.dsq":["shapes.vl2"],"shapes/heavy_male_diechest.dsq":["shapes.vl2"],"shapes/heavy_male_dieforward.dsq":["shapes.vl2"],"shapes/heavy_male_diehead.dsq":["shapes.vl2"],"shapes/heavy_male_dieknees.dsq":["shapes.vl2"],"shapes/heavy_male_dieleglf.dsq":["shapes.vl2"],"shapes/heavy_male_dielegrt.dsq":["shapes.vl2"],"shapes/heavy_male_diesidelf.dsq":["shapes.vl2"],"shapes/heavy_male_diesidert.dsq":["shapes.vl2"],"shapes/heavy_male_dieslump.dsq":["shapes.vl2"],"shapes/heavy_male_diespin.dsq":["shapes.vl2"],"shapes/heavy_male_fall.dsq":["shapes.vl2"],"shapes/heavy_male_forward.dsq":["shapes.vl2"],"shapes/heavy_male_head.dsq":["shapes.vl2"],"shapes/heavy_male_headside.dsq":["shapes.vl2"],"shapes/heavy_male_idlepda.dsq":["shapes.vl2"],"shapes/heavy_male_jet.dsq":["shapes.vl2"],"shapes/heavy_male_jump.dsq":["shapes.vl2"],"shapes/heavy_male_land.dsq":["shapes.vl2"],"shapes/heavy_male_lookde.dsq":["shapes.vl2"],"shapes/heavy_male_lookms.dsq":["shapes.vl2"],"shapes/heavy_male_looknw.dsq":["shapes.vl2"],"shapes/heavy_male_recoilde.dsq":["shapes.vl2"],"shapes/heavy_male_root.dsq":["shapes.vl2"],"shapes/heavy_male_side.dsq":["shapes.vl2"],"shapes/heavy_male_ski.dsq":["shapes.vl2"],"shapes/heavy_male_standjump.dsq":["shapes.vl2"],"shapes/heavy_male_tauntbest.dsq":["shapes.vl2"],"shapes/heavy_male_tauntimp.dsq":["shapes.vl2"],"shapes/huntersflag.dts":["shapes.vl2"],"shapes/int_flagstand.dts":["shapes.vl2"],"shapes/light_female.dts":["shapes.vl2"],"shapes/light_female_back.dsq":["shapes.vl2"],"shapes/light_female_celbow.dsq":["shapes.vl2"],"shapes/light_female_celdance.dsq":["shapes.vl2"],"shapes/light_female_celsalute.dsq":["shapes.vl2"],"shapes/light_female_celwave.dsq":["shapes.vl2"],"shapes/light_female_dieback.dsq":["shapes.vl2"],"shapes/light_female_diechest.dsq":["shapes.vl2"],"shapes/light_female_dieforward.dsq":["shapes.vl2"],"shapes/light_female_diehead.dsq":["shapes.vl2"],"shapes/light_female_dieknees.dsq":["shapes.vl2"],"shapes/light_female_dieleglf.dsq":["shapes.vl2"],"shapes/light_female_dielegrt.dsq":["shapes.vl2"],"shapes/light_female_diesidelf.dsq":["shapes.vl2"],"shapes/light_female_diesidert.dsq":["shapes.vl2"],"shapes/light_female_dieslump.dsq":["shapes.vl2"],"shapes/light_female_diespin.dsq":["shapes.vl2"],"shapes/light_female_fall.dsq":["shapes.vl2"],"shapes/light_female_forward.dsq":["shapes.vl2"],"shapes/light_female_head.dsq":["shapes.vl2"],"shapes/light_female_headside.dsq":["shapes.vl2"],"shapes/light_female_idlepda.dsq":["shapes.vl2"],"shapes/light_female_jet.dsq":["shapes.vl2"],"shapes/light_female_jump.dsq":["shapes.vl2"],"shapes/light_female_land.dsq":["shapes.vl2"],"shapes/light_female_lookde.dsq":["shapes.vl2"],"shapes/light_female_lookms.dsq":["shapes.vl2"],"shapes/light_female_looknw.dsq":["shapes.vl2"],"shapes/light_female_looksn.dsq":["shapes.vl2"],"shapes/light_female_recoilde.dsq":["shapes.vl2"],"shapes/light_female_root.dsq":["shapes.vl2"],"shapes/light_female_scoutroot.dsq":["shapes.vl2"],"shapes/light_female_side.dsq":["shapes.vl2"],"shapes/light_female_sitting.dsq":["shapes.vl2"],"shapes/light_female_ski.dsq":["shapes.vl2"],"shapes/light_female_standjump.dsq":["shapes.vl2"],"shapes/light_female_tauntbest.dsq":["shapes.vl2"],"shapes/light_female_tauntbutt.dsq":["shapes.vl2"],"shapes/light_female_tauntimp.dsq":["shapes.vl2"],"shapes/light_female_tauntkiss.dsq":["shapes.vl2"],"shapes/light_male.dts":["shapes.vl2"],"shapes/light_male_back.dsq":["shapes.vl2"],"shapes/light_male_celdisco.dsq":["shapes.vl2"],"shapes/light_male_celflex.dsq":["shapes.vl2"],"shapes/light_male_celrocky.dsq":["shapes.vl2"],"shapes/light_male_celsalute.dsq":["shapes.vl2"],"shapes/light_male_celtaunt.dsq":["shapes.vl2"],"shapes/light_male_celwave.dsq":["shapes.vl2"],"shapes/light_male_dead.dts":["shapes.vl2"],"shapes/light_male_dieback.dsq":["shapes.vl2"],"shapes/light_male_diechest.dsq":["shapes.vl2"],"shapes/light_male_dieforward.dsq":["shapes.vl2"],"shapes/light_male_diehead.dsq":["shapes.vl2"],"shapes/light_male_dieknees.dsq":["shapes.vl2"],"shapes/light_male_dieleglf.dsq":["shapes.vl2"],"shapes/light_male_dielegrt.dsq":["shapes.vl2"],"shapes/light_male_diesidelf.dsq":["shapes.vl2"],"shapes/light_male_diesidert.dsq":["shapes.vl2"],"shapes/light_male_dieslump.dsq":["shapes.vl2"],"shapes/light_male_diespin.dsq":["shapes.vl2"],"shapes/light_male_fall.dsq":["shapes.vl2"],"shapes/light_male_forward.dsq":["shapes.vl2"],"shapes/light_male_head.dsq":["shapes.vl2"],"shapes/light_male_headside.dsq":["shapes.vl2"],"shapes/light_male_idlepda.dsq":["shapes.vl2"],"shapes/light_male_jet.dsq":["shapes.vl2"],"shapes/light_male_jump.dsq":["shapes.vl2"],"shapes/light_male_land.dsq":["shapes.vl2"],"shapes/light_male_lookde.dsq":["shapes.vl2"],"shapes/light_male_lookms.dsq":["shapes.vl2"],"shapes/light_male_looknw.dsq":["shapes.vl2"],"shapes/light_male_looksn.dsq":["shapes.vl2"],"shapes/light_male_newland.dsq":["shapes.vl2"],"shapes/light_male_recoilde.dsq":["shapes.vl2"],"shapes/light_male_root.dsq":["shapes.vl2"],"shapes/light_male_scoutroot.dsq":["shapes.vl2"],"shapes/light_male_side.dsq":["shapes.vl2"],"shapes/light_male_sitting.dsq":["shapes.vl2"],"shapes/light_male_ski.dsq":["shapes.vl2"],"shapes/light_male_standjump.dsq":["shapes.vl2"],"shapes/light_male_tauntbest.dsq":["shapes.vl2"],"shapes/light_male_tauntimp.dsq":["shapes.vl2"],"shapes/medium_female.dts":["shapes.vl2"],"shapes/medium_female_back.dsq":["shapes.vl2"],"shapes/medium_female_celbow.dsq":["shapes.vl2"],"shapes/medium_female_celdisco.dsq":["shapes.vl2"],"shapes/medium_female_celsalute.dsq":["shapes.vl2"],"shapes/medium_female_celwave.dsq":["shapes.vl2"],"shapes/medium_female_dieback.dsq":["shapes.vl2"],"shapes/medium_female_diechest.dsq":["shapes.vl2"],"shapes/medium_female_dieforward.dsq":["shapes.vl2"],"shapes/medium_female_diehead.dsq":["shapes.vl2"],"shapes/medium_female_dieknees.dsq":["shapes.vl2"],"shapes/medium_female_dieleglf.dsq":["shapes.vl2"],"shapes/medium_female_dielegrt.dsq":["shapes.vl2"],"shapes/medium_female_diesidelf.dsq":["shapes.vl2"],"shapes/medium_female_diesidert.dsq":["shapes.vl2"],"shapes/medium_female_dieslump.dsq":["shapes.vl2"],"shapes/medium_female_diespin.dsq":["shapes.vl2"],"shapes/medium_female_fall.dsq":["shapes.vl2"],"shapes/medium_female_forward.dsq":["shapes.vl2"],"shapes/medium_female_head.dsq":["shapes.vl2"],"shapes/medium_female_headside.dsq":["shapes.vl2"],"shapes/medium_female_idlepda.dsq":["shapes.vl2"],"shapes/medium_female_jet.dsq":["shapes.vl2"],"shapes/medium_female_jump.dsq":["shapes.vl2"],"shapes/medium_female_land.dsq":["shapes.vl2"],"shapes/medium_female_lookde.dsq":["shapes.vl2"],"shapes/medium_female_lookms.dsq":["shapes.vl2"],"shapes/medium_female_looknw.dsq":["shapes.vl2"],"shapes/medium_female_looksn.dsq":["shapes.vl2"],"shapes/medium_female_recoilde.dsq":["shapes.vl2"],"shapes/medium_female_root.dsq":["shapes.vl2"],"shapes/medium_female_side.dsq":["shapes.vl2"],"shapes/medium_female_sitting.dsq":["shapes.vl2"],"shapes/medium_female_ski.dsq":["shapes.vl2"],"shapes/medium_female_standjump.dsq":["shapes.vl2"],"shapes/medium_female_tauntbest.dsq":["shapes.vl2"],"shapes/medium_female_tauntbutt.dsq":["shapes.vl2"],"shapes/medium_female_tauntimp.dsq":["shapes.vl2"],"shapes/medium_female_tauntkiss.dsq":["shapes.vl2"],"shapes/medium_male.dts":["shapes.vl2"],"shapes/medium_male_back.dsq":["shapes.vl2"],"shapes/medium_male_celdance.dsq":["shapes.vl2"],"shapes/medium_male_celflex.dsq":["shapes.vl2"],"shapes/medium_male_celrocky.dsq":["shapes.vl2"],"shapes/medium_male_celsalute.dsq":["shapes.vl2"],"shapes/medium_male_celtaunt.dsq":["shapes.vl2"],"shapes/medium_male_celwave.dsq":["shapes.vl2"],"shapes/medium_male_dead.dts":["shapes.vl2"],"shapes/medium_male_dieback.dsq":["shapes.vl2"],"shapes/medium_male_diechest.dsq":["shapes.vl2"],"shapes/medium_male_dieforward.dsq":["shapes.vl2"],"shapes/medium_male_diehead.dsq":["shapes.vl2"],"shapes/medium_male_dieknees.dsq":["shapes.vl2"],"shapes/medium_male_dieleglf.dsq":["shapes.vl2"],"shapes/medium_male_dielegrt.dsq":["shapes.vl2"],"shapes/medium_male_diesidelf.dsq":["shapes.vl2"],"shapes/medium_male_diesidert.dsq":["shapes.vl2"],"shapes/medium_male_dieslump.dsq":["shapes.vl2"],"shapes/medium_male_diespin.dsq":["shapes.vl2"],"shapes/medium_male_fall.dsq":["shapes.vl2"],"shapes/medium_male_forward.dsq":["shapes.vl2"],"shapes/medium_male_head.dsq":["shapes.vl2"],"shapes/medium_male_headside.dsq":["shapes.vl2"],"shapes/medium_male_idlepda.dsq":["shapes.vl2"],"shapes/medium_male_jet.dsq":["shapes.vl2"],"shapes/medium_male_jump.dsq":["shapes.vl2"],"shapes/medium_male_land.dsq":["shapes.vl2"],"shapes/medium_male_lookde.dsq":["shapes.vl2"],"shapes/medium_male_lookms.dsq":["shapes.vl2"],"shapes/medium_male_looknw.dsq":["shapes.vl2"],"shapes/medium_male_looksn.dsq":["shapes.vl2"],"shapes/medium_male_recoilde.dsq":["shapes.vl2"],"shapes/medium_male_root.dsq":["shapes.vl2"],"shapes/medium_male_side.dsq":["shapes.vl2"],"shapes/medium_male_sitting.dsq":["shapes.vl2"],"shapes/medium_male_ski.dsq":["shapes.vl2"],"shapes/medium_male_standjump.dsq":["shapes.vl2"],"shapes/medium_male_tauntbest.dsq":["shapes.vl2"],"shapes/medium_male_tauntimp.dsq":["shapes.vl2"],"shapes/mine.dts":["shapes.vl2"],"shapes/mortar_explosion.dts":["shapes.vl2"],"shapes/mortar_projectile.dts":["shapes.vl2"],"shapes/nexus_effect.dts":["shapes.vl2"],"shapes/nexusbase.dts":["shapes.vl2"],"shapes/nexuscap.dts":["shapes.vl2"],"shapes/octahedron.dts":["shapes.vl2"],"shapes/pack_barrel_aa.dts":["shapes.vl2"],"shapes/pack_barrel_elf.dts":["shapes.vl2"],"shapes/pack_barrel_fusion.dts":["shapes.vl2"],"shapes/pack_barrel_missile.dts":["shapes.vl2"],"shapes/pack_barrel_mortar.dts":["shapes.vl2"],"shapes/pack_deploy_ammo.dts":["shapes.vl2"],"shapes/pack_deploy_inventory.dts":["shapes.vl2"],"shapes/pack_deploy_sensor_motion.dts":["shapes.vl2"],"shapes/pack_deploy_sensor_pulse.dts":["shapes.vl2"],"shapes/pack_deploy_turreti.dts":["shapes.vl2"],"shapes/pack_deploy_turreto.dts":["shapes.vl2"],"shapes/pack_upgrade_ammo.dts":["shapes.vl2"],"shapes/pack_upgrade_cloaking.dts":["shapes.vl2"],"shapes/pack_upgrade_energy.dts":["shapes.vl2"],"shapes/pack_upgrade_repair.dts":["shapes.vl2"],"shapes/pack_upgrade_satchel.dts":["shapes.vl2"],"shapes/pack_upgrade_sensorjammer.dts":["shapes.vl2"],"shapes/pack_upgrade_shield.dts":["shapes.vl2"],"shapes/plasmabolt.dts":["shapes.vl2"],"shapes/pmiscf.dts":["shapes.vl2"],"shapes/porg1-dark.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/porg1.dts":["shapes.vl2"],"shapes/porg2.dts":["shapes.vl2"],"shapes/porg20.dts":["shapes.vl2"],"shapes/porg22.dts":["shapes.vl2"],"shapes/porg3.dts":["shapes.vl2"],"shapes/porg4.dts":["shapes.vl2"],"shapes/porg5.dts":["shapes.vl2"],"shapes/porg6.dts":["shapes.vl2"],"shapes/repair_kit.dts":["shapes.vl2"],"shapes/repair_patch.dts":["shapes.vl2"],"shapes/reticle_bomber.dts":["shapes.vl2"],"shapes/rst-TCmug.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-TNmug.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-chocotaco.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-goonflag.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-samifin.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-santahat.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-taobook.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/rst-turtle.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/sensor_pulse_large.dts":["shapes.vl2"],"shapes/sensor_pulse_medium.dts":["shapes.vl2"],"shapes/silver_pole.dts":["TR2final105-client.vl2"],"shapes/smiscf.dts":["shapes.vl2"],"shapes/solarpanel.dts":["shapes.vl2"],"shapes/sorg20.dts":["shapes.vl2"],"shapes/sorg21.dts":["shapes.vl2"],"shapes/sorg22.dts":["shapes.vl2"],"shapes/sorg23.dts":["shapes.vl2"],"shapes/sorg24.dts":["shapes.vl2"],"shapes/stackable1l.dts":["shapes.vl2"],"shapes/stackable1m.dts":["shapes.vl2"],"shapes/stackable1s.dts":["shapes.vl2"],"shapes/stackable2l.dts":["shapes.vl2"],"shapes/stackable2m.dts":["shapes.vl2"],"shapes/stackable2s.dts":["shapes.vl2"],"shapes/stackable3l.dts":["shapes.vl2"],"shapes/stackable3m.dts":["shapes.vl2"],"shapes/stackable3s.dts":["shapes.vl2"],"shapes/stackable4l.dts":["shapes.vl2"],"shapes/stackable4m.dts":["shapes.vl2"],"shapes/stackable5l.dts":["shapes.vl2"],"shapes/stackable5m.dts":["shapes.vl2"],"shapes/station_generator_large.dts":["shapes.vl2"],"shapes/station_inv_human.dts":["shapes.vl2"],"shapes/station_inv_mpb.dts":["shapes.vl2"],"shapes/station_teleport.dts":["shapes.vl2"],"shapes/statue_base.dts":["shapes.vl2"],"shapes/statue_hmale.dts":["shapes.vl2"],"shapes/statue_lfemale.dts":["shapes.vl2"],"shapes/statue_lmale.dts":["shapes.vl2"],"shapes/statue_plaque.dts":["shapes.vl2"],"shapes/switch.dts":["shapes.vl2"],"shapes/teamlogo_bd.dts":["shapes.vl2"],"shapes/teamlogo_be.dts":["shapes.vl2"],"shapes/teamlogo_ds.dts":["shapes.vl2"],"shapes/teamlogo_hb.dts":["shapes.vl2"],"shapes/teamlogo_inf.dts":["shapes.vl2"],"shapes/teamlogo_projector.dts":["shapes.vl2"],"shapes/teamlogo_storm.dts":["shapes.vl2"],"shapes/teamlogo_sw.dts":["shapes.vl2"],"shapes/turret_aa_large.dts":["shapes.vl2"],"shapes/turret_assaulttank_mortar.dts":["shapes.vl2"],"shapes/turret_assaulttank_plasma.dts":["shapes.vl2"],"shapes/turret_base_large.dts":["shapes.vl2"],"shapes/turret_base_mpb.dts":["shapes.vl2"],"shapes/turret_belly_barrell.dts":["shapes.vl2"],"shapes/turret_belly_barrelr.dts":["shapes.vl2"],"shapes/turret_belly_base.dts":["shapes.vl2"],"shapes/turret_elf_large.dts":["shapes.vl2"],"shapes/turret_fusion_large.dts":["shapes.vl2"],"shapes/turret_indoor_deployc.dts":["shapes.vl2"],"shapes/turret_indoor_deployf.dts":["shapes.vl2"],"shapes/turret_indoor_deployw.dts":["shapes.vl2"],"shapes/turret_missile_large.dts":["shapes.vl2"],"shapes/turret_mortar_large.dts":["shapes.vl2"],"shapes/turret_muzzlepoint.dts":["shapes.vl2"],"shapes/turret_outdoor_deploy.dts":["shapes.vl2"],"shapes/turret_sentry.dts":["shapes.vl2"],"shapes/turret_tank_barrelchain.dts":["shapes.vl2"],"shapes/turret_tank_barrelmortar.dts":["shapes.vl2"],"shapes/turret_tank_base.dts":["shapes.vl2"],"shapes/vehicle_air_bomber.dts":["shapes.vl2"],"shapes/vehicle_air_bomber_debris.dts":["shapes.vl2"],"shapes/vehicle_air_hapc.dts":["shapes.vl2"],"shapes/vehicle_air_hapc_debris.dts":["shapes.vl2"],"shapes/vehicle_air_scout.dts":["shapes.vl2"],"shapes/vehicle_air_scout_debris.dts":["shapes.vl2"],"shapes/vehicle_air_scout_wreck.dts":["shapes.vl2"],"shapes/vehicle_grav_scout.dts":["shapes.vl2"],"shapes/vehicle_grav_scout_debris.dts":["shapes.vl2"],"shapes/vehicle_grav_tank.dts":["shapes.vl2"],"shapes/vehicle_grav_tank_debris.dts":["shapes.vl2"],"shapes/vehicle_grav_tank_wreck.dts":["shapes.vl2"],"shapes/vehicle_land_assault.dts":["shapes.vl2"],"shapes/vehicle_land_assault_debris.dts":["shapes.vl2"],"shapes/vehicle_land_assault_wreck.dts":["shapes.vl2"],"shapes/vehicle_land_mpbase.dts":["shapes.vl2"],"shapes/vehicle_land_mpbase_debris.dts":["shapes.vl2"],"shapes/vehicle_pad.dts":["shapes.vl2"],"shapes/vehicle_pad_station.dts":["shapes.vl2"],"shapes/vend.dts":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"shapes/weapon_chaingun.dts":["shapes.vl2"],"shapes/weapon_chaingun_ammocasing.dts":["shapes.vl2"],"shapes/weapon_disc.dts":["shapes.vl2"],"shapes/weapon_elf.dts":["shapes.vl2"],"shapes/weapon_energy.dts":["shapes.vl2"],"shapes/weapon_energy_vehicle.dts":["shapes.vl2"],"shapes/weapon_grenade_launcher.dts":["shapes.vl2"],"shapes/weapon_missile.dts":["shapes.vl2"],"shapes/weapon_missile_casement.dts":["shapes.vl2"],"shapes/weapon_missile_fleschette.dts":["shapes.vl2"],"shapes/weapon_missile_projectile.dts":["shapes.vl2"],"shapes/weapon_mortar.dts":["shapes.vl2"],"shapes/weapon_plasma.dts":["shapes.vl2"],"shapes/weapon_repair.dts":["shapes.vl2"],"shapes/weapon_shocklance.dts":["shapes.vl2"],"shapes/weapon_sniper.dts":["shapes.vl2"],"shapes/weapon_targeting.dts":["shapes.vl2"],"shapes/xmiscf.dts":["shapes.vl2"],"shapes/xorg2.dts":["shapes.vl2"],"shapes/xorg20.dts":["shapes.vl2"],"shapes/xorg21.dts":["shapes.vl2"],"shapes/xorg3.dts":["shapes.vl2"],"shapes/xorg4.dts":["shapes.vl2"],"shapes/xorg5.dts":["shapes.vl2"],"t2csri/authconnect.cs":["T2csri.vl2"],"t2csri/authconnect.cs.dso":["T2csri.vl2"],"t2csri/authinterface.cs":["T2csri.vl2"],"t2csri/authinterface.cs.dso":["T2csri.vl2"],"t2csri/autoupdate.cs":["T2csri.vl2"],"t2csri/bans.cs":["T2csri.vl2"],"t2csri/bans.cs.dso":["T2csri.vl2"],"t2csri/base64.cs":["T2csri.vl2"],"t2csri/base64.cs.dso":["T2csri.vl2"],"t2csri/certstore.rb":["T2csri.vl2"],"t2csri/clientSide.cs":["T2csri.vl2"],"t2csri/clientSide.cs.dso":["T2csri.vl2"],"t2csri/clientSideClans.cs":["T2csri.vl2"],"t2csri/clientSideClans.cs.dso":["T2csri.vl2"],"t2csri/crypto.rb":["T2csri.vl2"],"t2csri/glue.cs":["T2csri.vl2"],"t2csri/glue.cs.dso":["T2csri.vl2"],"t2csri/ipv4.cs":["T2csri.vl2"],"t2csri/ipv4.cs.dso":["T2csri.vl2"],"t2csri/rubyUtils.cs":["T2csri.vl2"],"t2csri/rubyUtils.cs.dso":["T2csri.vl2"],"t2csri/serverSide.cs":["T2csri.vl2"],"t2csri/serverSideClans.cs":["T2csri.vl2"],"t2csri/serverSideClans.cs.dso":["T2csri.vl2"],"t2csri/serverglue.cs":["T2csri.vl2"],"t2csri/serverglue.cs.dso":["T2csri.vl2"],"t2csri/serverside.cs.dso":["T2csri.vl2"],"terrains/2ArenaDome.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2ArenaValley.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2DustBowl.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2Flyersarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2IceDome.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/2IndoorIntensity.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/4thGradeDropout.spn":["4thGradeDropout.vl2"],"terrains/Abominable.nav":["missions.vl2"],"terrains/Abominable.spn":["missions.vl2"],"terrains/Abominable.ter":["missions.vl2"],"terrains/AcidRain.spn":["Classic_maps_v1.vl2"],"terrains/AcidRain.ter":["Classic_maps_v1.vl2"],"terrains/Aeroena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/AgentsOfFortune.nav":["missions.vl2"],"terrains/AgentsOfFortune.spn":["missions.vl2"],"terrains/AgentsOfFortune.ter":["missions.vl2"],"terrains/Alcatraz.spn":["missions.vl2"],"terrains/Alcatraz.ter":["missions.vl2"],"terrains/Archipelago.spn":["missions.vl2"],"terrains/Archipelago.ter":["missions.vl2"],"terrains/ArenaHeaven.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaHell.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaHell2.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaInTheHill.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ArenaUnderTheHill.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/AryoArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/AshesToAshes.spn":["missions.vl2"],"terrains/AshesToAshes.ter":["missions.vl2"],"terrains/Atropos2.nav":["atroposthereturn.vl2"],"terrains/Atropos2.spn":["atroposthereturn.vl2"],"terrains/Attrition.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Attrition.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/BastardForge.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/BeggarsRun.nav":["missions.vl2"],"terrains/BeggarsRun.spn":["missions.vl2"],"terrains/BeggarsRun.ter":["missions.vl2"],"terrains/BeneathTheHill.spn":["BeneathTheHill.vl2"],"terrains/Blastside_nef.spn":["Classic_maps_v1.vl2"],"terrains/BrainFreeze.nav":["brainfreeze.vl2"],"terrains/BrainFreeze.spn":["brainfreeze.vl2"],"terrains/BridgeTooFar.spn":["DynamixFinalPack.vl2"],"terrains/BridgeTooFar.ter":["DynamixFinalPack.vl2"],"terrains/Broadside_nef.spn":["Classic_maps_v1.vl2"],"terrains/Broadside_nef.ter":["Classic_maps_v1.vl2"],"terrains/Broken_Dreams.nav":["brokendreams_2.vl2"],"terrains/Broken_Dreams.spn":["brokendreams_2.vl2"],"terrains/Bunkered.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/CCD.ter":["TWL2-MapPack.vl2"],"terrains/Caldera.spn":["missions.vl2"],"terrains/Caldera.ter":["missions.vl2"],"terrains/Cardiac.ter":["S8maps.vl2"],"terrains/Casern_Cavite.nav":["missions.vl2"],"terrains/Casern_Cavite.spn":["missions.vl2"],"terrains/Casern_Cavite.ter":["missions.vl2"],"terrains/CeleritySE.ter":["TWL2-MapPack.vl2"],"terrains/Centaur.nav":["centaur.vl2"],"terrains/Centaur.spn":["centaur.vl2"],"terrains/Centaur.ter":["centaur.vl2"],"terrains/Chasmaclysmic.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Chasmaclysmic.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Checkmate.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Cinerarium.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/ColdFusion.spn":["ColdFusion.vl2"],"terrains/ColdWar.spn":["ColdWar.vl2"],"terrains/CompUSA_Melee.spn":["missions.vl2"],"terrains/CompUSA_Melee.ter":["missions.vl2"],"terrains/Conclave.spn":["Conclave.vl2"],"terrains/Confusco.spn":["Classic_maps_v1.vl2"],"terrains/Confusco.ter":["Classic_maps_v1.vl2"],"terrains/ContainmentLarge.spn":["ContainmentLarge.vl2"],"terrains/Coppera.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/CrashClash.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Crater71.spn":["TR2final105-client.vl2"],"terrains/Crater71.ter":["TR2final105-client.vl2"],"terrains/DBS_Smoothed.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DBS_Smoothed.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Agroleon.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Astro.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_BastardForge.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_BitterGorge.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Bunkered.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Cinerarium.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_DermCity.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Embers.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_EmeraldSpit.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_FaceCrossing.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Hoth.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_IceGiant.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_IsleDeBatalla.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_LavaGods.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Magellan.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_MoonDance.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Pantheon.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Pantheon.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Paranoia.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Pariah.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_PipeDream.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_RavineV.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_ScorchedEarth.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_SimpleFlagArena.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_SpinCycle.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_StarFall.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Tyre.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DMP_Wasteland.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Badlands.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Badlands.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Desert.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Desert.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Ice.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/DX_Ice.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Damnation.spn":["missions.vl2"],"terrains/Damnation.ter":["missions.vl2"],"terrains/DangerousCrossingArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/DangerousCrossing_nef.spn":["Classic_maps_v1.vl2"],"terrains/DangerousCrossing_nef.ter":["Classic_maps_v1.vl2"],"terrains/DeathBirdsFly.spn":["missions.vl2"],"terrains/DeathBirdsFly.ter":["missions.vl2"],"terrains/DeathFromBelow.spn":["DeathFromBelow.vl2"],"terrains/DeathRow.spn":["DeathRow.vl2"],"terrains/DesertWind.spn":["DesertWind.vl2"],"terrains/DesertofDeath_nef.spn":["Classic_maps_v1.vl2"],"terrains/DesertofDeath_nef.ter":["Classic_maps_v1.vl2"],"terrains/Desiccator.spn":["missions.vl2"],"terrains/Desiccator.ter":["missions.vl2"],"terrains/DevilsElbow.spn":["DynamixFinalPack.vl2"],"terrains/DevilsElbow.ter":["DynamixFinalPack.vl2"],"terrains/DraconisVII.spn":["DraconisVII.vl2"],"terrains/DustToDust.nav":["missions.vl2"],"terrains/DustToDust.spn":["missions.vl2"],"terrains/DustToDust.ter":["missions.vl2"],"terrains/EB_Hades.spn":["missions.vl2"],"terrains/EB_Hades.ter":["missions.vl2"],"terrains/Embers.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Envyrena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/EnyLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Equinox.nav":["missions.vl2"],"terrains/Equinox.spn":["missions.vl2"],"terrains/Equinox.ter":["missions.vl2"],"terrains/Escalade.nav":["missions.vl2"],"terrains/Escalade.spn":["missions.vl2"],"terrains/Escalade.ter":["missions.vl2"],"terrains/Euro4_Bleed.ter":["TWL2-MapPack.vl2"],"terrains/Euro4_Dissention.ter":["TWL2-MapPack.vl2"],"terrains/Euro4_FrozenHope.ter":["TWL2-MapPack.vl2"],"terrains/Euro_Drifts_SE.ter":["TWL2-MapPack.vl2"],"terrains/EveningLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Exposure.spn":["Exposure-v1.1.vl2"],"terrains/Extra_Badlands1.ter":["missions.vl2"],"terrains/FinalRevenge.spn":["FinalRevenge.vl2"],"terrains/Firestorm.spn":["missions.vl2"],"terrains/Firestorm.ter":["missions.vl2"],"terrains/FlashPoint.spn":["missions.vl2"],"terrains/Flashpoint.ter":["missions.vl2"],"terrains/Fracas.nav":["missions.vl2"],"terrains/Fracas.spn":["missions.vl2"],"terrains/Fracas.ter":["missions.vl2"],"terrains/FrozenFury.spn":["TR2final105-client.vl2"],"terrains/FrozenFury.ter":["TR2final105-client.vl2"],"terrains/Gauntlet.nav":["missions.vl2"],"terrains/Gauntlet.spn":["missions.vl2"],"terrains/Gauntlet.ter":["missions.vl2"],"terrains/Gehenna.spn":["missions.vl2"],"terrains/Gehenna.ter":["missions.vl2"],"terrains/Geothermal.ter":["S8maps.vl2"],"terrains/Geronimo.spn":["Geronimo.vl2"],"terrains/GodsRift.spn":["TR2final105-client.vl2"],"terrains/GodsRift.ter":["TR2final105-client.vl2"],"terrains/Gorgon.spn":["Classic_maps_v1.vl2"],"terrains/Gorgon.ter":["Classic_maps_v1.vl2"],"terrains/HO_Badlands.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Badlands.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Desert.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Desert.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Ice.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Ice.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Lush.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HO_Lush.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Haven.spn":["TR2final105-client.vl2"],"terrains/Haven.ter":["TR2final105-client.vl2"],"terrains/Helioarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Hildebrand.ter":["TWL2-MapPack.vl2"],"terrains/HillKing.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/HillKingLT.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Hillside.spn":["Classic_maps_v1.vl2"],"terrains/Hillside.ter":["Classic_maps_v1.vl2"],"terrains/Hoth.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/IceBound.spn":["missions.vl2"],"terrains/IceBound.ter":["missions.vl2"],"terrains/IceGiant.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/IceRidge_nef.spn":["Classic_maps_v1.vl2"],"terrains/IceRidge_nef.ter":["Classic_maps_v1.vl2"],"terrains/InnerSanctum.nav":["DynamixFinalPack.vl2"],"terrains/InnerSanctum.spn":["DynamixFinalPack.vl2"],"terrains/InnerSanctum.ter":["DynamixFinalPack.vl2"],"terrains/Insalubria.nav":["missions.vl2"],"terrains/Insalubria.spn":["missions.vl2"],"terrains/Insalubria.ter":["missions.vl2"],"terrains/Invictus.nav":["missions.vl2"],"terrains/Invictus.spn":["missions.vl2"],"terrains/Invictus.ter":["missions.vl2"],"terrains/IsleOfMan.spn":["DynamixFinalPack.vl2"],"terrains/IsleOfMan.ter":["DynamixFinalPack.vl2"],"terrains/IveHadWorse.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/JacobsLadder.spn":["missions.vl2"],"terrains/JacobsLadder.ter":["missions.vl2"],"terrains/Katabatic.nav":["missions.vl2"],"terrains/Katabatic.spn":["missions.vl2"],"terrains/Katabatic.ter":["missions.vl2"],"terrains/Khalarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Lakefront.spn":["Classic_maps_v1.vl2"],"terrains/Lakefront.ter":["Classic_maps_v1.vl2"],"terrains/LavaGods.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Magellan.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Magmatic.spn":["Classic_maps_v1.vl2"],"terrains/Magmatic.ter":["Classic_maps_v1.vl2"],"terrains/MapAssets.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Masada.spn":["missions.vl2"],"terrains/Masada.ter":["missions.vl2"],"terrains/Minotaur.nav":["missions.vl2"],"terrains/Minotaur.spn":["missions.vl2"],"terrains/Minotaur.ter":["missions.vl2"],"terrains/MoonDance2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Moonwalk.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Moonwalk.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Morena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/MountainSiege.spn":["MountainSiege.vl2"],"terrains/Mudside.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Mutiny.spn":["Mutiny.vl2"],"terrains/MyrkWood.spn":["missions.vl2"],"terrains/MyrkWood.ter":["missions.vl2"],"terrains/Oasis.spn":["missions.vl2"],"terrains/Oasis.ter":["missions.vl2"],"terrains/Octane.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Ocular.ter":["TWL2-MapPack.vl2"],"terrains/Overreach.spn":["missions.vl2"],"terrains/Overreach.ter":["missions.vl2"],"terrains/Pantheon.spn":["DynamixFinalPack.vl2"],"terrains/Pantheon.ter":["DynamixFinalPack.vl2"],"terrains/Paranoia.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pariah.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pariah2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pariah_Mirrored.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Patience.spn":["Patience.vl2"],"terrains/PhasmaDust.spn":["TR2final105-client.vl2"],"terrains/PhasmaDust.ter":["TR2final105-client.vl2"],"terrains/PlanetX.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/PlanetX2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Planetside.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Prismatic.nav":["Prismatic.vl2"],"terrains/Prismatic.spn":["Prismatic.vl2"],"terrains/ProArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/PuliVeivari.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/PuliVeivari.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Pyroclasm.spn":["missions.vl2"],"terrains/Pyroclasm.ter":["missions.vl2"],"terrains/Quagmire.spn":["missions.vl2"],"terrains/Quagmire.ter":["missions.vl2"],"terrains/Raindance_nef.spn":["Classic_maps_v1.vl2"],"terrains/Raindance_nef.ter":["Classic_maps_v1.vl2"],"terrains/Ramparts.spn":["Classic_maps_v1.vl2"],"terrains/Ramparts.ter":["Classic_maps_v1.vl2"],"terrains/RandomTer1.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer10.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer3.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer4.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer5.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer6.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer7.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer8.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RandomTer9.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Rasp.spn":["missions.vl2"],"terrains/Rasp.ter":["missions.vl2"],"terrains/Ravine.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Ravine.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/RavineV.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Recalescence.spn":["missions.vl2"],"terrains/Recalescence.ter":["missions.vl2"],"terrains/Respite.nav":["missions.vl2"],"terrains/Respite.spn":["missions.vl2"],"terrains/Respite.ter":["missions.vl2"],"terrains/Reversion.spn":["missions.vl2"],"terrains/Reversion.ter":["missions.vl2"],"terrains/Ridgerena.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Ridgerena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Rimehold.spn":["missions.vl2"],"terrains/Rimehold.ter":["missions.vl2"],"terrains/RiverDance.nav":["missions.vl2"],"terrains/RiverDance.spn":["missions.vl2"],"terrains/RiverDance.ter":["missions.vl2"],"terrains/Rollercoaster_nef.spn":["Classic_maps_v1.vl2"],"terrains/Rollercoaster_nef.ter":["Classic_maps_v1.vl2"],"terrains/Rst_ScorchedEarth.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Rush.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Rush.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/S5-Icedance.ter":["S5maps.vl2"],"terrains/S5-Mordacity.ter":["S5maps.vl2"],"terrains/S5-massive.ter":["S5maps.vl2"],"terrains/S5_Centaur.spn":["S5maps.vl2"],"terrains/S5_Centaur.ter":["S5maps.vl2"],"terrains/S5_Damnation.spn":["S5maps.vl2"],"terrains/S5_Drache.spn":["S5maps.vl2"],"terrains/S5_Drache.ter":["S5maps.vl2"],"terrains/S5_HawkingHeat.spn":["S5maps.vl2"],"terrains/S5_Icedance.spn":["S5maps.vl2"],"terrains/S5_Icedance.ter":["S5maps.vl2"],"terrains/S5_Massive.spn":["S5maps.vl2"],"terrains/S5_Mimicry.spn":["S5maps.vl2"],"terrains/S5_Misadventure.spn":["S5maps.vl2"],"terrains/S5_Mordacity.spn":["S5maps.vl2"],"terrains/S5_Mordacity.ter":["S5maps.vl2"],"terrains/S5_PipeDream.spn":["S5maps.vl2"],"terrains/S5_Reynard.spn":["S5maps.vl2"],"terrains/S5_Sherman.spn":["S5maps.vl2"],"terrains/S5_Sherman.ter":["S5maps.vl2"],"terrains/S5_Silenus.spn":["S5maps.vl2"],"terrains/S5_WoodyMyrk.spn":["S5maps.vl2"],"terrains/S5_massive.ter":["S5maps.vl2"],"terrains/S5_rst_hawkingheat.ter":["S5maps.vl2"],"terrains/S5_rst_misadventure.ter":["S5maps.vl2"],"terrains/S5_rst_reynard.ter":["S5maps.vl2"],"terrains/S5_rst_silenus.ter":["S5maps.vl2"],"terrains/S8_Geothermal.spn":["S8maps.vl2"],"terrains/S8_Mountking.spn":["S8maps.vl2"],"terrains/S8_Opus.spn":["S8maps.vl2"],"terrains/S8_Zilch.spn":["S8maps.vl2"],"terrains/S8_rst_dogma.ter":["S8maps.vl2"],"terrains/S8_rst_opus.ter":["S8maps.vl2"],"terrains/S8_zilch.ter":["S8maps.vl2"],"terrains/SC_Badlands.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Badlands.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Desert.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Desert.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Ice.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Ice.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Lush.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Lush.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Night.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Night.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Normal.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SC_Normal.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Sanctuary.nav":["missions.vl2"],"terrains/Sanctuary.spn":["missions.vl2"],"terrains/Sanctuary.ter":["missions.vl2"],"terrains/Sandstorm.spn":["Classic_maps_v1.vl2"],"terrains/Sandstorm.ter":["Classic_maps_v1.vl2"],"terrains/Scarabrae_nef.spn":["Classic_maps_v1.vl2"],"terrains/Scarabrae_nef.ter":["Classic_maps_v1.vl2"],"terrains/ShockRidge.spn":["Classic_maps_v1.vl2"],"terrains/ShockRidge.ter":["Classic_maps_v1.vl2"],"terrains/ShrineArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ShrineArenaII.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/SiegeofYmir.spn":["SiegeofYmir.vl2"],"terrains/SilentStorm.spn":["SilentStorm.vl2"],"terrains/Sirocco.spn":["missions.vl2"],"terrains/Sirocco.ter":["missions.vl2"],"terrains/SkiFree.nav":["SkiFreeGameType.vl2"],"terrains/SkiFree.spn":["SkiFreeGameType.vl2"],"terrains/SkiFreeZ_Championship_2021.spn":["SkiFreeGameType.vl2"],"terrains/SkiFreeZ_Championship_2021.ter":["SkiFreeGameType.vl2"],"terrains/SkinnyDip.spn":["TR2final105-client.vl2"],"terrains/SkinnyDip.ter":["TR2final105-client.vl2"],"terrains/SlapDash.spn":["missions.vl2"],"terrains/Slapdash.ter":["missions.vl2"],"terrains/SmogArena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/SnowBound.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Snowblind_nef.spn":["Classic_maps_v1.vl2"],"terrains/Snowblind_nef.ter":["Classic_maps_v1.vl2"],"terrains/SoccerLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Solace.spn":["Solace.vl2"],"terrains/SolsDescent.spn":["TR2final105-client.vl2"],"terrains/SolsDescent.ter":["TR2final105-client.vl2"],"terrains/SpinCycle.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SpyLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/StarFallCTF2.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Starfallen.spn":["Classic_maps_v1.vl2"],"terrains/Starfallen.ter":["Classic_maps_v1.vl2"],"terrains/Stonehenge_Arena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Stonehenge_nef.spn":["Classic_maps_v1.vl2"],"terrains/Stonehenge_nef.ter":["Classic_maps_v1.vl2"],"terrains/Stripmine.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/SubZero.spn":["Classic_maps_v1.vl2"],"terrains/SubZero.ter":["Classic_maps_v1.vl2"],"terrains/SunDried.nav":["missions.vl2"],"terrains/SunDried.spn":["missions.vl2"],"terrains/SunDried.ter":["missions.vl2"],"terrains/Surreal.spn":["Classic_maps_v1.vl2"],"terrains/Surreal.ter":["Classic_maps_v1.vl2"],"terrains/TL_Drorck.ter":["TWL2-MapPack.vl2"],"terrains/TL_Magnum.ter":["TWL2-MapPack.vl2"],"terrains/TL_MuddySwamp.ter":["TWL2-MapPack.vl2"],"terrains/TL_RoughLand.ter":["TWL2-MapPack.vl2"],"terrains/TL_Skylight.ter":["TWL2-MapPack.vl2"],"terrains/TWL-Abaddon.ter":["TWL-MapPack.vl2"],"terrains/TWL-BaNsHee.ter":["TWL-MapPack.vl2"],"terrains/TWL-BeachBlitz.ter":["TWL-MapPack.vl2"],"terrains/TWL-BeggarsRun.ter":["TWL-MapPack.vl2"],"terrains/TWL-BlueMoon.ter":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"terrains/TWL-Boss.ter":["TWL-MapPack.vl2"],"terrains/TWL-Chokepoint.ter":["TWL-MapPack.vl2"],"terrains/TWL-Cinereous.ter":["TWL-MapPack.vl2"],"terrains/TWL-Clusterfuct.ter":["TWL-MapPack.vl2"],"terrains/TWL-Curtilage.ter":["TWL-MapPack.vl2"],"terrains/TWL-Damnation.ter":["TWL-MapPack.vl2"],"terrains/TWL-DeadlyBirdsSong.ter":["TWL-MapPack.vl2"],"terrains/TWL-Deserted.ter":["TWL-MapPack.vl2"],"terrains/TWL-Desiccator.ter":["TWL-MapPack.vl2"],"terrains/TWL-Drifts.ter":["TWL-MapPack.vl2"],"terrains/TWL-Euro_Feign.ter":["TWL-MapPack.vl2"],"terrains/TWL-Frostclaw.ter":["TWL-MapPack.vl2"],"terrains/TWL-Frozen.ter":["TWL-MapPack.vl2"],"terrains/TWL-Harvester.ter":["TWL-MapPack.vl2"],"terrains/TWL-Horde.ter":["TWL-MapPack.vl2"],"terrains/TWL-Katabatic.ter":["TWL-MapPack.vl2"],"terrains/TWL-Neve.ter":["TWL-MapPack.vl2"],"terrains/TWL-NoShelter.ter":["TWL-MapPack.vl2"],"terrains/TWL-Os_Iris.ter":["TWL-MapPack.vl2"],"terrains/TWL-Pandemonium.ter":["TWL-MapPack.vl2"],"terrains/TWL-Runenmacht.ter":["TWL-MapPack.vl2"],"terrains/TWL-Slapdash.ter":["TWL-MapPack.vl2"],"terrains/TWL-SubZero.ter":["TWL-MapPack.vl2"],"terrains/TWL-WilderZone.ter":["TWL-MapPack.vl2"],"terrains/TWL-WoodyMyrk.ter":["TWL-MapPack.vl2"],"terrains/TWL2_Bleed.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_BlueMoon.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_CanyonCrusadeDeluxe.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Celerity.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_CloakOfNight.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Crevice.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Crevice.ter":["TWL2-MapPack.vl2"],"terrains/TWL2_Dissention.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Drifts.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Drorck.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_FrozenGlory.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_FrozenHope.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Frozenglory.ter":["TWL2-MapPack.vl2"],"terrains/TWL2_Hildebrand.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_IceDagger.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_JaggedClaw.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Magnum.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_MidnightMayhemDeluxe.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_MuddySwamp.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Norty.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Ocular.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_RoughLand.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Ruined.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_Ruined.ter":["TWL2-MapPack.vl2"],"terrains/TWL2_Skylight.spn":["TWL2-MapPack.vl2"],"terrains/TWL2_WoodyMyrk.spn":["TWL2-MapPack.vl2"],"terrains/TWL_Abaddon.spn":["TWL-MapPack.vl2"],"terrains/TWL_BaNsHee.spn":["TWL-MapPack.vl2"],"terrains/TWL_BeachBlitz.spn":["TWL-MapPack.vl2"],"terrains/TWL_BeggarsRun.spn":["TWL-MapPack.vl2"],"terrains/TWL_BlueMoon.spn":["TWL-MapPack.vl2"],"terrains/TWL_Boss.spn":["TWL-MapPack.vl2"],"terrains/TWL_Celerity.spn":["TWL-MapPack.vl2"],"terrains/TWL_Chokepoint.spn":["TWL-MapPack.vl2"],"terrains/TWL_Cinereous.spn":["TWL-MapPack.vl2"],"terrains/TWL_Clusterfuct.spn":["TWL-MapPack.vl2"],"terrains/TWL_Crossfire.spn":["TWL-MapPack.vl2"],"terrains/TWL_Crossfire.ter":["TWL-MapPack.vl2"],"terrains/TWL_Curtilage.spn":["TWL-MapPack.vl2"],"terrains/TWL_Damnation.spn":["TWL-MapPack.vl2"],"terrains/TWL_DangerousCrossing.spn":["TWL-MapPack.vl2"],"terrains/TWL_DeadlyBirdsSong.spn":["TWL-MapPack.vl2"],"terrains/TWL_Deserted.spn":["TWL-MapPack.vl2"],"terrains/TWL_Desiccator.spn":["TWL-MapPack.vl2"],"terrains/TWL_Drifts.spn":["TWL-MapPack.vl2"],"terrains/TWL_Feign.spn":["TWL-MapPack.vl2"],"terrains/TWL_Frostclaw.spn":["TWL-MapPack.vl2"],"terrains/TWL_Frozen.spn":["TWL-MapPack.vl2"],"terrains/TWL_Harvester.spn":["TWL-MapPack.vl2"],"terrains/TWL_Horde.spn":["TWL-MapPack.vl2"],"terrains/TWL_Katabatic.spn":["TWL-MapPack.vl2"],"terrains/TWL_Magmatic.spn":["TWL-MapPack.vl2"],"terrains/TWL_Minotaur.spn":["TWL-MapPack.vl2"],"terrains/TWL_Neve.spn":["TWL-MapPack.vl2"],"terrains/TWL_NoShelter.spn":["TWL-MapPack.vl2"],"terrains/TWL_OsIris.spn":["TWL-MapPack.vl2"],"terrains/TWL_Pandemonium.spn":["TWL-MapPack.vl2"],"terrains/TWL_Quagmire.spn":["TWL-MapPack.vl2"],"terrains/TWL_Raindance.spn":["TWL-MapPack.vl2"],"terrains/TWL_Ramparts.spn":["TWL-MapPack.vl2"],"terrains/TWL_Reversion.spn":["TWL-MapPack.vl2"],"terrains/TWL_Rollercoaster.spn":["TWL-MapPack.vl2"],"terrains/TWL_Runenmacht.spn":["TWL-MapPack.vl2"],"terrains/TWL_Sandstorm.spn":["TWL-MapPack.vl2"],"terrains/TWL_Slapdash.spn":["TWL-MapPack.vl2"],"terrains/TWL_Snowblind.spn":["TWL-MapPack.vl2"],"terrains/TWL_Starfallen.spn":["TWL-MapPack.vl2"],"terrains/TWL_Stonehenge.spn":["TWL-MapPack.vl2"],"terrains/TWL_SubZero.spn":["TWL-MapPack.vl2"],"terrains/TWL_Surreal.spn":["TWL-MapPack.vl2"],"terrains/TWL_Titan.spn":["TWL-MapPack.vl2"],"terrains/TWL_WhiteDwarf.spn":["TWL-MapPack.vl2"],"terrains/TWL_WilderZone.spn":["TWL-MapPack.vl2"],"terrains/TWL_WoodyMyrk.spn":["TWL-MapPack.vl2"],"terrains/Talus.nav":["missions.vl2"],"terrains/Talus.spn":["missions.vl2"],"terrains/Talus.ter":["missions.vl2"],"terrains/TempleTussleVersion2.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/TempleTussleVersion2.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Tenebrous.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/ThinIce.spn":["missions.vl2"],"terrains/ThinIce.ter":["missions.vl2"],"terrains/Titan.spn":["Classic_maps_v1.vl2"],"terrains/Titan.ter":["Classic_maps_v1.vl2"],"terrains/Tombstone.nav":["missions.vl2"],"terrains/Tombstone.spn":["missions.vl2"],"terrains/Tombstone.ter":["missions.vl2"],"terrains/Training1.nav":["missions.vl2"],"terrains/Training1.ter":["missions.vl2"],"terrains/Training2.nav":["missions.vl2"],"terrains/Training2.ter":["missions.vl2"],"terrains/Training3.nav":["missions.vl2"],"terrains/Training3.ter":["missions.vl2"],"terrains/Training4.nav":["missions.vl2"],"terrains/Training4.ter":["missions.vl2"],"terrains/Training5.nav":["missions.vl2"],"terrains/Training5.ter":["missions.vl2"],"terrains/TreasureIsland.spn":["TR2final105-client.vl2"],"terrains/TreasureIsland.ter":["TR2final105-client.vl2"],"terrains/Trident.spn":["DynamixFinalPack.vl2"],"terrains/Trident.ter":["DynamixFinalPack.vl2"],"terrains/TridentLE.spn":["TridentLE.vl2"],"terrains/TrueGrit.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/TrueGrit.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Tyre.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/UltimaThule.spn":["missions.vl2"],"terrains/UltimaThule.ter":["missions.vl2"],"terrains/Underhill.nav":["missions.vl2"],"terrains/Underhill.spn":["missions.vl2"],"terrains/Underhill.ter":["missions.vl2"],"terrains/UphillBattle.spn":["UphillBattle.vl2"],"terrains/UporDown.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/VanDamnedLT.spn":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/VulcansHammer.spn":["VulcansHammer.vl2"],"terrains/WalledIn.nav":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/WalledIn.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/WalledInII.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/Wasteland.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/WhiteDwarf.spn":["Classic_maps_v1.vl2"],"terrains/WhiteDwarf.ter":["Classic_maps_v1.vl2"],"terrains/Whiteout.nav":["missions.vl2"],"terrains/Whiteout.spn":["missions.vl2"],"terrains/Whiteout.ter":["missions.vl2"],"terrains/WonderLand.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/WoodyMyrkSE.ter":["S5maps.vl2","TWL2-MapPack.vl2"],"terrains/Xtra_AshenPowder.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Bastage.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Birthright.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Crown.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_DesertedSE.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Helion.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_SoupLadle.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_StarFall_T1.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Stripmine.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_ThunderGiant.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_VanDamned.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Voodoo.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_Xerxes.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Xtra_ziggurat.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/Yubarena.spn":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"terrains/cloak.ter":["TWL2-MapPack.vl2"],"terrains/heightfield/CTF.Katabatic_heightfield.cs":["missions.vl2"],"terrains/heightfield/CTF.RiverDance_heightfield.cs":["missions.vl2"],"terrains/heightfield/Centaur_heightfield.cs":["centaur.vl2"],"terrains/heightfield/DeathBirdsFly_heightfield.cs":["missions.vl2"],"terrains/heightfield/Exposure_heightfield.cs":["Exposure-v1.1.vl2"],"terrains/heightfield/Fall_To_Glory_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Badlands_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Desert_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Lush_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Snow2_heightfield.cs":["missions.vl2"],"terrains/heightfield/Home.Snow_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Burnout_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Casern_Cavite_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Chaopia_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Intaglio_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.MyrkWood_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.Rasp_heightfield.cs":["missions.vl2"],"terrains/heightfield/Hunters.SunDried_heightfield.cs":["missions.vl2"],"terrains/heightfield/Lush.cs":["missions.vl2"],"terrains/heightfield/Lush1.cs":["missions.vl2"],"terrains/heightfield/Lush2.cs":["missions.vl2"],"terrains/heightfield/Lush3.cs":["missions.vl2"],"terrains/heightfield/Lush4.cs":["missions.vl2"],"terrains/heightfield/Lush5.cs":["missions.vl2"],"terrains/heightfield/Lush8.cs":["missions.vl2"],"terrains/heightfield/Mark1_heightfield.cs":["missions.vl2"],"terrains/heightfield/MyrkWoodMask.png":["missions.vl2"],"terrains/heightfield/MyrkWoodStream.png":["missions.vl2"],"terrains/heightfield/NewLava1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Overreach_heightfield.cs":["missions.vl2"],"terrains/heightfield/Prismatic_heightfield.cs":["Prismatic.vl2"],"terrains/heightfield/RST_hawking.png":["S5maps.vl2"],"terrains/heightfield/RST_hawkingheat.png":["S5maps.vl2"],"terrains/heightfield/RST_misadventure.png":["S5maps.vl2"],"terrains/heightfield/RST_reynard.png":["S5maps.vl2"],"terrains/heightfield/RST_silenus.png":["S5maps.vl2"],"terrains/heightfield/Reversion_heightfield.cs":["missions.vl2"],"terrains/heightfield/Roads.cs":["missions.vl2"],"terrains/heightfield/Siege.Gauntlet_heightfield.cs":["missions.vl2"],"terrains/heightfield/Siege.IceBound_heightfield.cs":["missions.vl2"],"terrains/heightfield/SinglePlayer.Skiing_heightfield.cs":["missions.vl2"],"terrains/heightfield/Solace_heightfield.cs":["Solace.vl2"],"terrains/heightfield/Sounds.Mission1_heightfield.cs":["missions.vl2"],"terrains/heightfield/SunDriedMask.png":["missions.vl2"],"terrains/heightfield/ThinIce_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands2_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands3_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Badlands4_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Desert1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Desert2_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Desert5_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Lush1_heightfield.cs":["missions.vl2"],"terrains/heightfield/Working.Lush2_heightfield.cs":["missions.vl2"],"terrains/heightfield/desert.cs":["missions.vl2"],"terrains/icedagger.ter":["TWL2-MapPack.vl2"],"terrains/jaggedclaw.ter":["TWL2-MapPack.vl2"],"terrains/mmd.ter":["TWL2-MapPack.vl2"],"terrains/mountking.ter":["S8maps.vl2"],"terrains/norty.ter":["TWL2-MapPack.vl2"],"terrains/rst_Astro.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_FaceCrossing.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_SimpleFlagArena.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_agroleon.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_bittergorge.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_crumpie.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_dermcity.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_isledebatalla.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/rst_spit.ter":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"terrains/s8_Cardiac.spn":["S8maps.vl2"],"terrains/texture/Centaur_texture.cs":["centaur.vl2"],"terrains/texture/DeathBirdsFly_texture.cs":["missions.vl2"],"terrains/texture/Mark1_texture.cs":["missions.vl2"],"terrains/texture/NewDesert1_texture.cs":["missions.vl2"],"terrains/texture/NewDesert2_texture.cs":["missions.vl2"],"terrains/texture/NewDesert3_texture.cs":["missions.vl2"],"terrains/texture/NewLava1_texture.cs":["missions.vl2"],"terrains/texture/NewLava2_texture.cs":["missions.vl2"],"terrains/texture/NewLush1_texture.cs":["missions.vl2"],"terrains/texture/NewLush2_texture.cs":["missions.vl2"],"terrains/texture/NewLush3_texture.cs":["missions.vl2"],"terrains/texture/NewSnow1_texture.cs":["missions.vl2"],"terrains/texture/NewSnow2_texture.cs":["missions.vl2"],"terrains/texture/NewSnow3_textures.cs":["missions.vl2"],"terrains/texture/NewSnowyGrass_texture.cs":["missions.vl2"],"terrains/texture/Overreach_texture.cs":["missions.vl2"],"terrains/texture/Reversion_texture.cs":["missions.vl2"],"terrains/texture/Sounds.Mission1_texture.cs":["missions.vl2"],"terrains/texture/ThinIce_texture.cs":["missions.vl2"],"textures/Badlands_l4.dml":["textures.vl2"],"textures/DarkStormy.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Desert_l4.dml":["textures.vl2"],"textures/Details/bb_det2.png":["TWL-MapPack.vl2"],"textures/Euro4_Bleed.dml":["TWL2-MapPack.vl2"],"textures/Euro4_FrozenHope.dml":["TWL2-MapPack.vl2"],"textures/Evil8/e8_base1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_base1b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_base1c.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_btrim01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_btrim05.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8_launchpad1.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_mtlwall1b.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_mtlwall3.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_mtlwall4.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_rlight_0000.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_rlightb.png":["TWL-MapPack.vl2"],"textures/Evil8/e8_rlightb_0000.png":["TWL-MapPack.vl2"],"textures/Evil8/e8basictrim2_bl.png":["TWL-MapPack.vl2"],"textures/Evil8/e8beam01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8beam01b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8beam02.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8bgrate01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8bolttrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8bolttrimb.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8clangfloor.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangfloor01.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangfloor03.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangfloor05c.png":["TWL-MapPack.vl2"],"textures/Evil8/e8clangwarnmix_.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete01.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete01stair1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03b.png":["TWL-MapPack.vl2"],"textures/Evil8/e8crete03c.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03cc.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8crete03d.png":["TWL-MapPack.vl2"],"textures/Evil8/e8crete03fadedw.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8cretefloor02.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8cretefloor_ti.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8cretesmlltrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8lighttrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8lighttrim_b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8metal03c_blue.png":["TWL-MapPack.vl2"],"textures/Evil8/e8mtltrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8mtltrim1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8mtltrim1b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8mtltrim2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8smlltrim1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8spawn01b.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support02.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support02c.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support04b_bl.png":["TWL-MapPack.vl2"],"textures/Evil8/e8support05.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8tinylight_000.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8tmtllight2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8trimlight_000.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8warning2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8warning256.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8warning2step.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8wrntrim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/e8wrntrim2b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Evil8/null.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/Iris_sky.dml":["TWL-MapPack.vl2"],"textures/L4.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/LiquidTiles/industrial_oil.png":["TWL-MapPack.vl2"],"textures/LiquidTiles/tes_water2.bm8":["TWL-MapPack.vl2"],"textures/LiquidTiles/tes_water2.png":["TWL-MapPack.vl2"],"textures/Lush_l4.dml":["textures.vl2"],"textures/Magellan.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Malig_sky.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Nef5.dml":["TR2final105-client.vl2"],"textures/Nef5/Nef5_BK.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_DN.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_FR.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_LF.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_RT.png":["TR2final105-client.vl2"],"textures/Nef5/Nef5_UP.png":["TR2final105-client.vl2"],"textures/NefRed1.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Nef_Sset2.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Nef_TR2_Red.dml":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_1.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_2.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_3.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_4.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_5.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_7.png":["TR2final105-client.vl2"],"textures/Nef_TR2_Red_Cloud1.png":["TR2final105-client.vl2"],"textures/Nycto-sm.dml":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_BK.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_DN.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_ENV.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_FR.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_LF.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_RT.png":["TWL-MapPack.vl2"],"textures/Nycto/stormmtn_UP.png":["TWL-MapPack.vl2"],"textures/PacificSky.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/PlanetX.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/RedPlanet.dml":["TR2final105-client.vl2"],"textures/RedPlanet_1.png":["TR2final105-client.vl2"],"textures/RedPlanet_2.png":["TR2final105-client.vl2"],"textures/RedPlanet_3.png":["TR2final105-client.vl2"],"textures/RedPlanet_4.png":["TR2final105-client.vl2"],"textures/RedPlanet_5.png":["TR2final105-client.vl2"],"textures/RedPlanet_Cloud1.png":["TR2final105-client.vl2"],"textures/SOM_TR2_Armageddon.dml":["TR2final105-client.vl2"],"textures/SOM_TR2_StonedBlue.dml":["TR2final105-client.vl2"],"textures/SOM_TR2_WinterBlue.dml":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_BK.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_FR.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_LF.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_RT.bmp":["TR2final105-client.vl2"],"textures/SOM_WinterBlue/WinterBlue_v5_UP.bmp":["TR2final105-client.vl2"],"textures/Sami_D.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/SantaHat_D.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Saturn.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Starfallen.dml":["Classic_maps_v1.vl2"],"textures/StonedBlue/StonedBlue_v5_BK.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_FR.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_LF.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_RT.bmp":["TR2final105-client.vl2"],"textures/StonedBlue/StonedBlue_v5_UP.bmp":["TR2final105-client.vl2"],"textures/SunSet12.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/Sundown25.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/T2IntroC15.avi":["textures.vl2"],"textures/TL_Magnum.dml":["TWL2-MapPack.vl2"],"textures/TN_entropy.bm8":["T2csri.vl2"],"textures/TN_entropy.png":["T2csri.vl2"],"textures/TN_logo.bm8":["T2csri.vl2"],"textures/TR1_1.png":["TR2final105-client.vl2"],"textures/TR1_2.png":["TR2final105-client.vl2"],"textures/TR1_3.png":["TR2final105-client.vl2"],"textures/TR1_4.png":["TR2final105-client.vl2"],"textures/TR1_5.png":["TR2final105-client.vl2"],"textures/TR1_7.png":["TR2final105-client.vl2"],"textures/TR1_Cloud1.png":["TR2final105-client.vl2"],"textures/TR1_Cloud2.png":["TR2final105-client.vl2"],"textures/TR1_Nef.dml":["TR2final105-client.vl2"],"textures/TR2-1.lmale.png":["TR2final105-client.vl2"],"textures/TR2-2.lmale.png":["TR2final105-client.vl2"],"textures/Taco_D.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/armageddon/Armageddon_v5_BK.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_FR.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_LF.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_RT.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_RTR.bmp":["TR2final105-client.vl2"],"textures/armageddon/Armageddon_v5_UP.bmp":["TR2final105-client.vl2"],"textures/aurawisp.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlandday.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/bd_1wal03c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eCol01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eCol01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eCol02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ebor05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo1a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo1b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo2a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo2b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo3a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo3b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo3d.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo4a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ecombo4b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_edoo01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_edoo02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eflo01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_elig03a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_espe01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_espe02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_espe03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain1a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain2a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain3a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain3b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain4a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_eterrain5a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal03c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal06a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal07.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal08.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal09.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal10.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal11.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal13.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal13A.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal14.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal15.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ewal16.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iCol01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iCol02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor10.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor6.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor7.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor8.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ibor9.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icei03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iceilig01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iceilig02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iceilig03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ichute01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ichute02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icoligolA.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_icomp01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_idoo03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iflo01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iflo02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iflo03b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ifunctec01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ifunctec02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ilig01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ilig01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_inf_ichute03.png":["Classic_maps_v1.vl2"],"textures/badlands/bd_ispe01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe04.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe06.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe07.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_ispe07a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itebor01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec05.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itec06a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_itewal01e.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal01b.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal01e.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal03.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal03c.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_iwal16.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_screen.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_thresh01a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_thresh02.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/bd_thresh02a.png":["badlands.vl2","yHDTextures2.0.vl2"],"textures/badlands/be_ebor03.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_eflo02.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_elig03.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_ewal06.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_ewal07.PNG":["Classic_maps_v1.vl2"],"textures/badlands/be_icei01a.png":["Classic_maps_v1.vl2"],"textures/badlands/cp_ibor03.png":["Classic_maps_v1.vl2"],"textures/badlands/ds_efloor1.png":["Classic_maps_v1.vl2"],"textures/badlands/ds_ilig03.png":["Classic_maps_v1.vl2"],"textures/badlands/inf_butch_grey1.png":["Classic_maps_v1.vl2"],"textures/badlands/inf_butch_grey5.png":["Classic_maps_v1.vl2"],"textures/badlands/iwal20.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/iwal21.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/iwal22.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/badlands/skies/badlandday_BK.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_BK.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_DN.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_DN.png":["badlands.vl2"],"textures/badlands/skies/badlandday_FR.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_FR.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_LF.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_LF.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_RT.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_RT.png":["","badlands.vl2"],"textures/badlands/skies/badlandday_UP.bm8":["badlands.vl2"],"textures/badlands/skies/badlandday_UP.png":["","badlands.vl2"],"textures/badlands/skies/bd_day_cloud1.bm8":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud1.png":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud2.bm8":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud2.png":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud_emap.bm8":["badlands.vl2"],"textures/badlands/skies/bd_day_cloud_emap.png":["badlands.vl2"],"textures/badlands/skies/bd_nite_starry_emap.bm8":["badlands.vl2"],"textures/badlands/skies/bd_nite_starry_emap.png":["badlands.vl2"],"textures/badlands/skies/skyrender_sky-credit.txt":[""],"textures/badlands/skies/starrynite_v2_BK.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_BK.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_DN.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_DN.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_FR.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_FR.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_LF.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_LF.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_RT.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_RT.png":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_UP.bm8":["badlands.vl2"],"textures/badlands/skies/starrynite_v2_UP.png":["badlands.vl2"],"textures/base.lmale.png":["TR2final105-client.vl2"],"textures/blackdust.dml":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_DN.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_bk.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_cloud1.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_cloud2.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_fr.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_lf.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_rt.png":["TWL2-MapPack.vl2"],"textures/blackdust/blackdust_up.png":["TWL2-MapPack.vl2"],"textures/borealis.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/canyon_crusade.dml":["TWL2-MapPack.vl2"],"textures/ccbsky2.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/clouds.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/commander/Cursors/com_cursor_arrow_icon.png":["textures.vl2"],"textures/commander/Cursors/com_handclose_icon.png":["textures.vl2"],"textures/commander/Cursors/com_handopen_icon.png":["textures.vl2"],"textures/commander/Cursors/com_maglass_icon.png":["textures.vl2"],"textures/commander/Cursors/com_pointer_icon.png":["textures.vl2"],"textures/commander/Cursors/com_pointer_pos_icon.png":["textures.vl2"],"textures/commander/Gui/cmd_columnheadbar.png":["textures.vl2"],"textures/commander/Gui/cmd_control_checkbox.png":["textures.vl2"],"textures/commander/Gui/cmd_gradient.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_camera.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_center.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_misc.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_misc_D.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_moveselect.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_objectives.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_players.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_sensor.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_tactical.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_tactical_D.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_text.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_waypoints.png":["textures.vl2"],"textures/commander/Gui/cmd_icon_zoom.png":["textures.vl2"],"textures/commander/Gui/cmd_offscreen_arrow.png":["textures.vl2"],"textures/commander/Gui/cmd_tv_frame.png":["textures.vl2"],"textures/commander/Gui/cmd_tv_static.png":["textures.vl2"],"textures/commander/Icons/assigned_task_anim.dml":["textures.vl2"],"textures/commander/Icons/base_select.dml":["textures.vl2"],"textures/commander/Icons/com_icon_bioderm.png":["textures.vl2"],"textures/commander/Icons/com_icon_bioderm_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_bloodeagle.png":["textures.vl2"],"textures/commander/Icons/com_icon_bloodeagle_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_bomber.png":["textures.vl2"],"textures/commander/Icons/com_icon_bomber_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_camera.png":["textures.vl2"],"textures/commander/Icons/com_icon_camera_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_diamsword.png":["textures.vl2"],"textures/commander/Icons/com_icon_diamsword_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_flag_outside.png":["textures.vl2"],"textures/commander/Icons/com_icon_flag_outside_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_generator.png":["textures.vl2"],"textures/commander/Icons/com_icon_generator_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_genericswitch.png":["textures.vl2"],"textures/commander/Icons/com_icon_genericswitch_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_hapc.png":["textures.vl2"],"textures/commander/Icons/com_icon_hapc_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_harbinger.png":["textures.vl2"],"textures/commander/Icons/com_icon_harbinger_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_inferno.png":["textures.vl2"],"textures/commander/Icons/com_icon_inferno_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_inventory.png":["textures.vl2"],"textures/commander/Icons/com_icon_inventory_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_landscout.png":["textures.vl2"],"textures/commander/Icons/com_icon_landscout_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_mpb.png":["textures.vl2"],"textures/commander/Icons/com_icon_mpb_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_nexus.png":["textures.vl2"],"textures/commander/Icons/com_icon_nexus_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_scout.png":["textures.vl2"],"textures/commander/Icons/com_icon_scout_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_sensor.png":["textures.vl2"],"textures/commander/Icons/com_icon_sensor_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_solar_gen.png":["textures.vl2"],"textures/commander/Icons/com_icon_solar_gen_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_starwolf.png":["textures.vl2"],"textures/commander/Icons/com_icon_starwolf_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_storm.png":["textures.vl2"],"textures/commander/Icons/com_icon_storm_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_tank.png":["textures.vl2"],"textures/commander/Icons/com_icon_tank_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_turret.png":["textures.vl2"],"textures/commander/Icons/com_icon_turret_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_turretbase.png":["textures.vl2"],"textures/commander/Icons/com_icon_turretbase_glow.png":["textures.vl2"],"textures/commander/Icons/com_icon_vehicle_inventory.png":["textures.vl2"],"textures/commander/Icons/com_icon_vehicle_inventory_glow.png":["textures.vl2"],"textures/commander/Icons/com_player_grey_24x.png":["textures.vl2"],"textures/commander/Icons/com_player_grey_24x_glow.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_1.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_2.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_3.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_4.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_5.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_6.png":["textures.vl2"],"textures/commander/Icons/com_waypoint_7.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_1.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_2.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_3.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_4.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_5.png":["textures.vl2"],"textures/commander/Icons/diamond_frame_6.png":["textures.vl2"],"textures/commander/Icons/diamond_not_selected.png":["textures.vl2"],"textures/commander/Icons/player_glow.dml":["textures.vl2"],"textures/commander/Icons/selectobject_1.png":["textures.vl2"],"textures/commander/Icons/selectobject_2.png":["textures.vl2"],"textures/commander/Icons/selectobject_3.png":["textures.vl2"],"textures/commander/Icons/selectobject_4.png":["textures.vl2"],"textures/commander/Icons/selectobject_5.png":["textures.vl2"],"textures/commander/Icons/selectobject_6.png":["textures.vl2"],"textures/commander/Icons/selectobject_7.png":["textures.vl2"],"textures/commander/Icons/waypoint_anim.dml":["textures.vl2"],"textures/commander/MiniIcons/TR2com_flag_grey.png":["TR2final105-client.vl2"],"textures/commander/MiniIcons/com_bomber_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_camera_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_deploymotionsensor.png":["textures.vl2"],"textures/commander/MiniIcons/com_deploypulsesensor.png":["textures.vl2"],"textures/commander/MiniIcons/com_flag_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_generator.png":["textures.vl2"],"textures/commander/MiniIcons/com_hapc_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_inventory_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_landscout_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_mpb_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_player_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_scout_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_sensor_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_solargen_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_switch_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_tank_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_turret_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_turretbase_grey.png":["textures.vl2"],"textures/commander/MiniIcons/com_vehicle_pad_inventory.png":["textures.vl2"],"textures/commander/MiniIcons/com_waypoint_grey.png":["textures.vl2"],"textures/cubemap.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dark_green.dml":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_BK.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_DN.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_FR.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_LF.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_RT.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_UP.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_cloud1.png":["TWL2-MapPack.vl2"],"textures/dark_green/dark_green_cloud2.png":["TWL2-MapPack.vl2"],"textures/desert/cp_ecombo1a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ecombo1b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_eport01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_eport01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec02BASE.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec02CAP.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_espec03.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_etec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_etec02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01e.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ewal01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ibor03.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ichute01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ichute02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icoldeco01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icoldeco01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icoligolA.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01e.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_icomp01g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_idoo01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iflo02c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig02c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig05a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ilig05b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec01CAP.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec02CAP.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispec02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_ispecbase01g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istair01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01e.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_istrface01h.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec03a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itec03b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itecwal01.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itecwal01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_itecwal01b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02b.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02d.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02f.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwal02g.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwalbase02.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_iwalbase02a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_sand.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_screen.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_scrnbrdr01a.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_scrnbrdr01c.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_thresh01OFF.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/cp_thresh01ON.png":["desert.vl2","yHDTextures2.0.vl2"],"textures/desert/iwal2020.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/desert/iwal2021.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/desert/iwal2022.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/desert/skies/d_N_b.bm8":["desert.vl2"],"textures/desert/skies/d_N_b.png":["desert.vl2"],"textures/desert/skies/d_N_d.bm8":["desert.vl2"],"textures/desert/skies/d_N_d.png":["desert.vl2"],"textures/desert/skies/d_N_f.bm8":["desert.vl2"],"textures/desert/skies/d_N_f.png":["desert.vl2"],"textures/desert/skies/d_N_l.bm8":["desert.vl2"],"textures/desert/skies/d_N_l.png":["desert.vl2"],"textures/desert/skies/d_N_r.bm8":["desert.vl2"],"textures/desert/skies/d_N_r.png":["desert.vl2"],"textures/desert/skies/d_N_t.bm8":["desert.vl2"],"textures/desert/skies/d_N_t.png":["desert.vl2"],"textures/desert/skies/d_n_move1.bm8":["desert.vl2"],"textures/desert/skies/d_n_move1.png":["desert.vl2"],"textures/desert/skies/d_n_move2.bm8":["desert.vl2"],"textures/desert/skies/d_n_move2.png":["desert.vl2"],"textures/desert/skies/d_n_move3.bm8":["desert.vl2"],"textures/desert/skies/d_n_move3.png":["desert.vl2"],"textures/desert/skies/db2.bm8":["desert.vl2"],"textures/desert/skies/db2.png":["desert.vl2"],"textures/desert/skies/dd2.bm8":["desert.vl2"],"textures/desert/skies/dd2.png":["desert.vl2"],"textures/desert/skies/desert_blue_emap.bm8":["desert.vl2"],"textures/desert/skies/desert_blue_emap.png":["desert.vl2"],"textures/desert/skies/desert_brown_emap.bm8":["desert.vl2"],"textures/desert/skies/desert_brown_emap.png":["desert.vl2"],"textures/desert/skies/desert_starrynite_emap.bm8":["desert.vl2"],"textures/desert/skies/desert_starrynite_emap.png":["desert.vl2"],"textures/desert/skies/desertmove1.bm8":["desert.vl2"],"textures/desert/skies/desertmove1.png":["desert.vl2"],"textures/desert/skies/desertmove2.bm8":["desert.vl2"],"textures/desert/skies/desertmove2.png":["desert.vl2"],"textures/desert/skies/desertmove3.bm8":["desert.vl2"],"textures/desert/skies/desertmove3.png":["desert.vl2"],"textures/desert/skies/desertmove4.bm8":["desert.vl2"],"textures/desert/skies/desertmove4.png":["desert.vl2"],"textures/desert/skies/df2.bm8":["desert.vl2"],"textures/desert/skies/df2.png":["desert.vl2"],"textures/desert/skies/dl2.bm8":["desert.vl2"],"textures/desert/skies/dl2.png":["desert.vl2"],"textures/desert/skies/dr2.bm8":["desert.vl2"],"textures/desert/skies/dr2.png":["desert.vl2"],"textures/desert/skies/dt2.bm8":["desert.vl2"],"textures/desert/skies/dt2.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_BK.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_BK.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_DN.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_DN.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_FR.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_FR.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_LF.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_LF.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_RT.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_RT.png":["desert.vl2"],"textures/desert/skies/starrynite_v3_UP.bm8":["desert.vl2"],"textures/desert/skies/starrynite_v3_UP.png":["desert.vl2"],"textures/details/BadDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/BadDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/DesertDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/DesertDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LavaDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LavaDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LushDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/LushDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/PlanetX_CB1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/details/SnowDet1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/details/SnowDet2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dox_textures/4circle_lite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/antigrav.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/bluetrim1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/bluetrim2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/bluetrim3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/carinternalwall.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/carrierwall4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/doorlogo2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_etechbor01.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_etechbrdr2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_ewall06.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_ewall07.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_genfloor.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_genwall.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_ilig04.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/ds_iwal01.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/grate1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/grate2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/hangar_indoor1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/hangar_indoor3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/light_cold3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/light_small2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/redstripe2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_smalllite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rock_wall_lite5.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/roofbeam.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/rway_middle.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/sboxlogotop.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/slabgrill.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/stripe2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/striplite2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/striplite3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/wall_2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/wall_3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dox_textures/white_striplite.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/dust00.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust05.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust06.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust07.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust08.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust09.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/dust10.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/eedessert.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/emap.bmp":["textures.vl2"],"textures/emap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/eve1.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve2.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve3.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve4.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve5.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve6.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve7.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/eve8.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/evil/ancient3.png":["TWL2-MapPack.vl2"],"textures/evil/base1c.png":["TWL2-MapPack.vl2"],"textures/evil/beam01.png":["TWL2-MapPack.vl2"],"textures/evil/bolttrim.png":["TWL2-MapPack.vl2"],"textures/evil/cementwall6.png":["TWL2-MapPack.vl2"],"textures/evil/cementwall8.png":["TWL2-MapPack.vl2"],"textures/evil/cretepillarc.png":["TWL2-MapPack.vl2"],"textures/evil/crudewarn.png":["TWL2-MapPack.vl2"],"textures/evil/drkmtldpanelc.png":["TWL2-MapPack.vl2"],"textures/evil/e6cfloordented.png":["TWL2-MapPack.vl2"],"textures/evil/e6girdergrate.png":["TWL2-MapPack.vl2"],"textures/evil/e6grate2flr.png":["TWL2-MapPack.vl2"],"textures/evil/e6horzlight.png":["TWL2-MapPack.vl2"],"textures/evil/e6smlgrtflr2bl.png":["TWL2-MapPack.vl2"],"textures/evil/e6strimlight.png":["TWL2-MapPack.vl2"],"textures/evil/housewall.png":["TWL2-MapPack.vl2"],"textures/evil/mtlsupgrt2light.png":["TWL2-MapPack.vl2"],"textures/evil/tfloor.png":["TWL2-MapPack.vl2"],"textures/evil/tlroddtilecln.png":["TWL2-MapPack.vl2"],"textures/evil/tmtllight.png":["TWL2-MapPack.vl2"],"textures/evil/trimodd.png":["TWL2-MapPack.vl2"],"textures/evil/warning2.png":["TWL2-MapPack.vl2"],"textures/flag_skinmap.png":["TR2final105-client.vl2"],"textures/flarebase.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/flaremod.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/fling1/Nycto-comp3.png":["S8maps.vl2"],"textures/fling1/Nycto-computer.png":["S8maps.vl2"],"textures/fling1/bd_ispe07.PNG":["S8maps.vl2"],"textures/fling1/be_edoo02.PNG":["S8maps.vl2"],"textures/fling1/be_icei01a.png":["S8maps.vl2"],"textures/fling1/crudewarn.png":["S8maps.vl2"],"textures/fling1/dox_bluelite1.png":["S8maps.vl2"],"textures/fling1/ds_NefBlue.png":["S8maps.vl2"],"textures/fling1/ds_NefBlue1.png":["S8maps.vl2"],"textures/fling1/ds_Neffloor1.png":["S8maps.vl2"],"textures/fling1/ds_ilig02.png":["S8maps.vl2"],"textures/fling1/ds_ilig04.png":["S8maps.vl2"],"textures/fling1/ds_jet03.png":["S8maps.vl2"],"textures/fling1/e6strimlight.png":["S8maps.vl2"],"textures/fling1/e8clangfloor.png":["S8maps.vl2"],"textures/fling1/e8tinylight_000.png":["S8maps.vl2"],"textures/fling1/null.png":["S8maps.vl2"],"textures/flingsky/emap_muddy.png":["S8maps.vl2"],"textures/flingsky/flingsky03_BK.png":["S8maps.vl2"],"textures/flingsky/flingsky03_DN.png":["S8maps.vl2"],"textures/flingsky/flingsky03_FR.png":["S8maps.vl2"],"textures/flingsky/flingsky03_LF.png":["S8maps.vl2"],"textures/flingsky/flingsky03_RT.png":["S8maps.vl2"],"textures/flingsky/flingsky03_UP.png":["S8maps.vl2"],"textures/flingsky03.dml":["S8maps.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/fluid_lava.dml":["textures.vl2"],"textures/fluid_water.dml":["textures.vl2"],"textures/gui/BloodEagle.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/CRED_1.png":["textures.vl2"],"textures/gui/CRED_10.png":["textures.vl2"],"textures/gui/CRED_11.png":["textures.vl2"],"textures/gui/CRED_12.png":["textures.vl2"],"textures/gui/CRED_13.png":["textures.vl2"],"textures/gui/CRED_14.png":["textures.vl2"],"textures/gui/CRED_15.png":["textures.vl2"],"textures/gui/CRED_16.png":["textures.vl2"],"textures/gui/CRED_17.png":["textures.vl2"],"textures/gui/CRED_18.png":["textures.vl2"],"textures/gui/CRED_19.png":["textures.vl2"],"textures/gui/CRED_2.png":["textures.vl2"],"textures/gui/CRED_20.png":["textures.vl2"],"textures/gui/CRED_21.png":["textures.vl2"],"textures/gui/CRED_22.png":["textures.vl2"],"textures/gui/CRED_23.png":["textures.vl2"],"textures/gui/CRED_24.png":["textures.vl2"],"textures/gui/CRED_25.png":["textures.vl2"],"textures/gui/CRED_26.png":["textures.vl2"],"textures/gui/CRED_27.png":["textures.vl2"],"textures/gui/CRED_28.png":["textures.vl2"],"textures/gui/CRED_29.png":["textures.vl2"],"textures/gui/CRED_3.png":["textures.vl2"],"textures/gui/CRED_30.png":["textures.vl2"],"textures/gui/CRED_31.png":["textures.vl2"],"textures/gui/CRED_32.png":["textures.vl2"],"textures/gui/CRED_33.png":["textures.vl2"],"textures/gui/CRED_34.png":["textures.vl2"],"textures/gui/CRED_35.png":["textures.vl2"],"textures/gui/CRED_36.png":["textures.vl2"],"textures/gui/CRED_37.png":["textures.vl2"],"textures/gui/CRED_38.png":["textures.vl2"],"textures/gui/CRED_39.png":["textures.vl2"],"textures/gui/CRED_4.png":["textures.vl2"],"textures/gui/CRED_40.png":["textures.vl2"],"textures/gui/CRED_41.png":["textures.vl2"],"textures/gui/CRED_42.png":["textures.vl2"],"textures/gui/CRED_43.png":["textures.vl2"],"textures/gui/CRED_44.png":["textures.vl2"],"textures/gui/CRED_45.png":["textures.vl2"],"textures/gui/CRED_46.png":["textures.vl2"],"textures/gui/CRED_5.png":["textures.vl2"],"textures/gui/CRED_6.png":["textures.vl2"],"textures/gui/CRED_7.png":["textures.vl2"],"textures/gui/CRED_8.png":["textures.vl2"],"textures/gui/CRED_9.png":["textures.vl2"],"textures/gui/CUR_3darrow.png":["textures.vl2"],"textures/gui/CUR_3darrowhelp.png":["textures.vl2"],"textures/gui/CUR_3darrowno.PNG":["textures.vl2"],"textures/gui/CUR_3darrowwait.png":["textures.vl2"],"textures/gui/CUR_3ddiagleft.png":["textures.vl2"],"textures/gui/CUR_3ddiagright.png":["textures.vl2"],"textures/gui/CUR_3dleftright.png":["textures.vl2"],"textures/gui/CUR_3dmove.png":["textures.vl2"],"textures/gui/CUR_3dresizeright.png":["textures.vl2"],"textures/gui/CUR_3dupdown.PNG":["textures.vl2"],"textures/gui/CUR_Grab.png":["textures.vl2"],"textures/gui/CUR_Hand.png":["textures.vl2"],"textures/gui/CUR_Rotate.png":["textures.vl2"],"textures/gui/Editor_DefaultHandle.png":["textures.vl2"],"textures/gui/Editor_LockedHandle.png":["textures.vl2"],"textures/gui/Editor_SelectHandle.png":["textures.vl2"],"textures/gui/GGSplash.jpg":["textures.vl2"],"textures/gui/HUD_watermark1.png":["textures.vl2"],"textures/gui/HUD_watermark2.png":["textures.vl2"],"textures/gui/Hud_chat_button_off.png":["textures.vl2"],"textures/gui/Hud_chat_button_on.png":["textures.vl2"],"textures/gui/InfoBar.png":["textures.vl2"],"textures/gui/KILLME.PNG":["textures.vl2"],"textures/gui/LOAD_Atropos2.png":["atroposthereturn.vl2"],"textures/gui/LOAD_Centaur.png":["centaur.vl2"],"textures/gui/LOAD_ColdFusion.png":["ColdFusion.vl2"],"textures/gui/LOAD_DeathRow.png":["DeathRow.vl2"],"textures/gui/LOAD_Exposure.png":["Exposure-v1.1.vl2"],"textures/gui/LOAD_Prismatic.png":["Prismatic.vl2"],"textures/gui/Load_2ArenaDome.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2ArenaValley.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2DustBowl.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2Flyersarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2IceDome.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_2IndoorIntensity.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Abominable.png":["textures.vl2"],"textures/gui/Load_AcidRain.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Aeroena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_AgentsOfFortune.png":["textures.vl2"],"textures/gui/Load_Alcatraz.png":["textures.vl2"],"textures/gui/Load_Archipelago.png":["textures.vl2"],"textures/gui/Load_ArenaHeaven.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaHell.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaHell2.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaInTheHill.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ArenaUnderTheHill.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_AryoArena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_AshesToAshes.png":["textures.vl2"],"textures/gui/Load_BeggarsRun.png":["textures.vl2"],"textures/gui/Load_Blastside_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_BridgeTooFar.png":["DynamixFinalPack.vl2"],"textures/gui/Load_Broadside_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Caldera.png":["textures.vl2"],"textures/gui/Load_Casern_Cavite.png":["textures.vl2"],"textures/gui/Load_ColdWar.png":["ColdWar.vl2"],"textures/gui/Load_CompUSA-Melee.png":["textures.vl2"],"textures/gui/Load_CompUSA_Melee.png":["textures.vl2"],"textures/gui/Load_Confusco.png":["Classic_maps_v1.vl2"],"textures/gui/Load_ContainmentLarge.png":["ContainmentLarge.vl2"],"textures/gui/Load_CrashClash.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_DMP_Agroleon.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Astro.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_BastardForge.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_BitterGorge.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Bunkered.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Cinerarium.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_DermCity.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Embers.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_EmeraldSpit.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_FaceCrossing.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Hoth.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_IceGiant.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_IsleDeBatalla.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_LavaGods.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Magellan.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_MoonDance.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Pantheon.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Paranoia.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Pariah.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_PipeDream.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_RavineV.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_ScorchedEarth.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_SimpleFlagArena.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_SpinCycle.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_StarFall.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Tyre.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_DMP_Wasteland.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/gui/Load_Damnation.png":["textures.vl2"],"textures/gui/Load_DangerousCrossingArena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_DangerousCrossing_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_DeathBirdsFly.png":["textures.vl2"],"textures/gui/Load_DeathFromBelow.png":["DeathFromBelow.vl2"],"textures/gui/Load_DesertOfDeath_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Desiccator.png":["textures.vl2"],"textures/gui/Load_DevilsElbow.png":["DynamixFinalPack.vl2"],"textures/gui/Load_DustToDust.png":["textures.vl2"],"textures/gui/Load_EB-Hades.png":["textures.vl2"],"textures/gui/Load_EB_Hades.png":["textures.vl2"],"textures/gui/Load_Envyrena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_EnyLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Equinox.png":["textures.vl2"],"textures/gui/Load_Escalade.png":["textures.vl2"],"textures/gui/Load_EveningLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Fall_To_Glory.png":["textures.vl2"],"textures/gui/Load_FinalRevenge.png":["FinalRevenge.vl2"],"textures/gui/Load_Flashpoint.png":["textures.vl2"],"textures/gui/Load_Gauntlet.png":["textures.vl2"],"textures/gui/Load_Gehenna.png":["textures.vl2"],"textures/gui/Load_Gorgon.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Helioarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Hillside.png":["Classic_maps_v1.vl2"],"textures/gui/Load_IceRidge_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Icebound.png":["textures.vl2"],"textures/gui/Load_InnerSanctum.png":["DynamixFinalPack.vl2"],"textures/gui/Load_Insalubria.png":["textures.vl2"],"textures/gui/Load_Invictus.png":["textures.vl2"],"textures/gui/Load_IsleOfMan.png":["DynamixFinalPack.vl2"],"textures/gui/Load_IveHadWorse.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_JacobsLadder.png":["textures.vl2"],"textures/gui/Load_Khalarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Lakefront.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Magmatic.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Masada.png":["textures.vl2"],"textures/gui/Load_Minotaur.png":["textures.vl2"],"textures/gui/Load_Morena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Mudside.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Mutiny.png":["Mutiny.vl2"],"textures/gui/Load_MyrkWood.png":["textures.vl2"],"textures/gui/Load_Oasis.png":["textures.vl2"],"textures/gui/Load_Overreach.png":["textures.vl2"],"textures/gui/Load_Pantheon.png":["DynamixFinalPack.vl2"],"textures/gui/Load_Planetside.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Pyroclasm.png":["textures.vl2"],"textures/gui/Load_Quagmire.png":["textures.vl2"],"textures/gui/Load_Raindance_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Ramparts.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Rasp.png":["textures.vl2"],"textures/gui/Load_Recalescence.png":["textures.vl2"],"textures/gui/Load_Respite.png":["textures.vl2"],"textures/gui/Load_Reversion.png":["textures.vl2"],"textures/gui/Load_Ridgerena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Rimehold.png":["textures.vl2"],"textures/gui/Load_Rollercoaster_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_S5_Centaur.png":["S5maps.vl2"],"textures/gui/Load_S5_Damnation.png":["S5maps.vl2"],"textures/gui/Load_S5_Drache.png":["S5maps.vl2"],"textures/gui/Load_S5_HawkingHeat.png":["S5maps.vl2"],"textures/gui/Load_S5_Icedance.png":["S5maps.vl2"],"textures/gui/Load_S5_Massive.png":["S5maps.vl2"],"textures/gui/Load_S5_Mimicry.png":["S5maps.vl2"],"textures/gui/Load_S5_Misadventure.png":["S5maps.vl2"],"textures/gui/Load_S5_Mordacity.png":["S5maps.vl2"],"textures/gui/Load_S5_Reynard.png":["S5maps.vl2"],"textures/gui/Load_S5_Sherman.png":["S5maps.vl2"],"textures/gui/Load_S5_Silenus.png":["S5maps.vl2"],"textures/gui/Load_S5_Woodymyrk.png":["S5maps.vl2"],"textures/gui/Load_Sanctuary.png":["textures.vl2"],"textures/gui/Load_Sandstorm.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Scarabrae_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_ShockRidge.png":["Classic_maps_v1.vl2"],"textures/gui/Load_ShrineArena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ShrineArenaII.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_SilentStorm.png":["SilentStorm.vl2"],"textures/gui/Load_Sirocco.png":["textures.vl2"],"textures/gui/Load_Slapdash.png":["textures.vl2"],"textures/gui/Load_Snowblind_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_SoccerLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_SpyLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Starfallen.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Stonehenge_nef.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Subzero.png":["Classic_maps_v1.vl2"],"textures/gui/Load_SunDried.png":["textures.vl2"],"textures/gui/Load_Surreal.png":["Classic_maps_v1.vl2"],"textures/gui/Load_TWL2_Bleed.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_BlueMoon.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_CanyonCrusadeDeluxe.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Celerity.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_CloakOfNight.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Crevice.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Dissention.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Drifts.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Drorck.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_FrozenGlory.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_FrozenHope.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Hildebrand.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_IceDagger.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_JaggedClaw.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Magnum.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_MidnightMayhemDeluxe.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_MuddySwamp.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Norty.PNG":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Ocular.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_RoughLand.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Ruined.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_Skylight.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL2_WoodyMyrk.png":["TWL2-MapPack.vl2"],"textures/gui/Load_TWL_Abaddon.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BaNsHee.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BeachBlitz.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BeggarsRun.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_BlueMoon.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Boss.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Celerity.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Chokepoint.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Cinereous.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Clusterfuct.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Crossfire.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Curtilage.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Damnation.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_DangerousCrossing.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_DeadlyBirdsSong.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Deserted.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Desiccator.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Drifts.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Feign.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Frostclaw.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Frozen.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Harvester.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Horde.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Katabatic.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Magmatic.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Minotaur.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Neve.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_NoShelter.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_OsIris.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Pandemonium.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Quagmire.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Raindance.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Ramparts.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Reversion.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Rollercoaster.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Runenmacht.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Sandstorm.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Slapdash.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Snowblind.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Starfallen.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Stonehenge.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_SubZero.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Surreal.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_Titan.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_WhiteDwarf.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_WilderZone.png":["TWL-MapPack.vl2"],"textures/gui/Load_TWL_WoodyMyrk.png":["TWL-MapPack.vl2"],"textures/gui/Load_Talus.png":["textures.vl2"],"textures/gui/Load_TempleTussleVersion2.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_ThinIce.png":["textures.vl2"],"textures/gui/Load_Titan.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Tombstone.png":["textures.vl2"],"textures/gui/Load_Training1.png":["textures.vl2"],"textures/gui/Load_Training2.png":["textures.vl2"],"textures/gui/Load_Training3.png":["textures.vl2"],"textures/gui/Load_Training4.png":["textures.vl2"],"textures/gui/Load_Training5.png":["textures.vl2"],"textures/gui/Load_Trident.png":["DynamixFinalPack.vl2"],"textures/gui/Load_TridentLE.png":["TridentLE.vl2"],"textures/gui/Load_TrueGrit.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_UltimaThule.png":["textures.vl2"],"textures/gui/Load_Underhill.png":["textures.vl2"],"textures/gui/Load_UphillBattle.png":["UphillBattle.vl2"],"textures/gui/Load_UporDown.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WalledIn.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WalledInII.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WhiteDwarf.png":["Classic_maps_v1.vl2"],"textures/gui/Load_Whiteout.png":["textures.vl2"],"textures/gui/Load_WonderLand.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_WoodyMyrk.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Load_Yubarena.png":["zAddOnsVL2s/TWL_T2arenaOfficialMaps.vl2"],"textures/gui/Loading.png":["textures.vl2"],"textures/gui/RET_blaster.png":["textures.vl2"],"textures/gui/RET_chaingun.png":["textures.vl2"],"textures/gui/RET_disc.png":["textures.vl2"],"textures/gui/RET_elf.png":["textures.vl2"],"textures/gui/RET_grenade.png":["textures.vl2"],"textures/gui/RET_missile.png":["textures.vl2"],"textures/gui/RET_missile_horizflash_red.png":["textures.vl2"],"textures/gui/RET_missile_marker.png":["textures.vl2"],"textures/gui/RET_missile_marker_red.png":["textures.vl2"],"textures/gui/RET_missile_vertflash_red.png":["textures.vl2"],"textures/gui/RET_mortor.png":["textures.vl2"],"textures/gui/RET_plasma.png":["textures.vl2"],"textures/gui/ShellTBButtonHilight.png":["textures.vl2"],"textures/gui/ShellTBButtonNormal.png":["textures.vl2"],"textures/gui/ShellTBButtonPressed.png":["textures.vl2"],"textures/gui/TR2hud_playertriangle.png":["TR2final105-client.vl2"],"textures/gui/TR2hud_playertriangle_enemy.png":["TR2final105-client.vl2"],"textures/gui/beacon_base.png":["textures.vl2"],"textures/gui/bg_Bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Bloodeagle.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Diamondsword.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Hammers.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Harbingers.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/bg_Starwolf.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/gui/crosshairs.png":["textures.vl2"],"textures/gui/darkScroll.png":["textures.vl2"],"textures/gui/darkWindow.png":["textures.vl2"],"textures/gui/dlg_box.png":["textures.vl2"],"textures/gui/dlg_button.png":["textures.vl2"],"textures/gui/dlg_fieldfill.png":["textures.vl2"],"textures/gui/dlg_fieldgrade.png":["textures.vl2"],"textures/gui/dlg_frame_edge.png":["textures.vl2"],"textures/gui/dlg_frame_end.png":["textures.vl2"],"textures/gui/dlg_titletab.png":["textures.vl2"],"textures/gui/email_notread.png":["textures.vl2"],"textures/gui/email_read.png":["textures.vl2"],"textures/gui/hud_ChatPageDown.png":["textures.vl2"],"textures/gui/hud_alliedtriangle.png":["textures.vl2"],"textures/gui/hud_ammopack.png":["textures.vl2"],"textures/gui/hud_armbar.png":["textures.vl2"],"textures/gui/hud_armbaricon.png":["textures.vl2"],"textures/gui/hud_beacon.png":["textures.vl2"],"textures/gui/hud_blaster.png":["textures.vl2"],"textures/gui/hud_camera.png":["textures.vl2"],"textures/gui/hud_chaingun.png":["textures.vl2"],"textures/gui/hud_chat.png":["textures.vl2"],"textures/gui/hud_cloakpack.png":["textures.vl2"],"textures/gui/hud_cmmndfield.png":["textures.vl2"],"textures/gui/hud_deploypack.png":["textures.vl2"],"textures/gui/hud_disc.png":["textures.vl2"],"textures/gui/hud_disconnect.png":["textures.vl2"],"textures/gui/hud_dot.png":["textures.vl2"],"textures/gui/hud_east.png":["textures.vl2"],"textures/gui/hud_elfgun.png":["textures.vl2"],"textures/gui/hud_enemytriangle.png":["textures.vl2"],"textures/gui/hud_energypack.png":["textures.vl2"],"textures/gui/hud_ergbar.png":["textures.vl2"],"textures/gui/hud_ergbaricon.png":["textures.vl2"],"textures/gui/hud_grenlaunch.png":["textures.vl2"],"textures/gui/hud_handgren.png":["textures.vl2"],"textures/gui/hud_infinity.png":["textures.vl2"],"textures/gui/hud_jamm.png":["textures.vl2"],"textures/gui/hud_medpack.png":["textures.vl2"],"textures/gui/hud_mine.png":["textures.vl2"],"textures/gui/hud_missiles.png":["textures.vl2"],"textures/gui/hud_mistimer.png":["textures.vl2"],"textures/gui/hud_mortor.png":["textures.vl2"],"textures/gui/hud_navcirc.png":["textures.vl2"],"textures/gui/hud_new_NSEW.png":["textures.vl2"],"textures/gui/hud_new_beacon.png":["textures.vl2"],"textures/gui/hud_new_blaster.png":["textures.vl2"],"textures/gui/hud_new_chaingun.png":["textures.vl2"],"textures/gui/hud_new_cog.png":["textures.vl2"],"textures/gui/hud_new_compass.png":["textures.vl2"],"textures/gui/hud_new_disc.png":["textures.vl2"],"textures/gui/hud_new_elfgun.png":["textures.vl2"],"textures/gui/hud_new_grenlaunch.png":["textures.vl2"],"textures/gui/hud_new_handgren.png":["textures.vl2"],"textures/gui/hud_new_medpack.png":["textures.vl2"],"textures/gui/hud_new_mine.png":["textures.vl2"],"textures/gui/hud_new_missile.png":["textures.vl2"],"textures/gui/hud_new_mortar.png":["textures.vl2"],"textures/gui/hud_new_packammo.png":["textures.vl2"],"textures/gui/hud_new_packcloak.png":["textures.vl2"],"textures/gui/hud_new_packcloak_armed.png":["textures.vl2"],"textures/gui/hud_new_packenergy.png":["textures.vl2"],"textures/gui/hud_new_packinventory.png":["textures.vl2"],"textures/gui/hud_new_packmotionsens.png":["textures.vl2"],"textures/gui/hud_new_packradar.png":["textures.vl2"],"textures/gui/hud_new_packrepair.png":["textures.vl2"],"textures/gui/hud_new_packrepair_armed.png":["textures.vl2"],"textures/gui/hud_new_packsatchel.png":["textures.vl2"],"textures/gui/hud_new_packsensjam.png":["textures.vl2"],"textures/gui/hud_new_packsensjam_armed.png":["textures.vl2"],"textures/gui/hud_new_packshield.png":["textures.vl2"],"textures/gui/hud_new_packshield_armed.png":["textures.vl2"],"textures/gui/hud_new_packturret.png":["textures.vl2"],"textures/gui/hud_new_packturretin.png":["textures.vl2"],"textures/gui/hud_new_packturretout.png":["textures.vl2"],"textures/gui/hud_new_panel.png":["textures.vl2"],"textures/gui/hud_new_ping.png":["textures.vl2"],"textures/gui/hud_new_ping_green.png":["textures.vl2"],"textures/gui/hud_new_ping_red.png":["textures.vl2"],"textures/gui/hud_new_ping_yellow.png":["textures.vl2"],"textures/gui/hud_new_plasma.png":["textures.vl2"],"textures/gui/hud_new_scorewindow.png":["textures.vl2"],"textures/gui/hud_new_shocklance.png":["textures.vl2"],"textures/gui/hud_new_sniper.png":["textures.vl2"],"textures/gui/hud_new_targetlaser.png":["textures.vl2"],"textures/gui/hud_new_weaponselect.png":["textures.vl2"],"textures/gui/hud_new_window_BL.png":["textures.vl2"],"textures/gui/hud_new_window_BM.png":["textures.vl2"],"textures/gui/hud_new_window_BR.png":["textures.vl2"],"textures/gui/hud_new_window_ML.png":["textures.vl2"],"textures/gui/hud_new_window_MM.png":["textures.vl2"],"textures/gui/hud_new_window_MR.png":["textures.vl2"],"textures/gui/hud_new_window_TL.png":["textures.vl2"],"textures/gui/hud_new_window_TM.png":["textures.vl2"],"textures/gui/hud_new_window_TR.png":["textures.vl2"],"textures/gui/hud_nopack.png":["textures.vl2"],"textures/gui/hud_north.png":["textures.vl2"],"textures/gui/hud_objective.png":["textures.vl2"],"textures/gui/hud_objtimer.png":["textures.vl2"],"textures/gui/hud_packback.png":["textures.vl2"],"textures/gui/hud_packwin.png":["textures.vl2"],"textures/gui/hud_ping.png":["textures.vl2"],"textures/gui/hud_plasma.png":["textures.vl2"],"textures/gui/hud_playertriangle.png":["textures.vl2"],"textures/gui/hud_playertriangle_enemy.png":["textures.vl2"],"textures/gui/hud_repairpack.png":["textures.vl2"],"textures/gui/hud_ret_bomber.png":["textures.vl2"],"textures/gui/hud_ret_shocklance.png":["textures.vl2"],"textures/gui/hud_ret_shrike.png":["textures.vl2"],"textures/gui/hud_ret_sniper.png":["textures.vl2"],"textures/gui/hud_ret_tankchaingun.png":["textures.vl2"],"textures/gui/hud_ret_tankmortar.png":["textures.vl2"],"textures/gui/hud_ret_targlaser.png":["textures.vl2"],"textures/gui/hud_retrng.png":["textures.vl2"],"textures/gui/hud_satchel_armed.png":["textures.vl2"],"textures/gui/hud_satchel_unarmed.png":["textures.vl2"],"textures/gui/hud_sensorbar.png":["textures.vl2"],"textures/gui/hud_sensorbar_glow.png":["textures.vl2"],"textures/gui/hud_sensorbar_glow1.png":["textures.vl2"],"textures/gui/hud_sensorbar_glow2.png":["textures.vl2"],"textures/gui/hud_shieldpack.png":["textures.vl2"],"textures/gui/hud_shocklance.png":["textures.vl2"],"textures/gui/hud_sniper.png":["textures.vl2"],"textures/gui/hud_south.png":["textures.vl2"],"textures/gui/hud_targetlaser.png":["textures.vl2"],"textures/gui/hud_veh_bomb.png":["textures.vl2"],"textures/gui/hud_veh_enrgbar.png":["textures.vl2"],"textures/gui/hud_veh_enrgbarback.png":["textures.vl2"],"textures/gui/hud_veh_icon_assault.png":["textures.vl2"],"textures/gui/hud_veh_icon_bomber.png":["textures.vl2"],"textures/gui/hud_veh_icon_hapc.png":["textures.vl2"],"textures/gui/hud_veh_icon_hole.png":["textures.vl2"],"textures/gui/hud_veh_icon_hoverbike.png":["textures.vl2"],"textures/gui/hud_veh_icon_mpb.png":["textures.vl2"],"textures/gui/hud_veh_icon_shrike.png":["textures.vl2"],"textures/gui/hud_veh_new_bombardier_dash.png":["textures.vl2"],"textures/gui/hud_veh_new_dash.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_1.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_2.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_3.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_4.png":["textures.vl2"],"textures/gui/hud_veh_new_dashpiece_5.png":["textures.vl2"],"textures/gui/hud_veh_new_hilite_left.png":["textures.vl2"],"textures/gui/hud_veh_new_hilite_middle.png":["textures.vl2"],"textures/gui/hud_veh_new_hilite_right.png":["textures.vl2"],"textures/gui/hud_veh_new_tankgunner_dash.png":["textures.vl2"],"textures/gui/hud_veh_nrgbar.png":["textures.vl2"],"textures/gui/hud_veh_nrgbar_back.png":["textures.vl2"],"textures/gui/hud_veh_passenger_dot.png":["textures.vl2"],"textures/gui/hud_veh_passengers.png":["textures.vl2"],"textures/gui/hud_veh_seatdot.png":["textures.vl2"],"textures/gui/hud_veh_speedaltwin.png":["textures.vl2"],"textures/gui/hud_veh_speedaltwinback.png":["textures.vl2"],"textures/gui/hud_veh_speedo_bkgrnd.png":["textures.vl2"],"textures/gui/hud_veh_speedo_frame.png":["textures.vl2"],"textures/gui/hud_veh_weapon_back.png":["textures.vl2"],"textures/gui/hud_veh_weapon_frame.png":["textures.vl2"],"textures/gui/hud_veh_weaponback.png":["textures.vl2"],"textures/gui/hud_veh_weaponwin.png":["textures.vl2"],"textures/gui/hud_weaphigh.png":["textures.vl2"],"textures/gui/hud_weapwin.png":["textures.vl2"],"textures/gui/hud_west.png":["textures.vl2"],"textures/gui/immersion.jpg":["textures.vl2"],"textures/gui/launch_btn.png":["textures.vl2"],"textures/gui/launch_btn_act.png":["textures.vl2"],"textures/gui/launch_btn_rol.png":["textures.vl2"],"textures/gui/launchtop_btn.png":["textures.vl2"],"textures/gui/launchtop_btn_act.png":["textures.vl2"],"textures/gui/lnch_Tab.png":["textures.vl2"],"textures/gui/load_Firestorm.png":["textures.vl2"],"textures/gui/load_Fracas.png":["textures.vl2"],"textures/gui/load_Geronimo.png":["Geronimo.vl2"],"textures/gui/load_Katabatic.png":["textures.vl2"],"textures/gui/load_Patience.png":["Patience.vl2"],"textures/gui/load_Riverdance.png":["textures.vl2"],"textures/gui/load_VulcansHammer.png":["VulcansHammer.vl2"],"textures/gui/load_broken_dreams.png":["brokendreams_2.vl2"],"textures/gui/load_solace.png":["Solace.vl2"],"textures/gui/lobby_headset.png":["textures.vl2"],"textures/gui/lobby_icon_listen.png":["textures.vl2"],"textures/gui/lobby_icon_speak.png":["textures.vl2"],"textures/gui/server_retrievebar.png":["textures.vl2"],"textures/gui/server_tabs.png":["textures.vl2"],"textures/gui/shellScroll.png":["textures.vl2"],"textures/gui/shll_bar_act.png":["textures.vl2"],"textures/gui/shll_bar_rol.png":["textures.vl2"],"textures/gui/shll_button.png":["textures.vl2"],"textures/gui/shll_entryfield.png":["textures.vl2"],"textures/gui/shll_field_BL.png":["textures.vl2"],"textures/gui/shll_field_BM.png":["textures.vl2"],"textures/gui/shll_field_BR.png":["textures.vl2"],"textures/gui/shll_field_ML.png":["textures.vl2"],"textures/gui/shll_field_MM.png":["textures.vl2"],"textures/gui/shll_field_MR.png":["textures.vl2"],"textures/gui/shll_field_TL.png":["textures.vl2"],"textures/gui/shll_field_TM.png":["textures.vl2"],"textures/gui/shll_field_TR.png":["textures.vl2"],"textures/gui/shll_fieldfill.png":["textures.vl2"],"textures/gui/shll_fieldgrade.png":["textures.vl2"],"textures/gui/shll_frame_edge.png":["textures.vl2"],"textures/gui/shll_frame_end.png":["textures.vl2"],"textures/gui/shll_horizontalfield.png":["textures.vl2"],"textures/gui/shll_horzspacer.png":["textures.vl2"],"textures/gui/shll_horztabbutton.png":["textures.vl2"],"textures/gui/shll_horztabbuttonB.png":["textures.vl2"],"textures/gui/shll_horztabframeclose.png":["textures.vl2"],"textures/gui/shll_horztabframeclosea.png":["textures.vl2"],"textures/gui/shll_horztabframegrad.png":["textures.vl2"],"textures/gui/shll_horztabframegrada.png":["textures.vl2"],"textures/gui/shll_horztabframegradedge.png":["textures.vl2"],"textures/gui/shll_horztabframegradedgea.png":["textures.vl2"],"textures/gui/shll_icon_dedicated.png":["textures.vl2"],"textures/gui/shll_icon_dedicated_hi.png":["textures.vl2"],"textures/gui/shll_icon_favorite.png":["textures.vl2"],"textures/gui/shll_icon_favorite_hi.png":["textures.vl2"],"textures/gui/shll_icon_notqueried.png":["textures.vl2"],"textures/gui/shll_icon_notqueried_hi.png":["textures.vl2"],"textures/gui/shll_icon_passworded.png":["textures.vl2"],"textures/gui/shll_icon_passworded_hi.png":["textures.vl2"],"textures/gui/shll_icon_penguin.png":["textures.vl2"],"textures/gui/shll_icon_querying.png":["textures.vl2"],"textures/gui/shll_icon_querying_hi.png":["textures.vl2"],"textures/gui/shll_icon_timedout.png":["textures.vl2"],"textures/gui/shll_icon_tourney.png":["textures.vl2"],"textures/gui/shll_icon_tourney_hi.png":["textures.vl2"],"textures/gui/shll_launch_act.png":["textures.vl2"],"textures/gui/shll_launch_rol.png":["textures.vl2"],"textures/gui/shll_launch_sep.png":["textures.vl2"],"textures/gui/shll_menuclose.png":["textures.vl2"],"textures/gui/shll_menufield.png":["textures.vl2"],"textures/gui/shll_pulldown.png":["textures.vl2"],"textures/gui/shll_pulldown_BL.png":["textures.vl2"],"textures/gui/shll_pulldown_BM.png":["textures.vl2"],"textures/gui/shll_pulldown_BR.png":["textures.vl2"],"textures/gui/shll_pulldown_ML.png":["textures.vl2"],"textures/gui/shll_pulldown_MM.png":["textures.vl2"],"textures/gui/shll_pulldown_MR.png":["textures.vl2"],"textures/gui/shll_pulldown_TL.png":["textures.vl2"],"textures/gui/shll_pulldown_TM.png":["textures.vl2"],"textures/gui/shll_pulldown_TR.png":["textures.vl2"],"textures/gui/shll_pulldownbar_act.png":["textures.vl2"],"textures/gui/shll_pulldownbar_rol.png":["textures.vl2"],"textures/gui/shll_radio.png":["textures.vl2"],"textures/gui/shll_scroll_horzbar.png":["textures.vl2"],"textures/gui/shll_scroll_horzbuttons.png":["textures.vl2"],"textures/gui/shll_scroll_horzfield.png":["textures.vl2"],"textures/gui/shll_scroll_scale.png":["textures.vl2"],"textures/gui/shll_scroll_vertbar.png":["textures.vl2"],"textures/gui/shll_scroll_vertbuttons.png":["textures.vl2"],"textures/gui/shll_scroll_vertfield.png":["textures.vl2"],"textures/gui/shll_sortarrow.png":["textures.vl2"],"textures/gui/shll_soundbutton.png":["textures.vl2"],"textures/gui/shll_tabbutton.png":["textures.vl2"],"textures/gui/shll_tabframegrad.png":["textures.vl2"],"textures/gui/shll_tabframegradedge.png":["textures.vl2"],"textures/gui/shll_titletab.png":["textures.vl2"],"textures/gui/shll_treeView.png":["textures.vl2"],"textures/gui/shll_verticalfield.png":["textures.vl2"],"textures/gui/shll_vertspacer.png":["textures.vl2"],"textures/gui/shll_wipe.png":["textures.vl2"],"textures/gui/shll_wipeend.png":["textures.vl2"],"textures/gui/shll_wipefill.png":["textures.vl2"],"textures/gui/shll_wphfieldbttm.png":["textures.vl2"],"textures/gui/shll_wphfieldtop.png":["textures.vl2"],"textures/gui/shll_wpvfield.png":["textures.vl2"],"textures/gui/treeView.png":["textures.vl2"],"textures/gui/trn_1charybdis.png":["textures.vl2"],"textures/gui/trn_2sehrganda.png":["textures.vl2"],"textures/gui/trn_3ymir.png":["textures.vl2"],"textures/gui/trn_4bloodjewel.png":["textures.vl2"],"textures/gui/trn_5draconis.png":["textures.vl2"],"textures/gui/trn_skifree_2021.png":["SkiFreeGameType.vl2"],"textures/gui/trn_skifree_daily.png":["SkiFreeGameType.vl2"],"textures/gui/trn_skifree_random.png":["SkiFreeGameType.vl2"],"textures/gui/vin_assaultVehicle.png":["textures.vl2"],"textures/gui/vin_bomberFlyer.png":["textures.vl2"],"textures/gui/vin_hapcFlyer.png":["textures.vl2"],"textures/gui/vin_mobileBaseVehicle.png":["textures.vl2"],"textures/gui/vin_scoutFlyer.png":["textures.vl2"],"textures/gui/vin_scoutVehicle.png":["textures.vl2"],"textures/gui/votemeterpassbar.png":["textures.vl2"],"textures/gui/window_close.png":["textures.vl2"],"textures/gui/window_corner.png":["textures.vl2"],"textures/gui/window_titletab.png":["textures.vl2"],"textures/haloday.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/halonite.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/harvest.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ib/skies/inf_butch_night13_BK.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_DN.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_FR.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_LF.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_RT.png":["TWL-MapPack.vl2"],"textures/ib/skies/inf_butch_night13_UP.png":["TWL-MapPack.vl2"],"textures/ice/bd_ebor03.PNG":["TWL2-MapPack.vl2"],"textures/ice/bd_espe03.PNG":["TWL2-MapPack.vl2"],"textures/ice/bd_ibor6.PNG":["TWL2-MapPack.vl2"],"textures/ice/bd_iceilig02.png":["TWL2-MapPack.vl2"],"textures/ice/be_elig03.PNG":["TWL2-MapPack.vl2"],"textures/ice/be_icei01a.png":["TWL2-MapPack.vl2"],"textures/ice/be_itebor02a.PNG":["TWL2-MapPack.vl2"],"textures/ice/be_itedoo01.PNG":["TWL2-MapPack.vl2"],"textures/ice/be_iteflo01.PNG":["TWL2-MapPack.vl2"],"textures/ice/ds_efloor1.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ichute02.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iflo04.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ihacei01.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ilig02.png":["TWL2-MapPack.vl2"],"textures/ice/ds_ilig03.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iwaldeco04a.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iwaldeco05.png":["TWL2-MapPack.vl2"],"textures/ice/ds_iwaldeco06.png":["TWL2-MapPack.vl2"],"textures/ice/ds_techwall_2.png":["TWL2-MapPack.vl2"],"textures/ice/ds_techwall_3.png":["TWL2-MapPack.vl2"],"textures/ice/icewall2020.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ice/icewall2021.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ice/icewall2022.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ice/rockSnow2.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/rockblue5.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/skies/dark_b.bm8":["ice.vl2"],"textures/ice/skies/dark_b.png":["ice.vl2"],"textures/ice/skies/dark_bottom.bm8":["ice.vl2"],"textures/ice/skies/dark_bottom.png":["ice.vl2"],"textures/ice/skies/dark_f.bm8":["ice.vl2"],"textures/ice/skies/dark_f.png":["ice.vl2"],"textures/ice/skies/dark_l.bm8":["ice.vl2"],"textures/ice/skies/dark_l.png":["ice.vl2"],"textures/ice/skies/dark_r.bm8":["ice.vl2"],"textures/ice/skies/dark_r.png":["ice.vl2"],"textures/ice/skies/dark_t.bm8":["ice.vl2"],"textures/ice/skies/dark_t.png":["ice.vl2"],"textures/ice/skies/ice_blue_emap.bm8":["ice.vl2"],"textures/ice/skies/ice_blue_emap.png":["ice.vl2"],"textures/ice/skies/ice_nite_emap.bm8":["ice.vl2"],"textures/ice/skies/ice_nite_emap.png":["ice.vl2"],"textures/ice/skies/icecloud1.bm8":["ice.vl2"],"textures/ice/skies/icecloud1.png":["ice.vl2"],"textures/ice/skies/icecloud2.bm8":["ice.vl2"],"textures/ice/skies/icecloud2.png":["ice.vl2"],"textures/ice/skies/icecloud3.bm8":["ice.vl2"],"textures/ice/skies/icecloud3.png":["ice.vl2"],"textures/ice/skies/kif_ice_day_BK.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_DN.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_FR.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_LF.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_RT.png":["TWL-MapPack.vl2"],"textures/ice/skies/kif_ice_day_UP.png":["TWL-MapPack.vl2"],"textures/ice/skies/starrynite_BK.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_DN.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_FR.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_LF.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_RT.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_UP.png":["TWL2-MapPack.vl2"],"textures/ice/skies/starrynite_v1_BK.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_BK.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_DN.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_DN.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_FR.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_FR.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_LF.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_LF.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_RT.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_RT.png":["ice.vl2"],"textures/ice/skies/starrynite_v1_UP.bm8":["ice.vl2"],"textures/ice/skies/starrynite_v1_UP.png":["ice.vl2"],"textures/ice/snowrock.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/snowrock2.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ebor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ecap02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_edoor04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_eflo01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_elig01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_elig02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_espec01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_espec02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_espec03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal01d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal02a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal03a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ewal06d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_floorgrate.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_floorthresh.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ibor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ibor01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig02a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iborlig02b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icei02a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ichute01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ichute02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icol01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icol01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolBASE.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolCAP01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolCAP02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolSPEC01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icolSPEC02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_icoligolA.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ifloor01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ilig04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ipipe01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ipipe01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ipipe02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec01agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec01gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec02agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec02gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_ispec03glue.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01Snow.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01_4BSb.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01_4BSgl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal01gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal02Snow.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal03.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal035BSEb.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal035BSEgl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal03Snow.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal03gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal04.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal04gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal05.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwal05gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP01agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP01gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP02agl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalCAP02gl.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap01d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalcap02d.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_iwalsubcap.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_screen.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01a.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01b.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_scrnbrdr01c.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_thresh01OFF.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_thresh01ON.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_threshSIDE.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/sw_threshgrate.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/xsnowrock3.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice/xsnowrock4.png":["ice.vl2","yHDTextures2.0.vl2"],"textures/ice_dark.dml":["ice.vl2"],"textures/inf_butch_FrozenHope.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/inf_butch_night13.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/inf_butch_night13_x2.dml":["TWL-MapPack.vl2"],"textures/inf_butch_nov50.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/inf_butch_nov50_BK.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_DN.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_FR.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_LF.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_RT.png":["TWL2-MapPack.vl2"],"textures/inf_butch_nov50_UP.png":["TWL2-MapPack.vl2"],"textures/inf_butchlava51.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/island_water.dml":["textures.vl2"],"textures/jagged.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/jaggedclaw/be_edoo02.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_elig02.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_elig03.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_espec02.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_ewal06.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_icei01a.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_ihalig.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_iprflo01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itebor04.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itedoo01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itelig01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itelig02.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itewal01.PNG":["TWL2-MapPack.vl2"],"textures/jaggedclaw/be_itewal04.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_bk.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_dn.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_ft.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_lf.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_rt.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/chateau_up.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/deck1+.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_NefBlTrim.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_NefBlue1.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_NefWall1.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_Neffloor1.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_Neffloor5.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/ds_ilig03.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/greylite2.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/gtext2a.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/null.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/slabgrill.png":["TWL2-MapPack.vl2"],"textures/jaggedclaw/tcement1a.png":["TWL2-MapPack.vl2"],"textures/kif_iceday.dml":["TWL-MapPack.vl2"],"textures/kif_lava_starrynight.dml":["TWL-MapPack.vl2"],"textures/kif_lava_starrynight62.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/kif_lushsunset.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Euro4_Sinivalkoinen_TMa5tersMix_water_RefleX.png":["TWL2-MapPack.vl2"],"textures/lava/Nycto-Plates.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-Trim.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-bboard.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-bboard2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp3.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp4.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-comp7.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-computer.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-disp1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-disp2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-hitwall.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-hitwall2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-map.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall3.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-mwall4.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-pipe.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/Nycto-plasma.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/STPLATE10a.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE10c.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE12.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE13.png":["Classic_maps_v1.vl2"],"textures/lava/STPLATE5a.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate0010.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate1.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate2.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate3.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate5.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate6.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate7.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate8.png":["Classic_maps_v1.vl2"],"textures/lava/Stplate9.png":["Classic_maps_v1.vl2"],"textures/lava/Tma5t_Cowboy1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy5.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy6.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy7.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy8.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboy9.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb10.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb11.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb12.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb13.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/Tma5t_Cowboyb14.png":["TWL2-MapPack.vl2"],"textures/lava/Tma5t_Cowboyb15.png":["TWL2-MapPack.vl2"],"textures/lava/bd_iflo03b.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/be_icei01a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/be_itelig01.PNG":["TWL2-MapPack.vl2"],"textures/lava/be_itewal02a.PNG":["TWL2-MapPack.vl2"],"textures/lava/comp_screen_2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/display_blue.png":["Classic_maps_v1.vl2"],"textures/lava/display_yellow.png":["Classic_maps_v1.vl2"],"textures/lava/displaymxscar.png":["Classic_maps_v1.vl2"],"textures/lava/ds_NefBlTrim.png":["Classic_maps_v1.vl2"],"textures/lava/ds_NefBlue.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefBlue1.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefBlue2.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefBlue3.png":["Classic_maps_v1.vl2"],"textures/lava/ds_NefFloor6.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_NefWall1.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/lava/ds_Neffloor1.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor2.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor3.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor4.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neffloor5.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Neflig01.png":["Classic_maps_v1.vl2"],"textures/lava/ds_Thresh01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_Thresh1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_alarm.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ebor01b.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ebor02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_efloor1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_eflor1.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_elig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_elig02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_elig0202.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_elig03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_eport01e.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_etechbor01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_etechbrdr2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_etran1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_etrans.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_etrans01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal01BASE.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal01a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewal02a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewal05d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewal11a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewaldeco01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco08.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewaldeco09.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall05.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall06a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ewall07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ewall1a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_floorgrate1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_genfloor.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_genwall.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_girder.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor01a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor02a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ibor04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_icei01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_icei05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_iceilig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iceilig1.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ichute01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ichute02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iflo04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ifloLig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ifloLig02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ifloor01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ihacei01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ihaceilig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ihalig.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_ilavlight.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig05.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_ilig06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_inolite.png":["Classic_maps_v1.vl2"],"textures/lava/ds_iwal01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwal01a.png":["lava.vl2","yHDTextures2.0.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_iwal01aa.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_iwaldeco01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco01a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco02a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco03a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco04a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco05.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco05a.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco08.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_iwaldeco09.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_jet01.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_jet02.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_jet03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_mlatched.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_mriveted2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_neflig01.png":["TR2final105-client.vl2"],"textures/lava/ds_obsidian.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_screen.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techborder1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techborder2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techwall_1.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techwall_2.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_techwall_3.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_twall_001.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_waldeco1.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/ds_walldeco_06.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_walldeco_07.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_walldeco_08.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ds_walldeco_09.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/ext_grey8.png":["Classic_maps_v1.vl2"],"textures/lava/greylite1.png":["Classic_maps_v1.vl2"],"textures/lava/greylite2.png":["Classic_maps_v1.vl2"],"textures/lava/greylitetrim.png":["Classic_maps_v1.vl2"],"textures/lava/greylitetrim2.png":["Classic_maps_v1.vl2"],"textures/lava/grid_1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/grid_rusty_1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/grill1a.png":["Classic_maps_v1.vl2"],"textures/lava/gtext1.png":["Classic_maps_v1.vl2"],"textures/lava/gtext1a.png":["Classic_maps_v1.vl2"],"textures/lava/gtext2.png":["Classic_maps_v1.vl2"],"textures/lava/gtext2a.png":["Classic_maps_v1.vl2"],"textures/lava/gtext2b.png":["Classic_maps_v1.vl2"],"textures/lava/gtext3.png":["Classic_maps_v1.vl2"],"textures/lava/gtext4.png":["Classic_maps_v1.vl2"],"textures/lava/gtext5.png":["Classic_maps_v1.vl2"],"textures/lava/gtextpipe1.png":["Classic_maps_v1.vl2"],"textures/lava/inf_light011.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/inf_light09.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/lavadirt04.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/lavarock03.png":["lava.vl2","yHDTextures2.0.vl2"],"textures/lava/lavawall20.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/lavawall21.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/lavawall22.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/radwarn.png":["Classic_maps_v1.vl2"],"textures/lava/skies/Lavanight_v5_BK.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_DN.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_FR.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_LF.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_RT.png":["DynamixFinalPack.vl2"],"textures/lava/skies/Lavanight_v5_UP.png":["DynamixFinalPack.vl2"],"textures/lava/skies/kif_lava_starrynight_BK.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_DN.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_FR.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_LF.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_RT.png":["TWL-MapPack.vl2"],"textures/lava/skies/kif_lava_starrynight_UP.png":["TWL-MapPack.vl2"],"textures/lava/skies/lava_starrynite_emap.bm8":["lava.vl2"],"textures/lava/skies/lava_starrynite_emap.png":["lava.vl2"],"textures/lava/skies/lavanight_v5_BK.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_DN.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_FR.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_LF.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_RT.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavanight_v5_UP.png":["","Classic_maps_v1.vl2"],"textures/lava/skies/lavayellow_v5_BK.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_DN.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_FR.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_LF.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_RT.png":["DynamixFinalPack.vl2"],"textures/lava/skies/lavayellow_v5_UP.png":["DynamixFinalPack.vl2"],"textures/lava/skies/starrynite_v5_BK.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_BK.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_DN.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_DN.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_FR.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_FR.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_LF.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_LF.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_RT.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_RT.png":["lava.vl2"],"textures/lava/skies/starrynite_v5_UP.bm8":["lava.vl2"],"textures/lava/skies/starrynite_v5_UP.png":["lava.vl2"],"textures/lava/skies/volcanic_starrynite_emap.bm8":["lava.vl2"],"textures/lava/skies/volcanic_starrynite_emap.png":["Classic_maps_v1.vl2","DynamixFinalPack.vl2","lava.vl2"],"textures/lava/stplate0021.png":["Classic_maps_v1.vl2"],"textures/lava/stplate14.png":["Classic_maps_v1.vl2"],"textures/lava/sw_floorgrate.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lava/sw_ipipe02.png":["TWL2-MapPack.vl2"],"textures/lava/tcement1a.png":["Classic_maps_v1.vl2"],"textures/lava/techwall_1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/techwall_paint.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/techwall_rusty.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/techwall_rusty2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lava/tlite6.png":["Classic_maps_v1.vl2"],"textures/lava/tplate1.png":["Classic_maps_v1.vl2"],"textures/lava/tplate2.png":["Classic_maps_v1.vl2"],"textures/lava/ttrim2.png":["Classic_maps_v1.vl2"],"textures/lava_dark.dml":["lava.vl2"],"textures/lava_night.dml":["Classic_maps_v1.vl2","DynamixFinalPack.vl2"],"textures/lava_yellow.dml":["DynamixFinalPack.vl2"],"textures/lavanight_v5.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidTiles/AlgaeWater.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/BlueWater.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/GreenWater.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/IslandWater04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Lava.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LavaPool04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater01_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater02_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater03_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/LushWater04_Algae.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Modulation03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Modulation04.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Shore_Modulation.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile01a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile02a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile03a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/Tile04a.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/archipelago_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/archipelago_water.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/damnation_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/ice_water_ram.png":["Classic_maps_v1.vl2"],"textures/liquidTiles/icebound_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/icebound_water.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/insalubria_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/myrkwood_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/oasis_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/oasis_water_ripply.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/quagmire_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/respite_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/reversion_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_water_1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_water_5.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/riverdance_water_6.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/sanctuary_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/sanctuary_water_1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/sanctuary_water_2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidTiles/thinice_emap_cloudsground.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/liquidtiles/BloodMoon_bloodwater2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/MuddySwamp_industrial_oil.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/PlanetX_CB_water.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/SewageWater.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/caustic_water.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/industrial_oil.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/liquidtiles/tes_water2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/BlueMoon.png":["TWL-MapPack.vl2"],"textures/lush/Roman_COLLa.png":["TWL-MapPack.vl2"],"textures/lush/Roman_COLLb.png":["TWL-MapPack.vl2"],"textures/lush/Roman_ROOF.png":["TWL-MapPack.vl2"],"textures/lush/Roman_STONE.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_BK.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_DN.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_FR.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_LF.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_RT.png":["TWL-MapPack.vl2"],"textures/lush/Skies/BBday_UP.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_BK_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_DN_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_FR_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_LF_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_RT_x2.png":["TWL-MapPack.vl2"],"textures/lush/Skies/lush_01_day_v5_UP_x2.png":["TWL-MapPack.vl2"],"textures/lush/attrition_iflag.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/attrition_sflag.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/bb_red.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/bb_red2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/bb_sand.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_Edoo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor01bb.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_ebor01d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor01e.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ebor04a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ecombo02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_edoo02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_edoo03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eflo02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig02_nd.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_elig03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_elig033.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_epipe01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport01e.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eport02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec03a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec03b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec05.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec05b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec06a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec07.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec08.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_espec09.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_etec.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eterrain02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eterrain02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_eterrain02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal02be.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_ewal03_hl.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_ewal03a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal03acrk.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_ewal04a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal05.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal05a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal05d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal06.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal07.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal077.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_ewal08.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal09b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal11b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal11d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewal12b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ewall10.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_gr3streak.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_gr4streak.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/be_iColBase01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iColTop.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iGeneric.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iGenericDark.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01b1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_icei01c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei01ca.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/be_icei02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei03b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icei04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ichute01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ichute02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icobor1.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icobor1a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icocei.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icolig.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icolig01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icoligolA.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icomp01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icomp01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icowal02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icowal02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_icowal02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iflo01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ifloWet.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ifunctec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ifunctec01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihadoo.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihaflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihalig.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihaspe01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal04d.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal05a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal05b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ihawal05c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ipipe01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ipipe01_iwal.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ipipe01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iprflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iprwal01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ispec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ispec01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_ispec01b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02b.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor02c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itebor04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itec01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itec01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itec01c.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itecei01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itecei02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itedoo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iteflo01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_iteflo02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itelig01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itelig02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal03.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_itewal04.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_screen.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh01.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh01a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh02.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_thresh02a.png":["lush.vl2","yHDTextures2.0.vl2"],"textures/lush/be_twal05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/beach_wal1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/beach_wal2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/beach_wal3.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/box_a.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/box_b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/box_c.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/display05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/display_07.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/dox_beam.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_bluelite1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_bluelite2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel3.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel3_b.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel3_f.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_grsteel4.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/dox_pipe1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/emap_beachblitz.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/lush/hazard.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/ir_blocks.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_blocks.png":["TWL-MapPack.vl2"],"textures/lush/ir_plain.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_plain.png":["TWL-MapPack.vl2"],"textures/lush/ir_relief.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_relief.png":["TWL-MapPack.vl2"],"textures/lush/ir_trim1.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_trim1.png":["TWL-MapPack.vl2"],"textures/lush/ir_trim2.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_trim2.png":["TWL-MapPack.vl2"],"textures/lush/ir_wall.bm8":["TWL-MapPack.vl2"],"textures/lush/ir_wall.png":["TWL-MapPack.vl2"],"textures/lush/kb_logitech.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/light_base01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/panel.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/reactor01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/rip.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/rustbox.png":["TWL-MapPack.vl2"],"textures/lush/rustbox_logo.png":["TWL-MapPack.vl2"],"textures/lush/skies/L4_b.bm8":["lush.vl2"],"textures/lush/skies/L4_b.png":["","lush.vl2"],"textures/lush/skies/L4_bottom.bm8":["lush.vl2"],"textures/lush/skies/L4_bottom.png":["","lush.vl2"],"textures/lush/skies/L4_f.bm8":["lush.vl2"],"textures/lush/skies/L4_f.png":["","lush.vl2"],"textures/lush/skies/L4_l.bm8":["lush.vl2"],"textures/lush/skies/L4_l.png":["","lush.vl2"],"textures/lush/skies/L4_r.bm8":["lush.vl2"],"textures/lush/skies/L4_r.png":["","lush.vl2"],"textures/lush/skies/L4_t.bm8":["lush.vl2"],"textures/lush/skies/L4_t.png":["","lush.vl2"],"textures/lush/skies/emap_dark_green.png":["TWL2-MapPack.vl2"],"textures/lush/skies/emap_muddy.png":["Classic_maps_v1.vl2"],"textures/lush/skies/kif_lushsunset_BK.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_DN.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_FR.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_LF.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_RT.png":["TWL2-MapPack.vl2"],"textures/lush/skies/kif_lushsunset_UP.png":["TWL2-MapPack.vl2"],"textures/lush/skies/lush_01_day_v5_BK.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_DN.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_FR.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_LF.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_RT.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_day_v5_UP.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_BK.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_DN.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_FR.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_LF.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_RT.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_night_UP.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_01_ram_v5_BK.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_DN.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_FR.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_LF.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_RT.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_01_ram_v5_UP.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02_dusk_BK.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_DN.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_FR.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_LF.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_RT.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02_dusk_UP.png":["DynamixFinalPack.vl2"],"textures/lush/skies/lush_02c_dusk_BK.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_DN.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_FR.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_LF.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_RT.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_02c_dusk_UP.png":["Classic_maps_v1.vl2"],"textures/lush/skies/lush_day_emap.bm8":["lush.vl2"],"textures/lush/skies/lush_day_emap.png":["lush.vl2"],"textures/lush/skies/lush_nite_emap.bm8":["lush.vl2"],"textures/lush/skies/lush_nite_emap.png":["lush.vl2"],"textures/lush/skies/lushcloud1.bm8":["lush.vl2"],"textures/lush/skies/lushcloud1.png":["lush.vl2"],"textures/lush/skies/lushcloud3.bm8":["lush.vl2"],"textures/lush/skies/lushcloud3.png":["lush.vl2"],"textures/lush/skies/lushcloud4.bm8":["lush.vl2"],"textures/lush/skies/lushcloud4.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_BK.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_BK.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_DN.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_DN.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_FR.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_FR.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_LF.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_LF.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_RT.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_RT.png":["lush.vl2"],"textures/lush/skies/starrynite_v4_UP.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v4_UP.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_BK.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_BK.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_DN.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_DN.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_FR.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_FR.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_LF.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_LF.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_RT.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_RT.png":["lush.vl2"],"textures/lush/skies/starrynite_v6_UP.bm8":["lush.vl2"],"textures/lush/skies/starrynite_v6_UP.png":["lush.vl2"],"textures/lush/skull.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/alien-01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display04.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display06.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display07.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display08.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/display10.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot03.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot04.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot05.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot06.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot07.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot08.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot09.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/special/shot11.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/stone_wall1.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall2.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall3.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall4.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall5.png":["TWL2-MapPack.vl2"],"textures/lush/stone_wall7.png":["TWL2-MapPack.vl2"],"textures/lush/trim_t01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_c02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_light_c01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_trim01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/wall_w03a.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush/xing.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lush_dark.dml":["lush.vl2"],"textures/lush_day.dml":["DynamixFinalPack.vl2"],"textures/lush_day_x2.dml":["TWL-MapPack.vl2"],"textures/lush_dusk.dml":["Classic_maps_v1.vl2","DynamixFinalPack.vl2"],"textures/lush_night.dml":["DynamixFinalPack.vl2"],"textures/lush_ram.dml":["Classic_maps_v1.vl2"],"textures/lushdusk66.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/lushsky_night11.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/magsky/mag_BK.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_FR.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_LF.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_RT.png":["TWL2-MapPack.vl2"],"textures/magsky/mag_UP.png":["TWL2-MapPack.vl2"],"textures/mmd.dml":["TWL2-MapPack.vl2"],"textures/mmd/mmd_BK.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_DN.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_FR.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_LF.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_RT.png":["TWL2-MapPack.vl2"],"textures/mmd/mmd_UP.png":["TWL2-MapPack.vl2"],"textures/mr_02.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/muddy.dml":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_BK.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_FR.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_LF.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_RT.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_UP.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_cloud1.png":["Classic_maps_v1.vl2"],"textures/muddy/skies/muddy_cloud2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_BK.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_DN.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_FR.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_LF.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_RT.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Nef5_UP.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet2_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_cloud1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/RedPlanet_cloud2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_BK.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_FR.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_LF.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_RT.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal1_UP.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal_7.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal_Cloud1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/Surreal_Cloud2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nefRed_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_5.png":["Classic_maps_v1.vl2"],"textures/nef/skies/nef_BlueClear_cloud1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night1.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night2.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night3.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night4.png":["Classic_maps_v1.vl2"],"textures/nef/skies/night5.png":["Classic_maps_v1.vl2"],"textures/nef_5.dml":["Classic_maps_v1.vl2"],"textures/nef_BlueClear.dml":["Classic_maps_v1.vl2"],"textures/nef_RedPlanet.dml":["Classic_maps_v1.vl2"],"textures/nef_RedPlanet2.dml":["Classic_maps_v1.vl2"],"textures/nef_Red_1.dml":["Classic_maps_v1.vl2"],"textures/nef_Surreal1.dml":["Classic_maps_v1.vl2"],"textures/nef_night1.dml":["Classic_maps_v1.vl2"],"textures/nef_sset2_x2.dml":["TWL-MapPack.vl2"],"textures/nefred1/red1_BK_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_CLOUD1_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_FR_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_LF_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_RT_x2.png":["TWL-MapPack.vl2"],"textures/nefred1/red1_UP_x2.png":["TWL-MapPack.vl2"],"textures/nefred1_x2.dml":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_BK.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_FR.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_LF.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_RT.png":["TWL-MapPack.vl2"],"textures/nefsset2_x2/skies/nef_sset2_UP.png":["TWL-MapPack.vl2"],"textures/nightsky82.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/ocean_water.dml":["textures.vl2"],"textures/ocular.dml":["TWL2-MapPack.vl2"],"textures/particleTest.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/raindrops.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake001.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake002.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake003.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake004.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake005.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake006.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake007.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake008.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake009.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake010.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake011.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake012.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake013.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake014.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake015.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake016.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflake017.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/precipitation/snowflakes.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/purpsun.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/raindrops.dml":["textures.vl2"],"textures/rilrock/ril.darkrock.png":["S8maps.vl2"],"textures/roelcolor.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_goonflag.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_taotribes.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_toitle.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_tribescastcof.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/rst_tribesnextcof.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/DarkStormy/DarkStormy_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Euro4_Bleed_emap.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_bk.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_dn.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_fr.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_lf.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_rt.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_Bleed_sysday_up.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_BK.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_DN.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_FR.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_LF.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_RT.png":["TWL2-MapPack.vl2"],"textures/skies/Euro4_FrozenHope_inf_butchlava2_UP.png":["TWL2-MapPack.vl2"],"textures/skies/Iris/Iris_BK.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_BK.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_DN.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_DN.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_FR.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_FR.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_LF.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_LF.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_RT.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_RT.png":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_UP.bm8":["TWL-MapPack.vl2"],"textures/skies/Iris/Iris_UP.png":["TWL-MapPack.vl2"],"textures/skies/L4/L4_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/L4/L4_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Magellan/WinterBlue_v5_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Nef_Sset2/Nef_Sset2_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PacificSky/PacificSky_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/PlanetX/PlanetX_reflect.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/Saturn/Saturn_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/SunSet12/SunSet12_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/aurawisp/AURAWISP_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/badlandday/badlandday_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/blank_DN.bm8":["TWL2-MapPack.vl2"],"textures/skies/blank_DN.png":["TWL2-MapPack.vl2"],"textures/skies/borealis/borealis_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/borealis/borealis_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cc_sky_bk.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_fr.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_lf.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_rt.png":["TWL2-MapPack.vl2"],"textures/skies/cc_sky_up.png":["TWL2-MapPack.vl2"],"textures/skies/ccbsky2/csk2_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ccbsky2/csk2_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/clouds/clouds_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/cubemap/cubemap_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_BK.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_FR.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_LF.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_RT.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eeps/eepdesert_UP.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve1up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve2up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve3up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve4up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve5up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve6up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve7up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/eve/eve8up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/emap_muddy.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/flingsky03/flingsky03_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/haloday/haloday_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/halonite/halonite_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/harvest/harvest_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_FrozenHope/inf_butch_FrozenHope_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_night13/inf_butch_night13_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butch_nov50/inf_butch_nov50_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/inf_butchlava51/inf_butchlava51_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/jagged/chateau_up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lava_starrynight62/kif_lava_starrynight62_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/kif_lushsunset/kif_lushsunset_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lavanight_v5/lavanight_v5_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lush_02_dusk_BK.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_DN.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_FR.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_LF.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_RT.png":["TWL-MapPack.vl2"],"textures/skies/lush_02_dusk_UP.png":["TWL-MapPack.vl2"],"textures/skies/lushdusk66/lushdusk66_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushdusk66/lushdusk66_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/Thumbs.db":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/lushsky_night11/lushsky_night11_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/mr_02/mr_02_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_CLOUD1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nefred1/red1_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/nightsky82/nightsky82_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/ocular0.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular0.png":["TWL2-MapPack.vl2"],"textures/skies/ocular180.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular180.png":["TWL2-MapPack.vl2"],"textures/skies/ocular270.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular270.png":["TWL2-MapPack.vl2"],"textures/skies/ocular90.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular90.png":["TWL2-MapPack.vl2"],"textures/skies/ocular_lush_day_emap.bm8":["TWL2-MapPack.vl2"],"textures/skies/ocular_lush_day_emap.png":["TWL2-MapPack.vl2"],"textures/skies/oculartop.bm8":["TWL2-MapPack.vl2"],"textures/skies/oculartop.png":["TWL2-MapPack.vl2"],"textures/skies/purpsun/PURPSUN_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/purpsun/PURPSUN_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/roelcolor/roelcolor_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sal/Malig_v1_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/Cloud1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky01_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky02_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky03_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky04_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky05_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky01/sky06_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky121/sky121_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky127/sky127_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sky156/sky156_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_14/space_14_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_16/space_16_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_17/space_17_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_18/space_18_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_19/space_19_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_3/space_3_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/space_5/space_5_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/starrynite/starrynite_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sundown25/sundown25_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/sunnight/sunnight_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_bk.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_dn.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_ft.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_lf.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_rt.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/tyre/tyre_up.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/violet/violet_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_BK.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_DN.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_FR.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_LF.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_RT.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skies/winterskyday/winterskyday_UP.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/A7branch1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/A7trunk2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/AgaritaFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/BBerryFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/BarrenSticksFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Blue.hflag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Blue.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Blue.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Branch3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Branch4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Branch5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Branch6.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Branch7.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Burntwood.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/BurntwoodBranch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ChkBerryWinter.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Enrgtubes0009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Green.hflag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Green.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Green.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/HorseNettleFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Humnskn3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/LushMoss.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneBark.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneFoliage.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MadroneWinter.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Maple Shrub.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MesqBark.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MesquiteBranch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MesquiteLeaves.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Mortar_Projectile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/MotionSensor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NewMoss.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NewMossFull.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexDefaultFloor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexHoardFloor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexusGenerator.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/NexusPowerLightsON.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Oldwood.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/OldwoodBran01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/OldwoodBranch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Orange.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Orange.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Plsre00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre16.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre17.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre18.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre19.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre20.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre21.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Plsre22.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/PonderosaPineBark.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Pulse08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Purple.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Purple.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Rabbit BushWin.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/RabbitBush.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Red.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Red.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/SBerryFall.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ScotchBroom.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Scout_windshield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ShieldPackActivate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ShieldPackAmbient.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Silver.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Silver.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/SnowBlanket.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/StormJason.hmale.png":["StormJason.vl2"],"textures/skins/StormJason.lmale.png":["StormJason.vl2"],"textures/skins/StormJason.mmale.png":["StormJason.vl2"],"textures/skins/TR2-1.hmale.png":["TR2final105-client.vl2"],"textures/skins/TR2-1.lfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-1.mfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-1.mmale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.hmale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.lfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.mfemale.png":["TR2final105-client.vl2"],"textures/skins/TR2-2.mmale.png":["TR2final105-client.vl2"],"textures/skins/Vehicle_Land_Assault_Wheel.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_Land_Assault_bodyMain.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_Land_Assault_bodySide1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_Land_Assault_bodySide2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout_pipes.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout_windshield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_scout_windshieldInner.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Vehicle_grav_tank_bodyMain.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Weapon_missile_projectile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/WinMapShrubart.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/WinRhody.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/WinScotchArt.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Yellow.hflag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/Yellow.hmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.lfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.lmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.mfemale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/Yellow.mmale.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/a.hbioderm_512.png":["skins.vl2"],"textures/skins/a.hrobot_512.png":["skins.vl2"],"textures/skins/a.lbioderm_512.png":["skins.vl2"],"textures/skins/a.lrobot_512.png":["skins.vl2"],"textures/skins/a.mbioderm_512.png":["skins.vl2"],"textures/skins/a.mrobot_512.png":["skins.vl2"],"textures/skins/alienfirxbase2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_chaingun.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_disc.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_grenade.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_mine.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_mortar.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/ammo_plasma.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/armor.damage.1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/armor.damage.2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/armor.damage.3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/artists.plaque.png":["skins.vl2"],"textures/skins/b.hbioderm_512.png":["skins.vl2"],"textures/skins/b.hrobot_512.png":["skins.vl2"],"textures/skins/b.lbioderm_512.png":["skins.vl2"],"textures/skins/b.lrobot_512.png":["skins.vl2"],"textures/skins/b.mbioderm_512.png":["skins.vl2"],"textures/skins/b.mrobot_512.png":["skins.vl2"],"textures/skins/banner_honor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/banner_strength.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/banner_unity.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrelMount.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_aa_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_elf_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_fusion_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_missile_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/barrel_mortar_large.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/base.hbioderm.png":["skins.vl2"],"textures/skins/base.hbioderm_512.png":["skins.vl2"],"textures/skins/base.hflag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/base.hmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.lbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.lbioderm_512.png":["skins.vl2"],"textures/skins/base.lfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.lmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.mbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.mbioderm_512.png":["skins.vl2"],"textures/skins/base.mfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.mmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/base.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/baseb.hbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.hmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.lbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.lfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.lmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.mbioderm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.mfemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.mmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/baseb.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/basebbot.hmale.png":["skins.vl2"],"textures/skins/basebbot.lmale.png":["skins.vl2"],"textures/skins/basebbot.mmale.png":["skins.vl2"],"textures/skins/basebot.hmale.png":["skins.vl2"],"textures/skins/basebot.lmale.png":["skins.vl2"],"textures/skins/basebot.mmale.png":["skins.vl2"],"textures/skins/bb_bark.png":["TWL-MapPack.vl2"],"textures/skins/bb_bark2.png":["TWL-MapPack.vl2"],"textures/skins/bb_beechleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_bigleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_bush.png":["TWL-MapPack.vl2"],"textures/skins/bb_jnigraleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_palmleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_screen.png":["TWL-MapPack.vl2"],"textures/skins/bb_stripeleaf.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree1_foliage2.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree1_side.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree2_foliage2.png":["TWL-MapPack.vl2"],"textures/skins/bb_tree2_side.png":["TWL-MapPack.vl2"],"textures/skins/bb_trunk.png":["TWL-MapPack.vl2"],"textures/skins/beacon.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/beagle.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/beagle.hmale.png":["skins.vl2"],"textures/skins/beagle.hmale_512.png":["skins.vl2"],"textures/skins/beagle.lfemale.png":["skins.vl2"],"textures/skins/beagle.lfemale_512.png":["skins.vl2"],"textures/skins/beagle.lmale.png":["skins.vl2"],"textures/skins/beagle.lmale_512.png":["skins.vl2"],"textures/skins/beagle.mfemale.png":["skins.vl2"],"textures/skins/beagle.mfemale_512.png":["skins.vl2"],"textures/skins/beagle.mmale.png":["skins.vl2"],"textures/skins/beagle.mmale_512.png":["skins.vl2"],"textures/skins/beagle.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/beampulse.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bigdevdawg.plaque.png":["skins.vl2"],"textures/skins/billboard_1.png":["TR2final105-client.vl2"],"textures/skins/billboard_2.png":["TR2final105-client.vl2"],"textures/skins/billboard_3.png":["TR2final105-client.vl2"],"textures/skins/billboard_4.png":["TR2final105-client.vl2"],"textures/skins/blank.switch.png":["skins.vl2"],"textures/skins/blite00.png":["skins.vl2"],"textures/skins/blite01.PNG":["skins.vl2"],"textures/skins/blite02.png":["skins.vl2"],"textures/skins/blite03.png":["skins.vl2"],"textures/skins/blite04.png":["skins.vl2"],"textures/skins/blue.hflag.png":["zflags.vl2"],"textures/skins/blue.png":["skins.vl2"],"textures/skins/blue00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue00.ifl":["skins.vl2"],"textures/skins/blue01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue_blink.ifl":["skins.vl2"],"textures/skins/blue_blink0.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue_blink0.ifl":["skins.vl2"],"textures/skins/blue_blink1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/blue_blink2.PNG":["skins.vl2"],"textures/skins/blue_blink2.png":["yHDTextures2.0.vl2"],"textures/skins/blue_blink3.PNG":["skins.vl2"],"textures/skins/blue_blink3.png":["yHDTextures2.0.vl2"],"textures/skins/blue_blink4.PNG":["skins.vl2"],"textures/skins/blue_blink4.png":["yHDTextures2.0.vl2"],"textures/skins/borg1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/borg2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/borg4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/borg6.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/brsh5.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/brush.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/bullethole6.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cactus.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/camera.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chaingun_shot_end.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chaingun_shot_side.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chg_fmzl.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chg_smzl.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/chgexhaust.ifl":["skins.vl2"],"textures/skins/cloak_core.ifl":["skins.vl2"],"textures/skins/cloak_core0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0010.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0011.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0012.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0013.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0014.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0015.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0016.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0017.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0018.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cloak_core0019.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cotp.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/cotp.hmale.png":["skins.vl2"],"textures/skins/cotp.lfemale.png":["skins.vl2"],"textures/skins/cotp.lmale.png":["skins.vl2"],"textures/skins/cotp.mfemale.png":["skins.vl2"],"textures/skins/cotp.mmale.png":["skins.vl2"],"textures/skins/cotp.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/cotp_hmale_512.png":["skins.vl2"],"textures/skins/cotp_lfemale_512.png":["skins.vl2"],"textures/skins/cotp_lmale_512.png":["skins.vl2"],"textures/skins/cotp_mfemale_512.png":["skins.vl2"],"textures/skins/cotp_mmale_512.png":["skins.vl2"],"textures/skins/dcase00.PNG":["skins.vl2"],"textures/skins/dcase00.ifl":["skins.vl2"],"textures/skins/dcase00.png":["yHDTextures2.0.vl2"],"textures/skins/dcase01.PNG":["skins.vl2"],"textures/skins/dcase01.png":["yHDTextures2.0.vl2"],"textures/skins/dcase02.PNG":["skins.vl2"],"textures/skins/dcase02.png":["yHDTextures2.0.vl2"],"textures/skins/dcase03.PNG":["skins.vl2"],"textures/skins/dcase03.png":["yHDTextures2.0.vl2"],"textures/skins/dcase04.PNG":["skins.vl2"],"textures/skins/dcase04.png":["yHDTextures2.0.vl2"],"textures/skins/dcase05.PNG":["skins.vl2"],"textures/skins/dcase05.png":["yHDTextures2.0.vl2"],"textures/skins/deb01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb01.ifl":["skins.vl2"],"textures/skins/deb02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb08.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb09.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb10.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb11.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb12.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb13.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb14.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb15.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb16.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb17.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb18.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb19.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb20.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb21.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb22.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb23.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb24.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb25.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb26.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb27.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb28.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb29.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb30.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb31.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb32.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deb33.PNG":["skins.vl2"],"textures/skins/deb33.png":["yHDTextures2.0.vl2"],"textures/skins/deb34.PNG":["skins.vl2"],"textures/skins/deb34.png":["yHDTextures2.0.vl2"],"textures/skins/decoy.plaque.png":["skins.vl2"],"textures/skins/deploy_inv_lite.ifl":["skins.vl2"],"textures/skins/deploy_inventory_1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deploy_inventory_2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/deploy_sensor_pulse.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/designers.plaque.png":["skins.vl2"],"textures/skins/diamondback.plaque.png":["skins.vl2"],"textures/skins/disc00.PNG":["skins.vl2"],"textures/skins/disc00.ifl":["skins.vl2"],"textures/skins/disc00.png":["yHDTextures2.0.vl2"],"textures/skins/disc01.PNG":["skins.vl2"],"textures/skins/disc01.png":["yHDTextures2.0.vl2"],"textures/skins/disc02.PNG":["skins.vl2"],"textures/skins/disc02.png":["yHDTextures2.0.vl2"],"textures/skins/disc03.PNG":["skins.vl2"],"textures/skins/disc03.png":["yHDTextures2.0.vl2"],"textures/skins/disc04.PNG":["skins.vl2"],"textures/skins/disc04.png":["yHDTextures2.0.vl2"],"textures/skins/disc05.PNG":["skins.vl2"],"textures/skins/disc05.png":["yHDTextures2.0.vl2"],"textures/skins/disc06.PNG":["skins.vl2"],"textures/skins/disc06.png":["yHDTextures2.0.vl2"],"textures/skins/disc07.PNG":["skins.vl2"],"textures/skins/disc07.png":["yHDTextures2.0.vl2"],"textures/skins/disc08.PNG":["skins.vl2"],"textures/skins/disc08.png":["yHDTextures2.0.vl2"],"textures/skins/disc09.PNG":["skins.vl2"],"textures/skins/disc09.png":["yHDTextures2.0.vl2"],"textures/skins/disc10.PNG":["skins.vl2"],"textures/skins/disc10.png":["yHDTextures2.0.vl2"],"textures/skins/disc11.PNG":["skins.vl2"],"textures/skins/disc11.png":["yHDTextures2.0.vl2"],"textures/skins/disc12.PNG":["skins.vl2"],"textures/skins/disc12.png":["yHDTextures2.0.vl2"],"textures/skins/disc13.PNG":["skins.vl2"],"textures/skins/disc13.png":["yHDTextures2.0.vl2"],"textures/skins/disc14.PNG":["skins.vl2"],"textures/skins/disc14.png":["yHDTextures2.0.vl2"],"textures/skins/disc15.PNG":["skins.vl2"],"textures/skins/disc15.png":["yHDTextures2.0.vl2"],"textures/skins/disc16.PNG":["skins.vl2"],"textures/skins/disc16.png":["yHDTextures2.0.vl2"],"textures/skins/disc17.PNG":["skins.vl2"],"textures/skins/disc17.png":["yHDTextures2.0.vl2"],"textures/skins/disc18.PNG":["skins.vl2"],"textures/skins/disc18.png":["yHDTextures2.0.vl2"],"textures/skins/disc19.PNG":["skins.vl2"],"textures/skins/disc19.png":["yHDTextures2.0.vl2"],"textures/skins/disc20.PNG":["skins.vl2"],"textures/skins/disc20.png":["yHDTextures2.0.vl2"],"textures/skins/disc21.PNG":["skins.vl2"],"textures/skins/disc21.png":["yHDTextures2.0.vl2"],"textures/skins/disc22.PNG":["skins.vl2"],"textures/skins/disc22.png":["yHDTextures2.0.vl2"],"textures/skins/disc23.PNG":["skins.vl2"],"textures/skins/disc23.png":["yHDTextures2.0.vl2"],"textures/skins/disc24.PNG":["skins.vl2"],"textures/skins/disc24.png":["yHDTextures2.0.vl2"],"textures/skins/disc25.PNG":["skins.vl2"],"textures/skins/disc25.png":["yHDTextures2.0.vl2"],"textures/skins/disc26.PNG":["skins.vl2"],"textures/skins/disc26.png":["yHDTextures2.0.vl2"],"textures/skins/disc27.PNG":["skins.vl2"],"textures/skins/disc27.png":["yHDTextures2.0.vl2"],"textures/skins/disc_muzzle.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/discshield2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/dox_stone.png":["TWL-MapPack.vl2"],"textures/skins/dox_wires.png":["TWL-MapPack.vl2"],"textures/skins/drawkward.plaque.png":["skins.vl2"],"textures/skins/ds.hmale_512.png":["skins.vl2"],"textures/skins/ds.lfemale_512.png":["skins.vl2"],"textures/skins/ds.lmale_512.png":["skins.vl2"],"textures/skins/ds.mfemale_512.png":["skins.vl2"],"textures/skins/ds.mmale_512.png":["skins.vl2"],"textures/skins/dsword.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/dsword.hmale.png":["skins.vl2"],"textures/skins/dsword.lfemale.png":["skins.vl2"],"textures/skins/dsword.lmale.png":["skins.vl2"],"textures/skins/dsword.mfemale.png":["skins.vl2"],"textures/skins/dsword.mmale.png":["skins.vl2"],"textures/skins/dsword.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/east.plaque.png":["skins.vl2"],"textures/skins/energy_blast.PNG":["skins.vl2"],"textures/skins/energy_blue_blink.ifl":["skins.vl2"],"textures/skins/energy_bolt.PNG":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/energy_bolt_aura.png":["skins.vl2"],"textures/skins/energy_bolt_front.png":["skins.vl2"],"textures/skins/energy_muzzle00.ifl":["skins.vl2"],"textures/skins/energy_side_muzzle00.ifl":["skins.vl2"],"textures/skins/energyb01.ifl":["skins.vl2"],"textures/skins/energyb01.png":["skins.vl2"],"textures/skins/energyb02.png":["skins.vl2"],"textures/skins/energyb03.png":["skins.vl2"],"textures/skins/energyb04.png":["skins.vl2"],"textures/skins/energyb05.png":["skins.vl2"],"textures/skins/energydis0000.ifl":["skins.vl2"],"textures/skins/energydis0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/energydis0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrg_frnt_muzl00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl06.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_frnt_muzl07.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl06.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrg_side_muzl07.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/enrgcore0000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgcore0009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/enrgpack_core.ifl":["skins.vl2"],"textures/skins/enrgpack_tubes.ifl":["skins.vl2"],"textures/skins/etcmodel02.plaque.png":["skins.vl2"],"textures/skins/flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/flaglight1.ifl":["skins.vl2"],"textures/skins/flaglight1.png":["skins.vl2"],"textures/skins/flaglight2.png":["skins.vl2"],"textures/skins/flaglight3.png":["skins.vl2"],"textures/skins/flaglight4.png":["skins.vl2"],"textures/skins/flaglight5.png":["skins.vl2"],"textures/skins/flaregreen.png":["skins.vl2"],"textures/skins/flarewhite.PNG":["skins.vl2"],"textures/skins/flyerflame1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcef5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric.ifl":["skins.vl2"],"textures/skins/forcefield_electric0.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric4.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_electric5.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn.ifl":["skins.vl2"],"textures/skins/forcefield_grn1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn4.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/forcefield_grn5.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/frankrizzo.plaque.png":["skins.vl2"],"textures/skins/generator.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/generic_scorch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/glow_red.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/goal_back.png":["TR2final105-client.vl2"],"textures/skins/goal_panel.png":["TR2final105-client.vl2"],"textures/skins/goal_side.png":["TR2final105-client.vl2"],"textures/skins/goal_top.png":["TR2final105-client.vl2"],"textures/skins/gold_goal_back.png":["TR2final105-client.vl2"],"textures/skins/gold_goal_side.png":["TR2final105-client.vl2"],"textures/skins/gold_goal_top.png":["TR2final105-client.vl2"],"textures/skins/gold_post.png":["TR2final105-client.vl2"],"textures/skins/goldcube.png":["TR2final105-client.vl2"],"textures/skins/gotmilk.plaque.png":["skins.vl2"],"textures/skins/green.hflag.png":["zflags.vl2"],"textures/skins/green00.ifl":["skins.vl2"],"textures/skins/green00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/greenMortar.ifl":["skins.vl2"],"textures/skins/green_blink.ifl":["skins.vl2"],"textures/skins/green_blink0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/green_blink4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/greenlight.ifl":["skins.vl2"],"textures/skins/grenade.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/grenade_flare.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/grenade_flash.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/grenade_projectile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hexabolic.plaque.png":["skins.vl2"],"textures/skins/horde.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/horde.hbioderm.png":["skins.vl2"],"textures/skins/horde.lbioderm.png":["skins.vl2"],"textures/skins/horde.mbioderm.png":["skins.vl2"],"textures/skins/horde.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hud_ret_bomber1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hud_ret_bomber2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hud_ret_bomber3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hunters.flag.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/hvybioflare.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/hvyjetpackflare.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare00.ifl":["skins.vl2"],"textures/skins/jetflare00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflare2.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside00.ifl":["skins.vl2"],"textures/skins/jetflareside00.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside01.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside02.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside03.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside04.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetflareside05.png":["skins.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/skins/jetpack.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jetpack_bio.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jetpackflare.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jetpackflare_bio.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets00.ifl":["skins.vl2"],"textures/skins/jets00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jets05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/jett.plaque.png":["skins.vl2"],"textures/skins/jetyellow.png":["skins.vl2"],"textures/skins/jimmy.plaque.png":["skins.vl2"],"textures/skins/kidneythief.plaque.png":["skins.vl2"],"textures/skins/leaf_bunch2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/leafydome.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/leafydome2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/light_blue_00.PNG":["skins.vl2"],"textures/skins/light_blue_01.PNG":["skins.vl2"],"textures/skins/light_blue_02.PNG":["skins.vl2"],"textures/skins/light_blue_03.PNG":["skins.vl2"],"textures/skins/light_blue_04.PNG":["skins.vl2"],"textures/skins/light_blue_generator.ifl":["skins.vl2"],"textures/skins/light_green01.PNG":["skins.vl2"],"textures/skins/light_green01.ifl":["skins.vl2"],"textures/skins/light_green02.PNG":["skins.vl2"],"textures/skins/light_green03.PNG":["skins.vl2"],"textures/skins/light_green04.PNG":["skins.vl2"],"textures/skins/light_green05.PNG":["skins.vl2"],"textures/skins/light_green06.PNG":["skins.vl2"],"textures/skins/light_red.ifl":["skins.vl2"],"textures/skins/light_red01.PNG":["skins.vl2"],"textures/skins/light_red02.png":["skins.vl2"],"textures/skins/light_red03.png":["skins.vl2"],"textures/skins/light_red04.png":["skins.vl2"],"textures/skins/light_red05.png":["skins.vl2"],"textures/skins/light_red06.png":["skins.vl2"],"textures/skins/light_red2.ifl":["skins.vl2"],"textures/skins/light_red3.ifl":["skins.vl2"],"textures/skins/lite_blue0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_blue4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_fusturt.ifl":["skins.vl2"],"textures/skins/lite_fusturt01.ifl":["skins.vl2"],"textures/skins/lite_green.ifl":["skins.vl2"],"textures/skins/lite_green0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_green4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_pack_cloak.ifl":["skins.vl2"],"textures/skins/lite_red.ifl":["skins.vl2"],"textures/skins/lite_red0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_red4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/lite_remoteTurret.ifl":["skins.vl2"],"textures/skins/lite_rpu_pack01.ifl":["skins.vl2"],"textures/skins/lite_rpu_pack02.ifl":["skins.vl2"],"textures/skins/lite_sh_pack01.ifl":["skins.vl2"],"textures/skins/lite_sh_pack02.ifl":["skins.vl2"],"textures/skins/lite_turmiss.ifl":["skins.vl2"],"textures/skins/lite_turmort.ifl":["skins.vl2"],"textures/skins/marineleaves.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/marker.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/maximus.plaque.png":["skins.vl2"],"textures/skins/mine.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mine_anti_air.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mine_anti_land.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/missile_flash.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/missing.plaque.png":["skins.vl2"],"textures/skins/mongo.plaque.png":["skins.vl2"],"textures/skins/mort000.ifl":["skins.vl2"],"textures/skins/mort000.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort001.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort002.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort003.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort004.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort005.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort006.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort007.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort008.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort009.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort010.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort011.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort012.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort013.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort014.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort015.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort016.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort017.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort018.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort019.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort020.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort021.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort022.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort023.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort024.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort025.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort026.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/mort027.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge00.ifl":["skins.vl2"],"textures/skins/newedge00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/newedge05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexg15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexgren.ifl":["skins.vl2"],"textures/skins/nexgren02.ifl":["skins.vl2"],"textures/skins/nexred.ifl":["skins.vl2"],"textures/skins/nexred00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred02.ifl":["skins.vl2"],"textures/skins/nexred02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/nexred15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/noise.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/olddawg.plaque.png":["skins.vl2"],"textures/skins/orange.ifl":["skins.vl2"],"textures/skins/orange00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/orange1.ifl":["skins.vl2"],"textures/skins/orphankazrak.plaque.png":["skins.vl2"],"textures/skins/pack_ammo.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_cloak.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_cloak2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_deploy_sensor_pulse.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_energy.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep.ifl":["skins.vl2"],"textures/skins/pack_rep01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_rep2.ifl":["skins.vl2"],"textures/skins/pack_rep_lite.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_repair.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_senjam.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_shield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_u_c00.png":["skins.vl2"],"textures/skins/pack_u_c01.png":["skins.vl2"],"textures/skins/pack_u_c02.png":["skins.vl2"],"textures/skins/pack_u_c03.png":["skins.vl2"],"textures/skins/pack_u_c04.png":["skins.vl2"],"textures/skins/pack_u_e.ifl":["skins.vl2"],"textures/skins/pack_u_e_lite.ifl":["skins.vl2"],"textures/skins/pack_u_e_lite00.png":["skins.vl2"],"textures/skins/pack_u_e_lite01.png":["skins.vl2"],"textures/skins/pack_u_e_lite02.png":["skins.vl2"],"textures/skins/pack_u_e_lite03.png":["skins.vl2"],"textures/skins/pack_u_e_lite04.png":["skins.vl2"],"textures/skins/pack_u_e_lite05.png":["skins.vl2"],"textures/skins/pack_u_e_lite06.png":["skins.vl2"],"textures/skins/pack_upgrade_cloaking.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_energy.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_reflection.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_repair.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_repulsor.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_satchel.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_satchel2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/pack_upgrade_shield.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma.ifl":["skins.vl2"],"textures/skins/plasma01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasma10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plasmaTurret.ifl":["skins.vl2"],"textures/skins/plasma_ammo.ifl":["skins.vl2"],"textures/skins/plasma_exhaust.ifl":["skins.vl2"],"textures/skins/plasma_muzzle.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex08.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex09.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex10.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex11.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex12.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex13.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex14.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex15.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex16.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex17.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex18.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex19.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex20.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex21.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex22.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plex23.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec00.ifl":["skins.vl2"],"textures/skins/plrec01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plrec07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsTur0a.ifl":["skins.vl2"],"textures/skins/plsam00.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam00.ifl":["skins.vl2"],"textures/skins/plsam01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam05.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam06.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam07.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam08.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam09.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam0a.ifl":["skins.vl2"],"textures/skins/plsam10.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam11.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam12.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam13.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam14.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam15.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam16.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam17.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam18.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam19.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam20.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam21.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam22.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam23.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam24.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam25.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam26.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam27.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam28.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam29.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam30.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam31.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam32.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam33.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam34.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam35.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam36.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam37.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam38.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam39.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsam40.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsamagun.ifl":["skins.vl2"],"textures/skins/plsmabolt01.ifl":["skins.vl2"],"textures/skins/plsmabolt01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsmabolt10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/plsre.ifl":["skins.vl2"],"textures/skins/pod1.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/porg2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/porg4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/programmers1.plaque.png":["skins.vl2"],"textures/skins/programmers2.plaque.png":["skins.vl2"],"textures/skins/purple00.ifl":["skins.vl2"],"textures/skins/purple00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple01.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple02.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple03.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/purple04.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/qix.plaque.png":["skins.vl2"],"textures/skins/raf.plaque.png":["skins.vl2"],"textures/skins/ratedz.plaque.png":["skins.vl2"],"textures/skins/red_blink.ifl":["skins.vl2"],"textures/skins/red_blink0.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/red_blink4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/repair_kit.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/repair_patch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/rickets.plaque.png":["skins.vl2"],"textures/skins/rusty.mmale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline.ifl":["skins.vl2"],"textures/skins/scanline1.PNG":["skins.vl2"],"textures/skins/scanline1.png":["yHDTextures2.0.vl2"],"textures/skins/scanline2.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline3.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline4.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline5.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/scanline6.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenframe.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic1.ifl":["skins.vl2"],"textures/skins/screenstatic1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/screenstatic5.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sensor_pulse_large.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sensor_pulse_med.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sentry.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/shark.plaque.png":["skins.vl2"],"textures/skins/shrikeflare2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/silver_post.png":["TR2final105-client.vl2"],"textures/skins/silvercube.png":["TR2final105-client.vl2"],"textures/skins/skeet.plaque.png":["skins.vl2"],"textures/skins/skin2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke.ifl":["skins.vl2"],"textures/skins/smoke00.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke01.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke02.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke03.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke04.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke05.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke06.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke07.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke08.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke09.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke10.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke11.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke12.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke13.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke14.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke15.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke16.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke17.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke18.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke19.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/smoke20.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sneaker.plaque.png":["skins.vl2"],"textures/skins/snowleopard.plaque.png":["skins.vl2"],"textures/skins/solarpanel.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/sparks00.ifl":["skins.vl2"],"textures/skins/stackable.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable1L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable1M.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable1S.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable2L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable2S.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable2m.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable3L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable3m.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable3s.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable4L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable4M.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable5L.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/stackable5m.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damage.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageL1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageL2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageL3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageM1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageM2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageM3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damageS4.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_damage_alpha.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_inventory.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_inventory_activate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_teleporter.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_teleporter_activate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/station_vpad.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_HMale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_LFemale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_LMale.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_base.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/statue_plaque.png":["skins.vl2"],"textures/skins/switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/switchbeam.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/swolf.flag.png":["skins.vl2","yHDTextures2.0.vl2","zflags.vl2"],"textures/skins/swolf.hmale.png":["skins.vl2"],"textures/skins/swolf.lfemale.png":["skins.vl2"],"textures/skins/swolf.lmale.png":["skins.vl2"],"textures/skins/swolf.mfemale.png":["skins.vl2"],"textures/skins/swolf.mmale.png":["skins.vl2"],"textures/skins/swolf.switch.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/swolf_hmale_512.png":["skins.vl2"],"textures/skins/swolf_lfemale_512.png":["skins.vl2"],"textures/skins/swolf_lmale_512.png":["skins.vl2"],"textures/skins/swolf_mfemale_512.png":["skins.vl2"],"textures/skins/swolf_mmale_512.png":["skins.vl2"],"textures/skins/symlink.plaque.png":["skins.vl2"],"textures/skins/todesritter.plaque.png":["skins.vl2"],"textures/skins/tomin8tor.plaque.png":["skins.vl2"],"textures/skins/tr2_flag.png":["TR2final105-client.vl2"],"textures/skins/tribes1.plaque.png":["skins.vl2"],"textures/skins/turret_InOut_deploy.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_assaultTank.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_base_large.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_belly.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_light_red.ifl":["skins.vl2"],"textures/skins/turret_remote.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/turret_sentry.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/twitch.plaque.png":["skins.vl2"],"textures/skins/uberbob.plaque.png":["skins.vl2"],"textures/skins/vaportrail.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_bomber1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_bomber2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_bomber3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_hpc1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_hpc2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_hpc3.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_air_scout.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_grav_tank_bodyside1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_grav_tank_bodyside2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_land_mpb1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_land_mpb2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vehicle_mpb_sensor_panelsON.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vending01.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/vending02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/skins/vpad_activate.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vpad_ambient.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/vpad_arm.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_chaingun.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_chaingun_ammocasing.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_disc.PNG":["skins.vl2"],"textures/skins/weapon_disc.png":["yHDTextures2.0.vl2"],"textures/skins/weapon_elf.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_energy.PNG":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_energy_vehicle.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_grenade_launcher.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_missile.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_missile_casement.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_mortar.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_plasma1.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_plasma2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_plasmathrower.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_repair.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_shocklance.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_shocklance_glow .png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_sniper.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/weapon_targeting.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/xorg2.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/skins/yellow.hflag.png":["zflags.vl2"],"textures/skins/yellow.png":["skins.vl2","yHDTextures2.0.vl2"],"textures/sky01.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky01/sback.png":["TWL2-MapPack.vl2"],"textures/sky01/sdown.png":["TWL2-MapPack.vl2"],"textures/sky01/sfront.png":["TWL2-MapPack.vl2"],"textures/sky01/sleft.png":["TWL2-MapPack.vl2"],"textures/sky01/sright.png":["TWL2-MapPack.vl2"],"textures/sky01/sup.png":["TWL2-MapPack.vl2"],"textures/sky03.dml":["TWL-MapPack.vl2"],"textures/sky03/TR1_Cloud1.png":["TWL-MapPack.vl2"],"textures/sky03/TR1_Cloud2.png":["TWL-MapPack.vl2"],"textures/sky03/fback.png":["TWL-MapPack.vl2"],"textures/sky03/fdown.png":["TWL-MapPack.vl2"],"textures/sky03/ffront.png":["TWL-MapPack.vl2"],"textures/sky03/fleft.png":["TWL-MapPack.vl2"],"textures/sky03/fright.png":["TWL-MapPack.vl2"],"textures/sky03/fup.png":["TWL-MapPack.vl2"],"textures/sky121.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky127.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky156.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky_badlands_cloudy.dml":["textures.vl2"],"textures/sky_badlands_starrynight.dml":["textures.vl2"],"textures/sky_beachblitz.dml":["TWL-MapPack.vl2"],"textures/sky_desert_blue.dml":["textures.vl2"],"textures/sky_desert_brown.dml":["textures.vl2"],"textures/sky_desert_starrynight.dml":["textures.vl2"],"textures/sky_ice_blue.dml":["textures.vl2"],"textures/sky_ice_cloak.dml":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sky_ice_starrynight.dml":["textures.vl2"],"textures/sky_lava_brown.dml":["textures.vl2"],"textures/sky_lava_starrynight.dml":["textures.vl2"],"textures/sky_lush_blue.dml":["textures.vl2"],"textures/sky_lush_morestars.dml":["textures.vl2"],"textures/sky_lush_starrynight.dml":["textures.vl2"],"textures/sky_volcanic_starrynight.dml":["textures.vl2"],"textures/small_circle.PNG":["textures.vl2"],"textures/small_cross.png":["textures.vl2"],"textures/small_diamond.png":["textures.vl2"],"textures/small_square.png":["textures.vl2"],"textures/small_triangle.png":["textures.vl2"],"textures/snowflake8x8.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/snowflakes.dml":["textures.vl2"],"textures/snowtest.dml":["textures.vl2"],"textures/space/TR1_Cloud1.png":["TWL-MapPack.vl2"],"textures/space/TR1_Cloud2.png":["TWL-MapPack.vl2"],"textures/space/xnight2_bk.png":["TWL-MapPack.vl2"],"textures/space/xnight2_dn.png":["TWL-MapPack.vl2"],"textures/space/xnight2_ft.png":["TWL-MapPack.vl2"],"textures/space/xnight2_lf.png":["TWL-MapPack.vl2"],"textures/space/xnight2_rt.png":["TWL-MapPack.vl2"],"textures/space/xnight2_up.png":["TWL-MapPack.vl2"],"textures/space_14.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_16.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_17.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_18.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_19.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_3.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/space_5.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/special/BlueImpact.PNG":["textures.vl2"],"textures/special/BlueImpact.png":["yHDTextures2.0.vl2"],"textures/special/ELFBeam.PNG":["textures.vl2"],"textures/special/ELFBeam.png":["yHDTextures2.0.vl2"],"textures/special/ELFLightning.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0000.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0002.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0004.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0006.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0008.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0010.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0012.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0014.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0016.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0018.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0020.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0022.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0024.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0026.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0028.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0030.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0032.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0034.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0036.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0038.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0040.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0042.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0044.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0046.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0048.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0050.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Explosion/Exp_0052.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/GameGrid.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/LensFlare/Flare00.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/LightningBlur.PNG":["textures.vl2"],"textures/special/LightningBlur.png":["yHDTextures2.0.vl2"],"textures/special/Shocklance_effect01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Shocklance_effect02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/bigSmoke.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_001.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_002.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_003.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_004.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_005.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_006.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_007.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_008.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_009.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_010.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_011.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/Smoke/smoke_012.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bigSpark.PNG":["textures.vl2"],"textures/special/bigSpark.png":["yHDTextures2.0.vl2"],"textures/special/blasterBolt.PNG":["textures.vl2","zblasterfix.vl2"],"textures/special/blasterBolt.png":["yHDTextures2.0.vl2"],"textures/special/blasterBoltCross.PNG":["textures.vl2","zblasterfix.vl2"],"textures/special/blasterBoltCross.png":["yHDTextures2.0.vl2"],"textures/special/blasterHit.PNG":["textures.vl2"],"textures/special/blasterHit.png":["yHDTextures2.0.vl2"],"textures/special/bluespark.PNG":["textures.vl2"],"textures/special/bluespark.png":["yHDTextures2.0.vl2"],"textures/special/bubbles.PNG":["textures.vl2"],"textures/special/bubbles.png":["yHDTextures2.0.vl2"],"textures/special/bullethole1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole5.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/bullethole6.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/chuteTexture.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloakTexture.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash5.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash6.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash7.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/cloudflash8.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/crescent3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/crescent4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/decal.dml":["textures.vl2"],"textures/special/droplet.PNG":["textures.vl2"],"textures/special/droplet.png":["yHDTextures2.0.vl2"],"textures/special/expFlare.PNG":["textures.vl2"],"textures/special/expFlare.png":["yHDTextures2.0.vl2"],"textures/special/flare.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/flare3.PNG":["textures.vl2"],"textures/special/flare3.png":["yHDTextures2.0.vl2"],"textures/special/flareSpark.PNG":["textures.vl2"],"textures/special/flareSpark.png":["yHDTextures2.0.vl2"],"textures/special/footprints/H_bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/H_male.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/L_bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/L_male.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/M_bioderm.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/footprints/M_male.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/generic_reflect.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/generic_scorch.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/glass.PNG":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/special/gradient.PNG":["textures.vl2"],"textures/special/gradient.png":["yHDTextures2.0.vl2"],"textures/special/grainy.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/jammermap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/jetExhaust02.PNG":["textures.vl2"],"textures/special/jetExhaust02.png":["yHDTextures2.0.vl2"],"textures/special/landSpikeBolt.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/landSpikeBoltCross.PNG":["textures.vl2"],"textures/special/landSpikeBoltCross.png":["yHDTextures2.0.vl2"],"textures/special/laserrip01.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip02.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip03.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip04.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip05.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip06.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip07.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip08.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/laserrip09.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lavadeath_1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lavadeath_2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lavareflect.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lightFalloffMono.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/lightning1blur.PNG":["textures.vl2"],"textures/special/lightning1blur.png":["yHDTextures2.0.vl2"],"textures/special/lightning1frame1.PNG":["textures.vl2"],"textures/special/lightning1frame1.png":["yHDTextures2.0.vl2"],"textures/special/lightning1frame2.PNG":["textures.vl2"],"textures/special/lightning1frame2.png":["yHDTextures2.0.vl2"],"textures/special/lightning1frame3.PNG":["textures.vl2"],"textures/special/lightning1frame3.png":["yHDTextures2.0.vl2"],"textures/special/lightning2blur.PNG":["textures.vl2"],"textures/special/lightning2blur.png":["yHDTextures2.0.vl2"],"textures/special/lightning2frame1.PNG":["textures.vl2"],"textures/special/lightning2frame1.png":["yHDTextures2.0.vl2"],"textures/special/lightning2frame2.PNG":["textures.vl2"],"textures/special/lightning2frame2.png":["yHDTextures2.0.vl2"],"textures/special/lightning2frame3.PNG":["textures.vl2"],"textures/special/lightning2frame3.png":["yHDTextures2.0.vl2"],"textures/special/nonlingradient.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/pulse.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/redbump2.PNG":["textures.vl2"],"textures/special/redbump2.png":["yHDTextures2.0.vl2"],"textures/special/redflare.png":["textures.vl2","yHDTextures2.0.vl2","zblasterfix.vl2"],"textures/special/shieldenvmap.PNG":["textures.vl2"],"textures/special/shieldenvmap.png":["yHDTextures2.0.vl2"],"textures/special/shieldmap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLanceZap.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLightning01.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLightning02.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shockLightning03.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shocklanceHit.PNG":["textures.vl2"],"textures/special/shocklanceHit.png":["yHDTextures2.0.vl2"],"textures/special/shockwave4.PNG":["textures.vl2"],"textures/special/shockwave4.png":["yHDTextures2.0.vl2"],"textures/special/shockwave5.PNG":["textures.vl2"],"textures/special/shockwave5.png":["yHDTextures2.0.vl2"],"textures/special/shrikeBolt.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/shrikeBoltCross.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/skyLightning.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/sniper00.PNG":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/spark00.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/stationGlow.PNG":["textures.vl2"],"textures/special/stationGlow.png":["yHDTextures2.0.vl2"],"textures/special/stationLight.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/stationLight2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/tracer00.PNG":["textures.vl2"],"textures/special/tracer00.png":["yHDTextures2.0.vl2"],"textures/special/tracercross.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/trigger.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/underwaterSpark.PNG":["textures.vl2"],"textures/special/underwaterSpark.png":["yHDTextures2.0.vl2"],"textures/special/water2.PNG":["textures.vl2"],"textures/special/water2.png":["yHDTextures2.0.vl2"],"textures/special/watertail1.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/watertail2.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/watertail3.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/watertail4.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/whiteAlpha0.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/whiteAlpha255.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/special/whiteNoAlpha.png":["textures.vl2","yHDTextures2.0.vl2"],"textures/stagnant_water.dml":["textures.vl2"],"textures/starrynite.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/sunnight.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/taco/taco.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/template.dml":["textures.vl2"],"textures/terrain.BadLands.DirtBumpy.dml":["textures.vl2"],"textures/terrain.BadLands.DirtChipped.dml":["textures.vl2"],"textures/terrain.BadLands.DirtYellow.dml":["textures.vl2"],"textures/terrain.BadLands.DirtYellowCracked.dml":["textures.vl2"],"textures/terrain.BadLands.RockBrown.dml":["textures.vl2"],"textures/terrain.BadLands.RockChipped.dml":["textures.vl2"],"textures/terrain.BadLands.RockCracked.dml":["textures.vl2"],"textures/terrain.DesertWorld.RockFractured.dml":["textures.vl2"],"textures/terrain.DesertWorld.RockSmooth.dml":["textures.vl2"],"textures/terrain.DesertWorld.Sand.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandBurnt.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandDark.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandOrange.dml":["textures.vl2"],"textures/terrain.DesertWorld.SandOxidized.dml":["textures.vl2"],"textures/terrain.FlatShade.Blue.dml":["textures.vl2"],"textures/terrain.FlatShade.Green.dml":["textures.vl2"],"textures/terrain.FlatShade.Purple.dml":["textures.vl2"],"textures/terrain.FlatShade.Red.dml":["textures.vl2"],"textures/terrain.FlatShade.White.dml":["textures.vl2"],"textures/terrain.FrequencyTest.dml":["textures.vl2"],"textures/terrain.IceWorld.Ice.dml":["textures.vl2"],"textures/terrain.IceWorld.RockBlue.dml":["textures.vl2"],"textures/terrain.IceWorld.Snow.dml":["textures.vl2"],"textures/terrain.IceWorld.SnowIce.dml":["textures.vl2"],"textures/terrain.IceWorld.SnowRock.dml":["textures.vl2"],"textures/terrain.LavaWorld.Crust.dml":["textures.vl2"],"textures/terrain.LavaWorld.LavaRockHot.dml":["textures.vl2"],"textures/terrain.LavaWorld.MuddyAsh.dml":["textures.vl2"],"textures/terrain.LushWorld.DirtMossy.dml":["textures.vl2"],"textures/terrain.LushWorld.GrassDark.dml":["textures.vl2"],"textures/terrain.LushWorld.GrassLight.dml":["textures.vl2"],"textures/terrain.LushWorld.GrassMixed.dml":["textures.vl2"],"textures/terrain.LushWorld.Lakebed.dml":["textures.vl2"],"textures/terrain.LushWorld.RockLight.dml":["textures.vl2"],"textures/terrain.LushWorld.RockMossy.dml":["textures.vl2"],"textures/terrain.Outline.dml":["textures.vl2"],"textures/terrain.mask.dml":["textures.vl2"],"textures/terrain/Badlands.DirtBumpy.png":["textures.vl2"],"textures/terrain/Badlands.DirtChipped.png":["textures.vl2"],"textures/terrain/Badlands.DirtYellow.png":["textures.vl2"],"textures/terrain/Badlands.DirtYellowCracked.png":["textures.vl2"],"textures/terrain/Badlands.RockBrown.png":["textures.vl2"],"textures/terrain/Badlands.RockChipped.png":["textures.vl2"],"textures/terrain/Badlands.RockCracked.png":["textures.vl2"],"textures/terrain/Badlands.Rockcrackedcopper.png":["textures.vl2"],"textures/terrain/Bleed.GrassLight.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Bleed.GrassMixed.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Bleed.RockMossy.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Bleed.RockSmooth.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CB1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CB2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CBgravel.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/CBtrails.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Default.png":["textures.vl2"],"textures/terrain/DesertWorld.RockFractured.png":["textures.vl2"],"textures/terrain/DesertWorld.RockSmooth.png":["textures.vl2"],"textures/terrain/DesertWorld.Sand.png":["textures.vl2"],"textures/terrain/DesertWorld.SandBurnt.png":["textures.vl2"],"textures/terrain/DesertWorld.SandDark.png":["textures.vl2"],"textures/terrain/DesertWorld.SandOrange.png":["textures.vl2"],"textures/terrain/DesertWorld.SandOxidized.png":["textures.vl2"],"textures/terrain/DesertWorld.TR2Sand.png":["TR2final105-client.vl2"],"textures/terrain/Eep.MoonDirt.PNG":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Eep.MoonDirtDark.PNG":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_BeachBlitzSE_lushworld.beachsand.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_CrownSE_lushworld.beachsand.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_EpicratesDeluxeSE_tropical1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_EpicratesDeluxeSE_ugly2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoGlacier.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoRock.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoRock2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_NeveSE_NyctoSnow.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/Euro4_PuliVeivariSE_NyctoGlacier.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/GMD.DarkRock.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/terrain/GMD.DirtMossy.png":["Classic_maps_v1.vl2"],"textures/terrain/GMD.GrassLight.png":["Classic_maps_v1.vl2"],"textures/terrain/GMD.GrassMixed.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/terrain/GMD.LightSand.png":["Classic_maps_v1.vl2","TR2final105-client.vl2"],"textures/terrain/GMD.SandBurnt.png":["Classic_maps_v1.vl2"],"textures/terrain/IceWorld.Ice.png":["textures.vl2"],"textures/terrain/IceWorld.RockBlue.png":["textures.vl2"],"textures/terrain/IceWorld.Snow.png":["textures.vl2"],"textures/terrain/IceWorld.SnowIce.png":["textures.vl2"],"textures/terrain/IceWorld.SnowRock.png":["textures.vl2"],"textures/terrain/LavaWorld.Crust.png":["textures.vl2"],"textures/terrain/LavaWorld.LavaRockHot.png":["textures.vl2"],"textures/terrain/LavaWorld.MuddyAsh.png":["textures.vl2"],"textures/terrain/LavaWorld.RockBlack.PNG":["textures.vl2"],"textures/terrain/LegendsLightSand.png":["TWL-MapPack.vl2"],"textures/terrain/LushWorld.DirtMossy.png":["textures.vl2"],"textures/terrain/LushWorld.GrassDark.png":["textures.vl2"],"textures/terrain/LushWorld.GrassLight.png":["textures.vl2"],"textures/terrain/LushWorld.GrassMixed.png":["textures.vl2"],"textures/terrain/LushWorld.Lakebed.png":["textures.vl2"],"textures/terrain/LushWorld.RockLight.png":["textures.vl2"],"textures/terrain/LushWorld.RockMossy.png":["textures.vl2"],"textures/terrain/LushWorld.TR2DirtMossy.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2GrassDark.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2GrassLight.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2GrassMixed.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2RockLight.png":["TR2final105-client.vl2"],"textures/terrain/LushWorld.TR2RockMossy.png":["TR2final105-client.vl2"],"textures/terrain/NyctoGlacier.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/NyctoRock.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/NyctoRock2.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/NyctoSnow.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/RockLight.png":["TWL-MapPack.vl2"],"textures/terrain/TRIgreystone10.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIgreystone7.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIlava_rock.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIstone_chip.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/TRIsub_sand.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/abbbb.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/acccc.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/adesert_cracks_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/adesert_sand2_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/aeee.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/brown_Dirt02.png":["TWL-MapPack.vl2"],"textures/terrain/brown_Dirt05.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/brown_DirtRock01.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_alien_crackedsand.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_alien_sand.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/cc_sand4.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/desert_cracks_s.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/desert_sand_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/grass_autumn_red_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/grass_ground_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/green_GrassRock005.png":["TWL-MapPack.vl2"],"textures/terrain/green_SnowyGrass001.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/greenrock21.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/infbutch_Rock02.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/island_sand2_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/island_sand_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_felsen1.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_felsen2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_grass.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schnee.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schnee4.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schneefelsen.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schneefelsen2.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/kab_schneefelsen3.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lava_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lava_mars_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lushworld.beachsand.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/lushworld.lakesand.png":["Classic_maps_v1.vl2"],"textures/terrain/mmd-1.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mmd-2.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mmd-3.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mmd-5.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/moss_ground_d.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/mxrock0.png":["TWL-MapPack.vl2"],"textures/terrain/mxrock2tu.png":["TWL-MapPack.vl2"],"textures/terrain/mxrock2tv.png":["TWL-MapPack.vl2"],"textures/terrain/ril.darkrock.png":["Classic_maps_v1.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/ril.darkrock1.png":["Classic_maps_v1.vl2"],"textures/terrain/rilk.shingledrock.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/rilke.sand.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/rockwall.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/seawaterfull2.PNG":["TR2final105-client.vl2"],"textures/terrain/snow2_s.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_a0.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_a2.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_brownRock00.png":["TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/snow_grass001.png":["TWL-MapPack.vl2"],"textures/terrain/snow_rock_5.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tes_mystery1.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tes_mystery2.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tes_test.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/tropical1.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/ugly2.png":["TWL-MapPack.vl2","zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/terrain/wateregypt1.PNG":["TR2final105-client.vl2"],"textures/terrain/watr-icyblue2.PNG":["TR2final105-client.vl2"],"textures/terrainTiles/Frequency1.png":["textures.vl2"],"textures/terrainTiles/Frequency2.png":["textures.vl2"],"textures/terrainTiles/Frequency3.png":["textures.vl2"],"textures/terrainTiles/Frequency4.png":["textures.vl2"],"textures/terrainTiles/Frequency5.png":["textures.vl2"],"textures/terrainTiles/Frequency6.png":["textures.vl2"],"textures/terrainTiles/SANDDK1.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK2.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK3.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK4.PNG":["textures.vl2"],"textures/terrainTiles/SANDDK5.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG1.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG2.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG3.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG4.PNG":["textures.vl2"],"textures/terrainTiles/SANDREG5.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt1.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt2.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt3.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt4.PNG":["textures.vl2"],"textures/terrainTiles/SandBrnt5.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid1.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid2.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid3.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid4.PNG":["textures.vl2"],"textures/terrainTiles/SandOxid5.PNG":["textures.vl2"],"textures/terrainTiles/blue.png":["textures.vl2"],"textures/terrainTiles/crust1.png":["textures.vl2"],"textures/terrainTiles/crust2.png":["textures.vl2"],"textures/terrainTiles/crust3.png":["textures.vl2"],"textures/terrainTiles/crust4.png":["textures.vl2"],"textures/terrainTiles/crust5.png":["textures.vl2"],"textures/terrainTiles/crust6.png":["textures.vl2"],"textures/terrainTiles/drtBumpy.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy01.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy02.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy03.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy04.PNG":["textures.vl2"],"textures/terrainTiles/drtBumpy05.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped01.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped02.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped03.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped04.PNG":["textures.vl2"],"textures/terrainTiles/drtChipped05.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo01.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo02.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo03.PNG":["textures.vl2"],"textures/terrainTiles/drtYelo04.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk0.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk01.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk02.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk03.PNG":["textures.vl2"],"textures/terrainTiles/drtYeloCrk04.PNG":["textures.vl2"],"textures/terrainTiles/grassDk1.PNG":["textures.vl2"],"textures/terrainTiles/grassDk2.PNG":["textures.vl2"],"textures/terrainTiles/grassDk3.PNG":["textures.vl2"],"textures/terrainTiles/grassDk4.PNG":["textures.vl2"],"textures/terrainTiles/grassDk5.PNG":["textures.vl2"],"textures/terrainTiles/grassDk6.PNG":["textures.vl2"],"textures/terrainTiles/grassLt1.PNG":["textures.vl2"],"textures/terrainTiles/grassLt2.PNG":["textures.vl2"],"textures/terrainTiles/grassLt3.PNG":["textures.vl2"],"textures/terrainTiles/grassLt4.PNG":["textures.vl2"],"textures/terrainTiles/grassLt5.PNG":["textures.vl2"],"textures/terrainTiles/grassMix1.PNG":["textures.vl2"],"textures/terrainTiles/grassMix2.PNG":["textures.vl2"],"textures/terrainTiles/grassMix3.PNG":["textures.vl2"],"textures/terrainTiles/grassMix4.PNG":["textures.vl2"],"textures/terrainTiles/grassMix5.PNG":["textures.vl2"],"textures/terrainTiles/grassMix6.PNG":["textures.vl2"],"textures/terrainTiles/grassMix7.PNG":["textures.vl2"],"textures/terrainTiles/green.png":["textures.vl2"],"textures/terrainTiles/ice01.png":["textures.vl2"],"textures/terrainTiles/ice02.png":["textures.vl2"],"textures/terrainTiles/ice03.png":["textures.vl2"],"textures/terrainTiles/ice04.png":["textures.vl2"],"textures/terrainTiles/ice05.png":["textures.vl2"],"textures/terrainTiles/ice06.png":["textures.vl2"],"textures/terrainTiles/ice07.png":["textures.vl2"],"textures/terrainTiles/ice08.png":["textures.vl2"],"textures/terrainTiles/ice09.png":["textures.vl2"],"textures/terrainTiles/ice10.png":["textures.vl2"],"textures/terrainTiles/icesnow1.png":["textures.vl2"],"textures/terrainTiles/icesnow2.png":["textures.vl2"],"textures/terrainTiles/icesnow3.png":["textures.vl2"],"textures/terrainTiles/icesnow4.png":["textures.vl2"],"textures/terrainTiles/icesnow5.png":["textures.vl2"],"textures/terrainTiles/icesnow6.png":["textures.vl2"],"textures/terrainTiles/lavarockhot1.png":["textures.vl2"],"textures/terrainTiles/lavarockhot2.png":["textures.vl2"],"textures/terrainTiles/lavarockhot3.png":["textures.vl2"],"textures/terrainTiles/lavarockhot4.png":["textures.vl2"],"textures/terrainTiles/lavarockhot5.png":["textures.vl2"],"textures/terrainTiles/mask.0001.png":["textures.vl2"],"textures/terrainTiles/mask.0010.png":["textures.vl2"],"textures/terrainTiles/mask.0011.png":["textures.vl2"],"textures/terrainTiles/mask.0100.png":["textures.vl2"],"textures/terrainTiles/mask.0101.png":["textures.vl2"],"textures/terrainTiles/mask.0110.png":["textures.vl2"],"textures/terrainTiles/mask.0111.png":["textures.vl2"],"textures/terrainTiles/molten1.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt1.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt2.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt3.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt4.PNG":["textures.vl2"],"textures/terrainTiles/mossDirt5.PNG":["textures.vl2"],"textures/terrainTiles/mossRock1.PNG":["textures.vl2"],"textures/terrainTiles/mossRock2.PNG":["textures.vl2"],"textures/terrainTiles/mossRock3.PNG":["textures.vl2"],"textures/terrainTiles/mossRock4.PNG":["textures.vl2"],"textures/terrainTiles/mossRock5.PNG":["textures.vl2"],"textures/terrainTiles/muddyash1.PNG":["textures.vl2"],"textures/terrainTiles/muddyash2.PNG":["textures.vl2"],"textures/terrainTiles/muddyash3.PNG":["textures.vl2"],"textures/terrainTiles/muddyash4.PNG":["textures.vl2"],"textures/terrainTiles/muddyash5.PNG":["textures.vl2"],"textures/terrainTiles/muddyash6.PNG":["textures.vl2"],"textures/terrainTiles/outline.png":["textures.vl2"],"textures/terrainTiles/purple.png":["textures.vl2"],"textures/terrainTiles/red.png":["textures.vl2"],"textures/terrainTiles/rockBrCrak.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak01.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak02.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak03.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak04.PNG":["textures.vl2"],"textures/terrainTiles/rockBrCrak05.PNG":["textures.vl2"],"textures/terrainTiles/rockLt1.PNG":["textures.vl2"],"textures/terrainTiles/rockLt2.PNG":["textures.vl2"],"textures/terrainTiles/rockLt3.PNG":["textures.vl2"],"textures/terrainTiles/rockLt4.PNG":["textures.vl2"],"textures/terrainTiles/rockLt5.PNG":["textures.vl2"],"textures/terrainTiles/rockblue.png":["textures.vl2"],"textures/terrainTiles/rockblue1.png":["textures.vl2"],"textures/terrainTiles/rockblue2.png":["textures.vl2"],"textures/terrainTiles/rockblue3.png":["textures.vl2"],"textures/terrainTiles/rockblue4.png":["textures.vl2"],"textures/terrainTiles/rockblue5.png":["textures.vl2"],"textures/terrainTiles/rockblue6.png":["textures.vl2"],"textures/terrainTiles/rockbrown.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown01.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown02.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown03.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown04.PNG":["textures.vl2"],"textures/terrainTiles/rockbrown05.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd01.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd02.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd03.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd04.PNG":["textures.vl2"],"textures/terrainTiles/rockchipd05.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak1.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak2.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak3.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak4.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak5.PNG":["textures.vl2"],"textures/terrainTiles/rockcrak6.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth1.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth2.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth3.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth4.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth5.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth6.PNG":["textures.vl2"],"textures/terrainTiles/rocksmth6x.PNG":["textures.vl2"],"textures/terrainTiles/sandorng1.PNG":["textures.vl2"],"textures/terrainTiles/sandorng2.PNG":["textures.vl2"],"textures/terrainTiles/sandorng3.PNG":["textures.vl2"],"textures/terrainTiles/sandorng4.PNG":["textures.vl2"],"textures/terrainTiles/sandorng5.PNG":["textures.vl2"],"textures/terrainTiles/seaLt1.PNG":["textures.vl2"],"textures/terrainTiles/seaLt2.PNG":["textures.vl2"],"textures/terrainTiles/seaLt3.PNG":["textures.vl2"],"textures/terrainTiles/seaLt4.PNG":["textures.vl2"],"textures/terrainTiles/seaLt5.PNG":["textures.vl2"],"textures/terrainTiles/snow1.png":["textures.vl2"],"textures/terrainTiles/snow2.png":["textures.vl2"],"textures/terrainTiles/snow3.png":["textures.vl2"],"textures/terrainTiles/snow4.png":["textures.vl2"],"textures/terrainTiles/snow5.png":["textures.vl2"],"textures/terrainTiles/snow6.png":["textures.vl2"],"textures/terrainTiles/snowrock1.png":["textures.vl2"],"textures/terrainTiles/snowrock2.png":["textures.vl2"],"textures/terrainTiles/snowrock3.png":["textures.vl2"],"textures/terrainTiles/snowrock4.png":["textures.vl2"],"textures/terrainTiles/snowrock5.png":["textures.vl2"],"textures/terrainTiles/snowrock6.png":["textures.vl2"],"textures/terrainTiles/white.png":["textures.vl2"],"textures/tesla.dml":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_bk.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_dn.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_fr.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_lf.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_rt.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/tesla/skies/teslaski_v5_up.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_DN.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_bk.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_fr.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_lf.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_rt.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/teslaski_v5_up.png":["TWL-MapPack.vl2","TWL2-MapPack.vl2"],"textures/texticons/Cred_Logo1.png":["textures.vl2"],"textures/texticons/Cred_logo5.png":["textures.vl2"],"textures/texticons/Flag_Beagle.jpg":["textures.vl2"],"textures/texticons/Flag_Bioderm.jpg":["textures.vl2"],"textures/texticons/Flag_DSword.jpg":["textures.vl2"],"textures/texticons/Flag_Phoenix.jpg":["textures.vl2"],"textures/texticons/Flag_Starwolf.jpg":["textures.vl2"],"textures/texticons/Flag_T2.jpg":["textures.vl2"],"textures/texticons/Heavy.jpg":["textures.vl2"],"textures/texticons/Logo_small_DSword.jpg":["textures.vl2"],"textures/texticons/Logo_small_Inferno.jpg":["textures.vl2"],"textures/texticons/Logo_small_Phoenix.jpg":["textures.vl2"],"textures/texticons/Logo_small_Starwolf.jpg":["textures.vl2"],"textures/texticons/Logo_small_Storm.jpg":["textures.vl2"],"textures/texticons/Logo_small_beagle.jpg":["textures.vl2"],"textures/texticons/Logo_small_bioderm.jpg":["textures.vl2"],"textures/texticons/TC_logo1.bm8":["T2csri.vl2"],"textures/texticons/TC_logo1.png":["T2csri.vl2"],"textures/texticons/bullet_1.png":["textures.vl2"],"textures/texticons/bullet_2.png":["textures.vl2"],"textures/texticons/dpub/DPUB_logo.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_BEthinking.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Beer.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Dermfused.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Spook.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Turkey.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Xmas.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/dpub/DPUB_logo_Xoxo.png":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/texticons/mute_speaker.png":["textures.vl2"],"textures/texticons/sidebar1.jpg":["textures.vl2"],"textures/texticons/sidebar2.jpg":["textures.vl2"],"textures/texticons/sidebar3.jpg":["textures.vl2"],"textures/texticons/sys_op_eye.png":["textures.vl2"],"textures/texticons/twb/twb_BE_FLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_FMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_MLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_BE_MMed.JPG":["textures.vl2"],"textures/texticons/twb/twb_Bioderm.jpg":["textures.vl2"],"textures/texticons/twb/twb_Bioderm_Light.jpg":["textures.vl2"],"textures/texticons/twb/twb_Bioderm_Medium.jpg":["textures.vl2"],"textures/texticons/twb/twb_Blaster.jpg":["textures.vl2"],"textures/texticons/twb/twb_BloodEagle.jpg":["textures.vl2"],"textures/texticons/twb/twb_Chaingun.jpg":["textures.vl2"],"textures/texticons/twb/twb_DS_FLight.JPG":["textures.vl2"],"textures/texticons/twb/twb_DS_Fmed.jpg":["textures.vl2"],"textures/texticons/twb/twb_DS_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_DS_MMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_DiamondSword.JPG":["textures.vl2"],"textures/texticons/twb/twb_Elfprojector.jpg":["textures.vl2"],"textures/texticons/twb/twb_Fusionmortar.jpg":["textures.vl2"],"textures/texticons/twb/twb_Grenadelauncher.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_FLight.JPG":["textures.vl2"],"textures/texticons/twb/twb_HR_FMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_MLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_HR_MMed.JPG":["textures.vl2"],"textures/texticons/twb/twb_Harbingers.JPG":["textures.vl2"],"textures/texticons/twb/twb_Havoc.JPG":["textures.vl2"],"textures/texticons/twb/twb_Laserrifle.jpg":["textures.vl2"],"textures/texticons/twb/twb_Lineup.jpg":["textures.vl2"],"textures/texticons/twb/twb_Missilelauncher.jpg":["textures.vl2"],"textures/texticons/twb/twb_Plasmarifle.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_FLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_FMedium.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_Heavy.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_MLight.jpg":["textures.vl2"],"textures/texticons/twb/twb_SW_MMed.jpg":["textures.vl2"],"textures/texticons/twb/twb_Shrike.jpg":["textures.vl2"],"textures/texticons/twb/twb_Spinfusor.jpg":["textures.vl2"],"textures/texticons/twb/twb_Starwolves.JPG":["textures.vl2"],"textures/texticons/twb/twb_TRIBES2.jpg":["textures.vl2"],"textures/texticons/twb/twb_Thundersword.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_02.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_04.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_05.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_06.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_08.jpg":["textures.vl2"],"textures/texticons/twb/twb_action_10.jpg":["textures.vl2"],"textures/texticons/twb/twb_blowngen_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_inferno_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_inferno_02.jpg":["textures.vl2"],"textures/texticons/twb/twb_inferno_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_lakedebris_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_lakedebris_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_shocklance.jpg":["textures.vl2"],"textures/texticons/twb/twb_soclose.jpg":["textures.vl2"],"textures/texticons/twb/twb_starwolf_fem.jpg":["textures.vl2"],"textures/texticons/twb/twb_starwolf_shrike.jpg":["textures.vl2"],"textures/texticons/twb/twb_wateraction_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_waterdemise_01.jpg":["textures.vl2"],"textures/texticons/twb/twb_waterdemise_03.jpg":["textures.vl2"],"textures/texticons/twb/twb_waterdemise_04.jpg":["textures.vl2"],"textures/texticons/twb/twb_woohoo_01.jpg":["textures.vl2"],"textures/tn_logo.png":["T2csri.vl2"],"textures/tyre.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/v5planet/skies/Starfallen_BK.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_FR.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_LF.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_RT.png":["Classic_maps_v1.vl2"],"textures/v5planet/skies/Starfallen_UP.png":["Classic_maps_v1.vl2"],"textures/violet.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/winterskyday.dml":["zAddOnsVL2s/zDiscord-Map-Pack-4.7.1.vl2"],"textures/xnight.dml":["TWL-MapPack.vl2"],"tournament/browser.cs":["tournamentNetClient2.vl2"],"tournament/login.cs":["tournamentNetClient2.vl2"],"tournament/settings.cs":["tournamentNetClient2.vl2"],"zz_classic_client_v4.txt":["zz_Classic_client_v1.vl2"]}');function c(){return Object.keys(o).sort()}var x=t(5339),_=t(6538),g=t.n(_);let k=/^ (DisplayName|MissionTypes) = (.+)$/,m=/^--- ([A-Z ]+) BEGIN ---$/,h=/^--- ([A-Z ]+) END ---$/;function T(s,e){return s.properties.find(s=>s.target.name===e)}function f(s){var e,t;let[i,r,a]=(null!=(t=null==(e=T(s,"position"))?void 0:e.value)?t:"0 0 0").split(" ").map(s=>parseFloat(s));return[i,a,r]}function L(s){var e,t;let[i,r,a]=(null!=(t=null==(e=T(s,"scale"))?void 0:e.value)?t:"1 1 1").split(" ").map(s=>parseFloat(s));return[i,a,r]}function D(s){var e,t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],[r,a,l,n]=(null!=(t=null==(e=T(s,"rotation"))?void 0:e.value)?t:"1 0 0 0").split(" ").map(s=>parseFloat(s));if(!i)return new x.PTz().setFromAxisAngle(new x.Pq0(r,l,-a),Math.PI/180*n);{let s=new x.PTz().setFromAxisAngle(new x.Pq0(a,l,r),-(Math.PI/180*n));return new x.PTz().setFromAxisAngle(new x.Pq0(0,1,0),Math.PI/2).multiply(s)}}let b="/t2-mapper",P="".concat(b,"/base/");function y(s,e){let t;s=function(s){if(o[s])return s;let e=c(),t=s.toLowerCase(),i=e.find(s=>s.toLowerCase()===t);if(i)return i;let r=s.replace(/\d+(\.(png))$/i,"$1"),a=r.toLowerCase();if(r!==s){let s=e.find(s=>s.toLowerCase()===a);if(s)return s}if(s.startsWith("textures/")){let s=e.find(s=>s.replace(/^(textures\/)((lush|desert|badlands|lava|ice|jaggedclaw|terrainTiles)\/)/,"$1").toLowerCase()===t);if(s)return s}return s}(s);try{t=function(s){let e=o[s];if(e&&e.length>0)return e[e.length-1];throw Error("Resource not found in manifest: ".concat(s))}(s)}catch(s){if(e)return e;throw s}return t?"".concat(P,"@vl2/").concat(t,"/").concat(s):"".concat(P).concat(s)}async function M(s){let e=y("textures/".concat(s)),t=await fetch(e);return(await t.text()).split(/(?:\r\n|\n|\r)/).map(s=>"textures/".concat(s.trim().replace(/\.png$/i,""),".png"))}async function z(s){let e=await fetch(y("missions/".concat(s,".mis")));return function(s){var e,t,i,r,a,l,n,u;s=s.replace(/(\/\/--- OBJECT WRITE END ---\s+)(?:.|[\r\n])*$/,"$1");let v=/(\/\/--- OBJECT WRITE BEGIN ---\s+)/.exec(s),d=/[\r\n]new SimGroup/.exec(s);s=s.slice(0,v.index+v[1].length)+s.slice(d.index),v=/(\/\/--- OBJECT WRITE BEGIN ---\s+)/.exec(s);let p=/(\/\/--- MISSION STRING END ---\s+)/.exec(s);p&&(s=s.slice(0,p.index+p[1].length)+s.slice(v.index));let o=g().parse(s),c={name:null,definitions:[]},x={},_=[];for(let s of o)if("comment"===s.type){let e=function(s){let e;return(e=s.match(m))?{type:"sectionBegin",name:e[1]}:(e=s.match(h))?{type:"sectionEnd",name:e[1]}:(e=s.match(k))?{type:"definition",identifier:e[1],value:e[2]}:null}(s.text);if(e)switch(e.type){case"definition":c.name?c.definitions.push(s):x[e.identifier]=e.value;break;case"sectionEnd":if(e.name!==c.name)throw Error("Ending unmatched section!");(c.name||c.definitions.length)&&_.push(c),c={name:null,definitions:[]};break;case"sectionBegin":if(c.name)throw Error("Already in a section!");(c.name||c.definitions.length)&&_.push(c),c={name:e.name,definitions:[]}}else c.definitions.push(s)}else c.definitions.push(s);return(c.name||c.definitions.length)&&_.push(c),{displayName:null!=(a=x.DisplayName)?a:null,missionTypes:null!=(l=null==(e=x.MissionTypes)?void 0:e.split(" "))?l:[],missionQuote:null!=(n=null==(t=_.find(s=>"MISSION QUOTE"===s.name))?void 0:t.definitions.filter(s=>"comment"===s.type).map(s=>s.text).join("\n"))?n:null,missionString:null!=(u=null==(i=_.find(s=>"MISSION STRING"===s.name))?void 0:i.definitions.filter(s=>"comment"===s.type).map(s=>s.text).join("\n"))?u:null,objects:null==(r=_.find(s=>"OBJECT WRITE"===s.name))?void 0:r.definitions.filter(s=>"instance"===s.type).map(s=>(function s(e){return{className:e.className,instanceName:e.instanceName,properties:e.body.filter(s=>"definition"===s.type).map(s=>{switch(s.value.type){case"string":case"number":case"boolean":return{target:s.target,value:s.value.value};case"reference":return{target:s.target,value:s.value};default:throw Error("Unhandled value type: ".concat(s.target.name," = ").concat(s.value.type))}}),children:e.body.filter(s=>"instance"===s.type).map(e=>s(e))}})(s)),globals:_.filter(s=>!s.name).flatMap(s=>s.definitions.filter(s=>"definition"===s.type))}}(await e.text())}async function w(s){let e=await fetch(y("terrains/".concat(s)));return function(s){let e=new DataView(s),t=0,i=e.getUint8(t++),r=new Uint16Array(65536),a=[],l=s=>{let i="";for(let r=0;r0&&a.push(r)}let n=[];for(let s of a){let s=new Uint8Array(65536);for(let i=0;i<65536;i++){var u=e.getUint8(t++);s[i]=u}n.push(s)}return{version:i,textureNames:a,heightMap:r,alphaMaps:n}}(await e.arrayBuffer())}var W=t(5951);function H(s){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[1,1];return s.wrapS=s.wrapT=x.GJx,s.colorSpace=x.er$,s.repeat.set(...e),s.flipY=!1,s.anisotropy=16,s.generateMipmaps=!0,s.minFilter=x.$_I,s.magFilter=x.k6q,s.needsUpdate=!0,s}function A(s){let{displacementMap:e,visibilityMask:t,textureNames:i,alphaMaps:r}=s,a=(0,W.zo)(i.map(s=>{var e;return e=(e=s).replace(/^terrain\./,""),y("textures/terrain/".concat(e,".png"),"".concat(b,"/black.png"))}),s=>{s.forEach(s=>H(s))}),u=(0,n.useMemo)(()=>r.map(s=>(function(s){let e=new x.GYF(s,256,256,x.VT0,x.OUM);return e.colorSpace=x.jf0,e.wrapS=e.wrapT=x.GJx,e.generateMipmaps=!1,e.minFilter=x.k6q,e.magFilter=x.k6q,e.needsUpdate=!0,e})(s)),[r]),v=(0,n.useMemo)(()=>({0:32,1:32,2:32,3:32,4:32,5:32}),[]),d=(0,n.useCallback)(s=>{!function(s){let{shader:e,baseTextures:t,alphaTextures:i,visibilityMask:r,tiling:a}=s,l=t.length;if(t.forEach((s,t)=>{e.uniforms["albedo".concat(t)]={value:s}}),i.forEach((s,t)=>{t>0&&(e.uniforms["mask".concat(t)]={value:s})}),r&&(e.uniforms.visibilityMask={value:r}),t.forEach((s,t)=>{var i;e.uniforms["tiling".concat(t)]={value:null!=(i=a[t])?i:32}}),e.fragmentShader="\nuniform sampler2D albedo0;\nuniform sampler2D albedo1;\nuniform sampler2D albedo2;\nuniform sampler2D albedo3;\nuniform sampler2D albedo4;\nuniform sampler2D albedo5;\nuniform sampler2D mask1;\nuniform sampler2D mask2;\nuniform sampler2D mask3;\nuniform sampler2D mask4;\nuniform sampler2D mask5;\nuniform float tiling0;\nuniform float tiling1;\nuniform float tiling2;\nuniform float tiling3;\nuniform float tiling4;\nuniform float tiling5;\n".concat(r?"uniform sampler2D visibilityMask;":"","\n")+e.fragmentShader,r){let s="#include ";e.fragmentShader=e.fragmentShader.replace(s,"".concat(s,"\n // Early discard for invisible areas (before fog/lighting)\n float visibility = texture2D(visibilityMask, vMapUv).r;\n if (visibility < 0.5) {\n discard;\n }\n "))}e.fragmentShader=e.fragmentShader.replace("#include ","\n // Sample base albedo layers (sRGB textures auto-decoded to linear)\n vec2 baseUv = vMapUv;\n vec3 c0 = texture2D(albedo0, baseUv * vec2(tiling0)).rgb;\n ".concat(l>1?"vec3 c1 = texture2D(albedo1, baseUv * vec2(tiling1)).rgb;":"","\n ").concat(l>2?"vec3 c2 = texture2D(albedo2, baseUv * vec2(tiling2)).rgb;":"","\n ").concat(l>3?"vec3 c3 = texture2D(albedo3, baseUv * vec2(tiling3)).rgb;":"","\n ").concat(l>4?"vec3 c4 = texture2D(albedo4, baseUv * vec2(tiling4)).rgb;":"","\n ").concat(l>5?"vec3 c5 = texture2D(albedo5, baseUv * vec2(tiling5)).rgb;":"","\n\n // Sample linear masks (use R channel)\n float a1 = texture2D(mask1, baseUv).r;\n ").concat(l>1?"float a2 = texture2D(mask2, baseUv).r;":"","\n ").concat(l>2?"float a3 = texture2D(mask3, baseUv).r;":"","\n ").concat(l>3?"float a4 = texture2D(mask4, baseUv).r;":"","\n ").concat(l>4?"float a5 = texture2D(mask5, baseUv).r;":"","\n\n // Bottom-up compositing: each mask tells how much the higher layer replaces lower\n ").concat(l>1?"vec3 blended = mix(c0, c1, clamp(a1, 0.0, 1.0));":"","\n ").concat(l>2?"blended = mix(blended, c2, clamp(a2, 0.0, 1.0));":"","\n ").concat(l>3?"blended = mix(blended, c3, clamp(a3, 0.0, 1.0));":"","\n ").concat(l>4?"blended = mix(blended, c4, clamp(a4, 0.0, 1.0));":"","\n ").concat(l>5?"blended = mix(blended, c5, clamp(a5, 0.0, 1.0));":"","\n\n // Assign to diffuseColor before lighting\n diffuseColor.rgb = ").concat(l>1?"blended":"c0",";\n"))}({shader:s,baseTextures:a,alphaTextures:u,visibilityMask:t,tiling:v})},[a,u,t,v]);return(0,l.jsx)("meshStandardMaterial",{displacementMap:e,map:e,displacementScale:2048,depthWrite:!0,onBeforeCompile:d},JSON.stringify(v))}function O(s){let{heightMap:e,textureNames:t,alphaMaps:i,emptySquares:r}=s,a=(0,n.useMemo)(()=>{let s=function(s){let e=new Float32Array(s.length);for(let t=0;t{if(!r.length)return null;let s=new Uint8Array(65536);for(let e of(s.fill(255),r)){let t=255&e,i=e>>8&255,r=e>>16;for(let e=0;e=0&&rH(s,[8,8]));return(0,l.jsx)("meshStandardMaterial",{map:i,transparent:!0,opacity:.8})}var R=t(1808);let S="".concat(b,"/black.png");function C(s){var e;let{materialName:t}=s,i=(e=(e=t).replace(/\.\d+$/,""),y("textures/".concat(e,".png"),S)),r=(0,W.zo)(i,s=>H(s));return(0,l.jsx)("meshStandardMaterial",{map:r,side:2})}function N(s){let{node:e}=s;return(0,l.jsx)("mesh",{geometry:e.geometry,castShadow:!0,receiveShadow:!0,children:e.material?(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("meshStandardMaterial",{color:"yellow",wireframe:!0}),children:Array.isArray(e.material)?e.material.map((s,e)=>(0,l.jsx)(C,{materialName:s.name},e)):(0,l.jsx)(C,{materialName:e.material.name})}):null})}let G=(0,n.memo)(s=>{let{interiorFile:e}=s,{nodes:t}=function(s){let e=y("interiors/".concat(s)).replace(/\.dif$/i,".gltf");return(0,R.p)(e)}(e);return(0,l.jsx)(l.Fragment,{children:Object.entries(t).filter(s=>{let[e,t]=s;return!t.material||!t.material.name.match(/\.\d+$/)}).map(s=>{let[e,t]=s;return(0,l.jsx)(N,{node:t},e)})})});function B(){return(0,l.jsxs)("mesh",{children:[(0,l.jsx)("boxGeometry",{args:[10,10,10]}),(0,l.jsx)("meshStandardMaterial",{color:"orange",wireframe:!0})]})}let F=(0,n.memo)(s=>{let{object:e}=s,t=T(e,"interiorFile").value,[i,r,a]=(0,n.useMemo)(()=>f(e),[e]),[u,v,d]=(0,n.useMemo)(()=>L(e),[e]),p=(0,n.useMemo)(()=>D(e,!0),[e]);return(0,l.jsx)("group",{quaternion:p,position:[a-1024,r,i-1024],scale:[-u,v,-d],children:(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)(B,{}),children:(0,l.jsx)(G,{interiorFile:t})})})});var q=t(3808);let E=n.createContext(null);function j(){return(0,n.useContext)(E)}function I(s){let{children:e}=s,[t,i]=(0,n.useState)(!0),[r,a]=(0,n.useState)(1),[u,v]=(0,n.useState)(90),d=(0,n.useMemo)(()=>({fogEnabled:t,setFogEnabled:i,speedMultiplier:r,setSpeedMultiplier:a,fov:u,setFov:v}),[t,r,u]);return(0,n.useEffect)(()=>{let s={};try{s=JSON.parse(localStorage.getItem("settings"))||{}}catch(s){}null!=s.fogEnabled&&i(s.fogEnabled),null!=s.speedMultiplier&&a(s.speedMultiplier),null!=s.fov&&v(s.fov)},[]),(0,n.useEffect)(()=>{try{localStorage.setItem("settings",JSON.stringify({fogEnabled:t,speedMultiplier:r,fov:u}))}catch(s){}},[t,r,u]),(0,l.jsx)(E.Provider,{value:d,children:e})}let U="".concat(b,"/black.png");function X(s){let{materialList:e,fogColor:t,fogDistance:i}=s,{data:r}=(0,p.I)({queryKey:["detailMapList",e],queryFn:()=>M(e)}),a=(0,n.useMemo)(()=>r?[y(r[1],U),y(r[3],U),y(r[4],U),y(r[5],U),y(r[0],U),y(r[2],U)]:[U,U,U,U,U,U],[r]),u=(0,q.c)(a,{path:""}),v=(0,n.useRef)(null),d=!!t&&!!i,o=(0,n.useMemo)(()=>d?new x.BKk({uniforms:{skybox:{value:u},fogColor:{value:t}},vertexShader:"\n varying vec3 vDirection;\n\n void main() {\n // Use position directly as direction (no world transform needed)\n vDirection = position;\n\n // Transform position but ignore translation\n vec4 pos = projectionMatrix * mat4(mat3(modelViewMatrix)) * vec4(position, 1.0);\n gl_Position = pos.xyww; // Set depth to far plane\n }\n ",fragmentShader:"\n uniform samplerCube skybox;\n uniform vec3 fogColor;\n\n varying vec3 vDirection;\n\n // Convert linear to sRGB\n vec3 linearToSRGB(vec3 color) {\n return pow(color, vec3(1.0 / 2.2));\n }\n\n void main() {\n vec3 direction = normalize(vDirection);\n direction.x = -direction.x;\n vec4 skyColor = textureCube(skybox, direction);\n\n // Calculate fog factor based on vertical direction\n // direction.y: -1 = straight down, 0 = horizon, 1 = straight up\n // 100% fog from bottom to horizon, then fade from horizon (0) to 0.4\n float fogFactor = smoothstep(0.0, 0.4, direction.y);\n\n // Mix in sRGB space to match Three.js fog rendering\n vec3 finalColor = mix(fogColor, skyColor.rgb, fogFactor);\n gl_FragColor = vec4(finalColor, 1.0);\n }\n ",side:x.hsX,depthWrite:!1}):null,[u,t,d]);return((0,n.useEffect)(()=>{v.current&&d&&o&&(v.current.uniforms.skybox.value=u,v.current.uniforms.fogColor.value=t)},[u,t,d,o]),d)?(0,l.jsxs)("mesh",{scale:5e3,children:[(0,l.jsx)("sphereGeometry",{args:[1,60,40]}),(0,l.jsx)("primitive",{ref:v,object:o,attach:"material"})]}):(0,l.jsx)("primitive",{attach:"background",object:u})}var K=t(8992);let J=s=>{s.fragmentShader=s.fragmentShader.replace("#include ","\n #include \n // Override roughness with map alpha channel if map exists\n #ifdef USE_MAP\n roughnessFactor = texture2D(map, vMapUv).a * 1;\n #endif\n ")},Y="".concat(b,"/black.png");function Z(s){var e;let{material:t,shapeName:i}=s,r=(e=t.name,e=e.replace(/\.\d+$/,""),y("textures/skins/".concat(e,".png"),Y)),a=i&&/borg|xorg/i.test(i),n=(0,W.zo)(r,s=>(a||(s.wrapS=s.wrapT=x.GJx,s.colorSpace=x.er$,s.flipY=!1,s.anisotropy=16,s.generateMipmaps=!0,s.minFilter=x.$_I,s.magFilter=x.k6q,s.needsUpdate=!0),H(s)));if(!a){let s=function(){let s=new x._4j({side:2,metalness:0,roughness:1});return s.onBeforeCompile=J,s}();return s.map=n,(0,l.jsx)("primitive",{object:s,attach:"material"})}let u=t.clone();return u.map=n,u.transparent=!0,u.alphaTest=.9,(0,l.jsx)("primitive",{object:u,attach:"material"})}function $(s){let{shapeName:e}=s,{nodes:t}=function(s){let e=y("shapes/".concat(s)).replace(/\.dts$/i,".glb");return(0,R.p)(e)}(e),i=new Set,r=Object.values(t).filter(s=>s.skeleton);return r.length>0&&(i=function(s){let e=new Set;return s.bones.forEach((s,t)=>{s.name.match(/^Hulk/i)&&e.add(t)}),e}(r[0].skeleton)),(0,l.jsx)(l.Fragment,{children:Object.entries(t).filter(s=>{let[e,t]=s;return t.material&&"Unassigned"!==t.material.name&&!t.name.match(/^Hulk/i)}).map(s=>{let[t,r]=s,a=function(s,e){if(0===e.size||!s.attributes.skinIndex)return s;let t=s.attributes.skinIndex,i=s.attributes.skinWeight,r=s.index,a=Array(t.count).fill(!1);for(let s=0;s.01&&e.has(l)){a[s]=!0;break}}if(r){let e=[],t=r.array;for(let s=0;s(0,l.jsx)(Z,{material:s,shapeName:e},t)):(0,l.jsx)(Z,{material:r.material,shapeName:e})}):null},r.id)})})}function Q(s){let{color:e}=s;return(0,l.jsxs)("mesh",{children:[(0,l.jsx)("boxGeometry",{args:[10,10,10]}),(0,l.jsx)("meshStandardMaterial",{color:e,wireframe:!0})]})}let ss={Banner_Honor:"banner_honor.dts",Banner_Strength:"banner_strength.dts",Banner_Unity:"banner_unity.dts",CreativityPad:"station_teleport.dts",ExteriorFlagStand:"ext_flagstand.dts",FlipFlop:"switch.dts",GeneratorLarge:"station_generator_large.dts",InteriorFlagStand:"int_flagstand.dts",LightMaleHuman_Dead:"light_male_dead.dts",LogoProjector:"teamlogo_projector.dts",SensorLargePulse:"sensor_pulse_large.dts",SensorMediumPulse:"sensor_pulse_medium.dts",SolarPanel:"solarpanel.dts",StaticShape:"switch.dts",StationInventory:"station_inv_human.dts",StationVehicle:"vehicle_pad_station.dts",StationVehiclePad:"vehicle_pad.dts",Teleporter:"nexusbase.dts"},se={AmmoPack:"pack_upgrade_ammo.dts",Beacon:"beacon.dts",Chaingun:"weapon_chaingun.dts",ChaingunAmmo:"ammo_chaingun.dts",CloakingPack:"pack_upgrade_cloaking.dts",ConcussionGrenade:"grenade.dts",DiscAmmo:"ammo_disc.dts",ELFGun:"weapon_elf.dts",EnergyPack:"pack_upgrade_energy.dts",Flag:"flag.dts",FlareGrenade:"grenade.dts",Grenade:"grenade.dts",GrenadeLauncher:"weapon_grenade_launcher.dts",GrenadeLauncherAmmo:"ammo_grenade.dts",InventoryDeployable:"pack_deploy_inventory.dts",Mine:"ammo_mine.dts",MotionSensorDeployable:"pack_deploy_sensor_motion.dts",Plasma:"weapon_plasma.dts",PlasmaAmmo:"ammo_plasma.dts",PulseSensorDeployable:"pack_deploy_sensor_pulse.dts",RepairKit:"repair_kit.dts",RepairPack:"pack_upgrade_repair.dts",RepairPatch:"repair_patch.dts",SensorJammerPack:"pack_upgrade_sensorjammer.dts",ShieldPack:"pack_upgrade_shield.dts",ShockLance:"weapon_shocklance.dts",SniperRifle:"weapon_sniper.dts"},st={SentryTurret:"turret_sentry.dts",TurretBaseLarge:"turret_base_large.dts"},si={InteriorInstance:F,Item:function(s){let{object:e}=s,t=T(e,"dataBlock").value,[i,a,u]=(0,n.useMemo)(()=>f(e),[e]),[v,d,p]=(0,n.useMemo)(()=>L(e),[e]),o=(0,n.useMemo)(()=>D(e,!0),[e]),c=(r||(r=Object.fromEntries(Object.entries(se).map(s=>{let[e,t]=s;return[e.toLowerCase(),t]}))),r[t.toLowerCase()]);return c||console.error(" missing shape for dataBlock: ".concat(t)),(0,l.jsx)("group",{quaternion:o,position:[u-1024,a,i-1024],scale:[-v,d,-p],children:c?(0,l.jsx)(K.tH,{fallback:(0,l.jsx)(Q,{color:"red"}),children:(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)(Q,{color:"pink"}),children:(0,l.jsx)($,{shapeName:c})})}):(0,l.jsx)(Q,{color:"orange"})})},SimGroup:function(s){let{object:e}=s;return e.children.map((s,e)=>sr(s,e))},Sky:function(s){var e;let{object:t}=s,{fogEnabled:i}=j(),r=null==(e=T(t,"materialList"))?void 0:e.value,a=(0,n.useMemo)(()=>{var s;let e=null==(s=T(t,"fogDistance"))?void 0:s.value;if(e)return parseFloat(e)},[t]),u=(0,n.useMemo)(()=>{var s;let e=null==(s=T(t,"fogColor"))?void 0:s.value;if(e){let[s,t,i]=e.split(" ").map(s=>parseFloat(s));return[new x.Q1f().setRGB(s,t,i),new x.Q1f().setRGB(s,t,i).convertSRGBToLinear()]}},[t]),v=u?(0,l.jsx)("color",{attach:"background",args:[u[0]]}):null;return(0,l.jsxs)(l.Fragment,{children:[r?(0,l.jsx)(n.Suspense,{fallback:v,children:(0,l.jsx)(X,{materialList:r,fogColor:i?u[1]:void 0,fogDistance:i?a:void 0})}):v,i&&a&&u?(0,l.jsx)("fog",{attach:"fog",color:u[1],near:100,far:Math.max(400,2*a)}):null]})},StaticShape:function(s){let{object:e}=s,t=T(e,"dataBlock").value,[r,a,u]=(0,n.useMemo)(()=>f(e),[e]),[v,d,p]=(0,n.useMemo)(()=>L(e),[e]),o=(0,n.useMemo)(()=>D(e,!0),[e]),c=(i||(i=Object.fromEntries(Object.entries(ss).map(s=>{let[e,t]=s;return[e.toLowerCase(),t]}))),i[t.toLowerCase()]);return c||console.error(" missing shape for dataBlock: ".concat(t)),(0,l.jsx)("group",{quaternion:o,position:[u-1024,a,r-1024],scale:[-v,d,p],children:c?(0,l.jsx)(K.tH,{fallback:(0,l.jsx)(Q,{color:"red"}),children:(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)(Q,{color:"yellow"}),children:(0,l.jsx)($,{shapeName:c})})}):(0,l.jsx)(Q,{color:"orange"})})},Sun:function(s){let{object:e}=s;(0,n.useMemo)(()=>{var s,t;let[i,r,a]=(null!=(t=null==(s=T(e,"direction"))?void 0:s.value)?t:"0 0 -1").split(" ").map(s=>parseFloat(s));return[5e3*i,5e3*r,5e3*a]},[e]);let t=(0,n.useMemo)(()=>{var s,t;let[i,r,a]=(null!=(t=null==(s=T(e,"color"))?void 0:s.value)?t:"1 1 1 1").split(" ").map(s=>parseFloat(s));return[i,r,a]},[e]),i=(0,n.useMemo)(()=>{var s,t;let[i,r,a]=(null!=(t=null==(s=T(e,"ambient"))?void 0:s.value)?t:"0.5 0.5 0.5 1").split(" ").map(s=>parseFloat(s));return[i,r,a]},[e]);return(0,l.jsx)(l.Fragment,{children:(0,l.jsx)("hemisphereLight",{args:[new x.Q1f(...t),new x.Q1f(...i),2]})})},TerrainBlock:function(s){let{object:e}=s,t=T(e,"terrainFile").value,i=(0,n.useMemo)(()=>{var s;let t=null==(s=T(e,"emptySquares"))?void 0:s.value;return t?t.split(" ").map(s=>parseInt(s,10)):[]},[e]),r=(0,n.useMemo)(()=>f(e),[e]),a=(0,n.useMemo)(()=>L(e),[e]),u=(0,n.useMemo)(()=>D(e),[e]),v=(0,n.useMemo)(()=>{let s=new x.bdM(2048,2048,256,256);return s.rotateX(-Math.PI/2),s.rotateY(-Math.PI/2),s},[]),{data:d}=(0,p.I)({queryKey:["terrain",t],queryFn:()=>w(t)});return(0,l.jsx)("mesh",{quaternion:u,position:r,scale:a,geometry:v,receiveShadow:!0,castShadow:!0,children:d?(0,l.jsx)(O,{heightMap:d.heightMap,emptySquares:i,textureNames:d.textureNames,alphaMaps:d.alphaMaps}):null})},TSStatic:function(s){let{object:e}=s,t=T(e,"shapeName").value,[i,r,a]=(0,n.useMemo)(()=>f(e),[e]),[u,v,d]=(0,n.useMemo)(()=>L(e),[e]),p=(0,n.useMemo)(()=>D(e,!0),[e]);return(0,l.jsx)("group",{quaternion:p,position:[a-1024,r,i-1024],scale:[-u,v,-d],children:(0,l.jsx)(K.tH,{fallback:(0,l.jsx)(Q,{color:"red"}),children:(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)(Q,{color:"yellow"}),children:(0,l.jsx)($,{shapeName:t})})})})},Turret:function(s){let{object:e}=s,t=T(e,"dataBlock").value,[i,r,u]=(0,n.useMemo)(()=>f(e),[e]),[v,d,p]=(0,n.useMemo)(()=>L(e),[e]),o=(0,n.useMemo)(()=>D(e,!0),[e]),c=(a||(a=Object.fromEntries(Object.entries(st).map(s=>{let[e,t]=s;return[e.toLowerCase(),t]}))),a[t.toLowerCase()]);return c||console.error(" missing shape for dataBlock: ".concat(t)),(0,l.jsx)("group",{quaternion:o,position:[u-1024,r,i-1024],scale:[-v,d,p],children:c?(0,l.jsx)(K.tH,{fallback:(0,l.jsx)(Q,{color:"red"}),children:(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)(Q,{color:"yellow"}),children:(0,l.jsx)($,{shapeName:c})})}):(0,l.jsx)(Q,{color:"orange"})})},WaterBlock:function(s){var e,t;let{object:i}=s,[r,a,u]=(0,n.useMemo)(()=>f(i),[i]),[v,d,p]=(0,n.useMemo)(()=>L(i),[i]),o=(0,n.useMemo)(()=>D(i,!0),[i]),c=null!=(t=null==(e=T(i,"surfaceTexture"))?void 0:e.value)?t:"liquidTiles/BlueWater";return(0,l.jsxs)("mesh",{position:[u-1024+p/2,a+d/2,r-1024+v/2],quaternion:o,children:[(0,l.jsx)("boxGeometry",{args:[v,d,p]}),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("meshStandardMaterial",{color:"blue",transparent:!0,opacity:.3}),children:(0,l.jsx)(V,{surfaceTexture:c})})]})}};function sr(s,e){let t=si[s.className];return t?(0,l.jsx)(t,{object:s},e):null}function sa(s){let{name:e}=s,{data:t}=(0,p.I)({queryKey:["mission",e],queryFn:()=>z(e)});return t?(0,l.jsx)(l.Fragment,{children:t.objects.map((s,e)=>sr(s,e))}):null}var sl=t(3522),sn=t(9776),su=t(99),sv=t(61),sd=t(139),sp=function(s){return s.forward="forward",s.backward="backward",s.left="left",s.right="right",s.up="up",s.down="down",s}(sp||{});function so(){let{speedMultiplier:s,setSpeedMultiplier:e}=j(),[t,i]=(0,sv.z)(),{camera:r,gl:a}=(0,su.C)(),l=(0,n.useRef)(null),u=(0,n.useRef)(new x.Pq0),v=(0,n.useRef)(new x.Pq0),d=(0,n.useRef)(new x.Pq0);return(0,n.useEffect)(()=>{let s=new sd.Z(r,a.domElement);l.current=s;let e=e=>{e.target===a.domElement&&s.lock()};return a.domElement.addEventListener("click",e),()=>{a.domElement.removeEventListener("click",e),s.dispose()}},[r,a]),(0,n.useEffect)(()=>{let s=s=>{s.preventDefault();let t=s.deltaY>0?-1:1,i=Math.max(.05,Math.min(1,Math.abs(.01*s.deltaY)))*t;e(s=>Math.max(.1,Math.min(5,Math.round((s+i)*20)/20)))},t=a.domElement;return t.addEventListener("wheel",s,{passive:!1}),()=>{t.removeEventListener("wheel",s)}},[a]),(0,su.D)((e,t)=>{let{forward:a,backward:l,left:n,right:p,up:o,down:c}=i();(a||l||n||p||o||c)&&(r.getWorldDirection(u.current),u.current.normalize(),v.current.crossVectors(r.up,u.current).normalize(),d.current.set(0,0,0),a&&d.current.add(u.current),l&&d.current.sub(u.current),n&&d.current.add(v.current),p&&d.current.sub(v.current),o&&(d.current.y+=1),c&&(d.current.y-=1),d.current.lengthSq()>0&&(d.current.normalize().multiplyScalar(100*s*t),r.position.add(d.current)))}),null}let sc=[{name:"forward",keys:["KeyW"]},{name:"backward",keys:["KeyS"]},{name:"left",keys:["KeyA"]},{name:"right",keys:["KeyD"]},{name:"up",keys:["Space"]},{name:"down",keys:["ShiftLeft","ShiftRight"]}];function sx(){return(0,l.jsx)(sv.Y,{map:sc,children:(0,l.jsx)(so,{})})}let s_=new Set(["SkiFree","SkiFree_Daily","SkiFree_Randomizer"]),sg=c().map(s=>s.match(/^missions\/(.+)\.mis$/)).filter(Boolean).map(s=>s[1]).filter(s=>!s_.has(s));function sk(s){let{missionName:e,onChangeMission:t}=s,{fogEnabled:i,setFogEnabled:r,speedMultiplier:a,setSpeedMultiplier:n,fov:u,setFov:v}=j();return(0,l.jsxs)("div",{id:"controls",onKeyDown:s=>s.stopPropagation(),onPointerDown:s=>s.stopPropagation(),onClick:s=>s.stopPropagation(),children:[(0,l.jsx)("select",{id:"missionList",value:e,onChange:s=>t(s.target.value),children:sg.map(s=>(0,l.jsx)("option",{children:s},s))}),(0,l.jsxs)("div",{className:"CheckboxField",children:[(0,l.jsx)("input",{id:"fogInput",type:"checkbox",checked:i,onChange:s=>{r(s.target.checked)}}),(0,l.jsx)("label",{htmlFor:"fogInput",children:"Fog?"})]}),(0,l.jsxs)("div",{className:"Field",children:[(0,l.jsx)("label",{htmlFor:"fovInput",children:"FOV"}),(0,l.jsx)("input",{id:"speedInput",type:"range",min:75,max:120,step:5,value:u,onChange:s=>v(parseInt(s.target.value))}),(0,l.jsx)("output",{htmlFor:"speedInput",children:u})]}),(0,l.jsxs)("div",{className:"Field",children:[(0,l.jsx)("label",{htmlFor:"speedInput",children:"Speed"}),(0,l.jsx)("input",{id:"speedInput",type:"range",min:.1,max:5,step:.05,value:a,onChange:s=>n(parseFloat(s.target.value))})]})]})}var sm=t(8254);function sh(){let{fov:s}=j();return(0,l.jsx)(sm.u,{makeDefault:!0,position:[-512,256,-512],fov:s})}let sT=new sl.E;function sf(){let s=(0,u.useSearchParams)(),e=(0,u.useRouter)(),[t,i]=(0,n.useState)(s.get("mission")||"TWL2_WoodyMyrk");return(0,n.useEffect)(()=>{let s=new URLSearchParams;s.set("mission",t),e.replace("?".concat(s.toString()),{scroll:!1})},[t,e]),(0,l.jsx)(sn.Ht,{client:sT,children:(0,l.jsx)("main",{children:(0,l.jsxs)(I,{children:[(0,l.jsxs)(v.Hl,{shadows:!0,children:[(0,l.jsx)(sx,{}),(0,l.jsx)(sa,{name:t},t),(0,l.jsx)(sh,{}),(0,l.jsx)(d.s0,{children:(0,l.jsx)(d.jW,{intensity:3,aoRadius:3,quality:"performance"})})]}),(0,l.jsx)(sk,{missionName:t,onChangeMission:i})]})})})}function sL(){return(0,l.jsx)(n.Suspense,{children:(0,l.jsx)(sf,{})})}}},s=>{s.O(0,[367,831,664,794,413,236,441,255,358],()=>s(s.s=6179)),_N_E=s.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/b536a0f1-05ee2c75df4a3b9d.js b/docs/_next/static/chunks/b536a0f1-05ee2c75df4a3b9d.js new file mode 100644 index 00000000..a23634ec --- /dev/null +++ b/docs/_next/static/chunks/b536a0f1-05ee2c75df4a3b9d.js @@ -0,0 +1,197 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[367],{7548:(e,n,t)=>{t.r(n),t.d(n,{ACESFilmicToneMapping:()=>r.FV,AddEquation:()=>r.gO9,AddOperation:()=>r.XrR,AdditiveAnimationBlendMode:()=>r.DAe,AdditiveBlending:()=>r.EZo,AgXToneMapping:()=>r.LAk,AlphaFormat:()=>r.wrO,AlwaysCompare:()=>r.FFZ,AlwaysDepth:()=>r.lGu,AlwaysStencilFunc:()=>r.sKt,AmbientLight:()=>r.$p8,AnimationAction:()=>r.pPE,AnimationClip:()=>r.tz3,AnimationLoader:()=>r.kEx,AnimationMixer:()=>r.Iw4,AnimationObjectGroup:()=>r.P5j,AnimationUtils:()=>r.AKb,ArcCurve:()=>r.ibB,ArrayCamera:()=>r.nZQ,ArrowHelper:()=>r.E0M,AttachedBindMode:()=>r.BER,Audio:()=>r.fP5,AudioAnalyser:()=>r.CwR,AudioContext:()=>r.UtX,AudioListener:()=>r.Pf$,AudioLoader:()=>r.Am1,AxesHelper:()=>r.IzY,BackSide:()=>r.hsX,BasicDepthPacking:()=>r.Rkk,BasicShadowMap:()=>r.bTm,BatchedMesh:()=>r.$Ed,Bone:()=>r.$Kf,BooleanKeyframeTrack:()=>r.YOZ,Box2:()=>r.UtB,Box3:()=>r.NRn,Box3Helper:()=>r.BND,BoxGeometry:()=>r.iNn,BoxHelper:()=>r.IWo,BufferAttribute:()=>r.THS,BufferGeometry:()=>r.LoY,BufferGeometryLoader:()=>r.SUR,ByteType:()=>r.tJf,Cache:()=>r.l2R,Camera:()=>r.i7d,CameraHelper:()=>r.WTh,CanvasTexture:()=>r.GOR,CapsuleGeometry:()=>r.qU7,CatmullRomCurve3:()=>r.B6O,CineonToneMapping:()=>r.nNL,CircleGeometry:()=>r.tcD,ClampToEdgeWrapping:()=>r.ghU,Clock:()=>r.zD7,Color:()=>r.Q1f,ColorKeyframeTrack:()=>r.T6I,ColorManagement:()=>r.ppV,CompressedArrayTexture:()=>r.iOZ,CompressedCubeTexture:()=>r.c5h,CompressedTexture:()=>r.FvD,CompressedTextureLoader:()=>r.YRT,ConeGeometry:()=>r.qFE,ConstantAlphaFactor:()=>r.e0p,ConstantColorFactor:()=>r.RrE,Controls:()=>r.H2z,CubeCamera:()=>r.F1T,CubeReflectionMapping:()=>r.hy7,CubeRefractionMapping:()=>r.xFO,CubeTexture:()=>r.b4q,CubeTextureLoader:()=>r.ScU,CubeUVReflectionMapping:()=>r.Om,CubicBezierCurve:()=>r.Z0B,CubicBezierCurve3:()=>r.s0K,CubicInterpolant:()=>r.Pdi,CullFaceBack:()=>r.Vb5,CullFaceFront:()=>r.Jnc,CullFaceFrontBack:()=>r.ywQ,CullFaceNone:()=>r.WNZ,Curve:()=>r.Ipv,CurvePath:()=>r.jGm,CustomBlending:()=>r.bCz,CustomToneMapping:()=>r.g7M,CylinderGeometry:()=>r.Ho_,Cylindrical:()=>r.hjs,Data3DTexture:()=>r.dYF,DataArrayTexture:()=>r.rFo,DataTexture:()=>r.GYF,DataTextureLoader:()=>r.BRH,DataUtils:()=>r.GxU,DecrementStencilOp:()=>r.ROr,DecrementWrapStencilOp:()=>r.fJr,DefaultLoadingManager:()=>r.h_9,DepthFormat:()=>r.zdS,DepthStencilFormat:()=>r.dcC,DepthTexture:()=>r.VCu,DetachedBindMode:()=>r.Fvi,DirectionalLight:()=>r.ZyN,DirectionalLightHelper:()=>r.PFK,DiscreteInterpolant:()=>r.Yhb,DodecahedronGeometry:()=>r.nEu,DoubleSide:()=>r.$EB,DstAlphaFactor:()=>r.hdd,DstColorFactor:()=>r.wn6,DynamicCopyUsage:()=>r.MOq,DynamicDrawUsage:()=>r.Vnu,DynamicReadUsage:()=>r.hIf,EdgesGeometry:()=>r.TDQ,EllipseCurve:()=>r.S20,EqualCompare:()=>r.kO0,EqualDepth:()=>r.U3G,EqualStencilFunc:()=>r.jsO,EquirectangularReflectionMapping:()=>r.wfO,EquirectangularRefractionMapping:()=>r.uV5,Euler:()=>r.O9p,EventDispatcher:()=>r.Qev,ExternalTexture:()=>r.rjZ,ExtrudeGeometry:()=>r.QCA,FileLoader:()=>r.Y9S,Float16BufferAttribute:()=>r.Oax,Float32BufferAttribute:()=>r.qtW,FloatType:()=>r.RQf,Fog:()=>r.jUj,FogExp2:()=>r.cRK,FramebufferTexture:()=>r.Pem,FrontSide:()=>r.hB5,Frustum:()=>r.PPD,FrustumArray:()=>r.uf3,GLBufferAttribute:()=>r.oh6,GLSL1:()=>r.Wyr,GLSL3:()=>r.Wdf,GreaterCompare:()=>r.eoi,GreaterDepth:()=>r.K52,GreaterEqualCompare:()=>r.gWB,GreaterEqualDepth:()=>r.Gwm,GreaterEqualStencilFunc:()=>r.TMh,GreaterStencilFunc:()=>r.RcT,GridHelper:()=>r.fTw,Group:()=>r.YJl,HalfFloatType:()=>r.ix0,HemisphereLight:()=>r.dth,HemisphereLightHelper:()=>r.R1W,IcosahedronGeometry:()=>r.WBB,ImageBitmapLoader:()=>r.Kzg,ImageLoader:()=>r.$NF,ImageUtils:()=>r.HgN,IncrementStencilOp:()=>r.HLH,IncrementWrapStencilOp:()=>r.Ru$,InstancedBufferAttribute:()=>r.uWO,InstancedBufferGeometry:()=>r.CmU,InstancedInterleavedBuffer:()=>r.LuO,InstancedMesh:()=>r.ZLX,Int16BufferAttribute:()=>r.Hrb,Int32BufferAttribute:()=>r.vmz,Int8BufferAttribute:()=>r.wvS,IntType:()=>r.Yuy,InterleavedBuffer:()=>r.eB$,InterleavedBufferAttribute:()=>r.eHs,Interpolant:()=>r.lGw,InterpolateDiscrete:()=>r.ljd,InterpolateLinear:()=>r.PJ3,InterpolateSmooth:()=>r.EQC,InterpolationSamplingMode:()=>r.TM5,InterpolationSamplingType:()=>r.G4u,InvertStencilOp:()=>r.oVO,KeepStencilOp:()=>r.VVr,KeyframeTrack:()=>r.UJ6,LOD:()=>r.UpK,LatheGeometry:()=>r.nzx,Layers:()=>r.zgK,LessCompare:()=>r.vim,LessDepth:()=>r.brA,LessEqualCompare:()=>r.TiK,LessEqualDepth:()=>r.xSv,LessEqualStencilFunc:()=>r.CR7,LessStencilFunc:()=>r.kYr,Light:()=>r.veJ,LightProbe:()=>r.FZo,Line:()=>r.N1A,Line3:()=>r.cZY,LineBasicMaterial:()=>r.mrM,LineCurve:()=>r.GZZ,LineCurve3:()=>r.VnP,LineDashedMaterial:()=>r.Fvt,LineLoop:()=>r.FCc,LineSegments:()=>r.DXC,LinearFilter:()=>r.k6q,LinearInterpolant:()=>r.ezk,LinearMipMapLinearFilter:()=>r.NZq,LinearMipMapNearestFilter:()=>r.iUH,LinearMipmapLinearFilter:()=>r.$_I,LinearMipmapNearestFilter:()=>r.kRr,LinearSRGBColorSpace:()=>r.Zr2,LinearToneMapping:()=>r.kyO,LinearTransfer:()=>r.VxR,Loader:()=>r.aHM,LoaderUtils:()=>r.r6x,LoadingManager:()=>r.KPJ,LoopOnce:()=>r.G3T,LoopPingPong:()=>r.lc7,LoopRepeat:()=>r.aMy,MOUSE:()=>r.kBv,Material:()=>r.imn,MaterialLoader:()=>r.jut,MathUtils:()=>r.cj9,Matrix2:()=>r.k_V,Matrix3:()=>r.dwI,Matrix4:()=>r.kn4,MaxEquation:()=>r.$ei,Mesh:()=>r.eaF,MeshBasicMaterial:()=>r.V9B,MeshDepthMaterial:()=>r.CSG,MeshDistanceMaterial:()=>r.aVO,MeshLambertMaterial:()=>r.G_z,MeshMatcapMaterial:()=>r.FNr,MeshNormalMaterial:()=>r.qBx,MeshPhongMaterial:()=>r.tXL,MeshPhysicalMaterial:()=>r.uSd,MeshStandardMaterial:()=>r._4j,MeshToonMaterial:()=>r.Df,MinEquation:()=>r.znC,MirroredRepeatWrapping:()=>r.kTW,MixOperation:()=>r.KRh,MultiplyBlending:()=>r.EdD,MultiplyOperation:()=>r.caT,NearestFilter:()=>r.hxR,NearestMipMapLinearFilter:()=>r.a$r,NearestMipMapNearestFilter:()=>r.$O9,NearestMipmapLinearFilter:()=>r.Cfg,NearestMipmapNearestFilter:()=>r.pHI,NeutralToneMapping:()=>r.aJ8,NeverCompare:()=>r.amv,NeverDepth:()=>r.eHc,NeverStencilFunc:()=>r.HPb,NoBlending:()=>r.XIg,NoColorSpace:()=>r.jf0,NoToneMapping:()=>r.y_p,NormalAnimationBlendMode:()=>r.Ke9,NormalBlending:()=>r.NTi,NotEqualCompare:()=>r.jzd,NotEqualDepth:()=>r.bw0,NotEqualStencilFunc:()=>r.klZ,NumberKeyframeTrack:()=>r.Hit,Object3D:()=>r.B69,ObjectLoader:()=>r.XTe,ObjectSpaceNormalMap:()=>r.vyJ,OctahedronGeometry:()=>r.Ufg,OneFactor:()=>r.qad,OneMinusConstantAlphaFactor:()=>r.ov9,OneMinusConstantColorFactor:()=>r.$Yl,OneMinusDstAlphaFactor:()=>r.Nt7,OneMinusDstColorFactor:()=>r.aEY,OneMinusSrcAlphaFactor:()=>r.OuU,OneMinusSrcColorFactor:()=>r.LiQ,OrthographicCamera:()=>r.qUd,PCFShadowMap:()=>r.QP0,PCFSoftShadowMap:()=>r.Wk7,PMREMGenerator:()=>P,Path:()=>r.wAk,PerspectiveCamera:()=>r.ubm,Plane:()=>r.Zcv,PlaneGeometry:()=>r.bdM,PlaneHelper:()=>r.ZM4,PointLight:()=>r.HiM,PointLightHelper:()=>r.F1l,Points:()=>r.ONl,PointsMaterial:()=>r.BH$,PolarGridHelper:()=>r.hzE,PolyhedronGeometry:()=>r.pFK,PositionalAudio:()=>r.xZx,PropertyBinding:()=>r.Nwf,PropertyMixer:()=>r.N2s,QuadraticBezierCurve:()=>r.dAo,QuadraticBezierCurve3:()=>r.CV9,Quaternion:()=>r.PTz,QuaternionKeyframeTrack:()=>r.MBL,QuaternionLinearInterpolant:()=>r.GBG,RED_GREEN_RGTC2_Format:()=>r.HO_,RED_RGTC1_Format:()=>r.Kef,REVISION:()=>r.sPf,RGBADepthPacking:()=>r.N5j,RGBAFormat:()=>r.GWd,RGBAIntegerFormat:()=>r.c90,RGBA_ASTC_10x10_Format:()=>r.y3Z,RGBA_ASTC_10x5_Format:()=>r.uB5,RGBA_ASTC_10x6_Format:()=>r.lyL,RGBA_ASTC_10x8_Format:()=>r.bC7,RGBA_ASTC_12x10_Format:()=>r.ojs,RGBA_ASTC_12x12_Format:()=>r.S$4,RGBA_ASTC_4x4_Format:()=>r.qa3,RGBA_ASTC_5x4_Format:()=>r.B_h,RGBA_ASTC_5x5_Format:()=>r.czI,RGBA_ASTC_6x5_Format:()=>r.rSH,RGBA_ASTC_6x6_Format:()=>r.Qrf,RGBA_ASTC_8x5_Format:()=>r.psI,RGBA_ASTC_8x6_Format:()=>r.a5J,RGBA_ASTC_8x8_Format:()=>r._QJ,RGBA_BPTC_Format:()=>r.Fn,RGBA_ETC2_EAC_Format:()=>r.KDk,RGBA_PVRTC_2BPPV1_Format:()=>r.pBf,RGBA_PVRTC_4BPPV1_Format:()=>r.HXV,RGBA_S3TC_DXT1_Format:()=>r.Nz6,RGBA_S3TC_DXT3_Format:()=>r.jR7,RGBA_S3TC_DXT5_Format:()=>r.BXX,RGBDepthPacking:()=>r.wTz,RGBFormat:()=>r.HIg,RGBIntegerFormat:()=>r.VGF,RGB_BPTC_SIGNED_Format:()=>r.H23,RGB_BPTC_UNSIGNED_Format:()=>r.W9U,RGB_ETC1_Format:()=>r.CVz,RGB_ETC2_Format:()=>r.Riy,RGB_PVRTC_2BPPV1_Format:()=>r.kTp,RGB_PVRTC_4BPPV1_Format:()=>r.k6Q,RGB_S3TC_DXT1_Format:()=>r.IE4,RGDepthPacking:()=>r.k8v,RGFormat:()=>r.paN,RGIntegerFormat:()=>r.TkQ,RawShaderMaterial:()=>r.D$Q,Ray:()=>r.RlV,Raycaster:()=>r.tBo,RectAreaLight:()=>r.ure,RedFormat:()=>r.VT0,RedIntegerFormat:()=>r.ZQM,ReinhardToneMapping:()=>r.Mjd,RenderTarget:()=>r.O0B,RenderTarget3D:()=>r.XMJ,RepeatWrapping:()=>r.GJx,ReplaceStencilOp:()=>r.kG0,ReverseSubtractEquation:()=>r.nST,RingGeometry:()=>r.rKP,SIGNED_RED_GREEN_RGTC2_Format:()=>r.CWW,SIGNED_RED_RGTC1_Format:()=>r.XG_,SRGBColorSpace:()=>r.er$,SRGBTransfer:()=>r.KLL,Scene:()=>r.Z58,ShaderChunk:()=>o,ShaderLib:()=>s,ShaderMaterial:()=>r.BKk,ShadowMaterial:()=>r.q2,Shape:()=>r.ypk,ShapeGeometry:()=>r.MSw,ShapePath:()=>r.Ld9,ShapeUtils:()=>r.xJ6,ShortType:()=>r.fBL,Skeleton:()=>r.EAD,SkeletonHelper:()=>r._xc,SkinnedMesh:()=>r.I46,Source:()=>r.kLi,Sphere:()=>r.iyt,SphereGeometry:()=>r.Gu$,Spherical:()=>r.YHV,SphericalHarmonics3:()=>r.xOk,SplineCurve:()=>r.xfg,SpotLight:()=>r.nCl,SpotLightHelper:()=>r.Fpm,Sprite:()=>r.kxk,SpriteMaterial:()=>r.RoJ,SrcAlphaFactor:()=>r.ie2,SrcAlphaSaturateFactor:()=>r.hgQ,SrcColorFactor:()=>r.f4X,StaticCopyUsage:()=>r.Hrq,StaticDrawUsage:()=>r.agE,StaticReadUsage:()=>r.uXQ,StereoCamera:()=>r.keZ,StreamCopyUsage:()=>r.rOG,StreamDrawUsage:()=>r.Ktl,StreamReadUsage:()=>r.uov,StringKeyframeTrack:()=>r.hZF,SubtractEquation:()=>r.FXf,SubtractiveBlending:()=>r.Kwu,TOUCH:()=>r.wtR,TangentSpaceNormalMap:()=>r.bI3,TetrahedronGeometry:()=>r.Zpd,Texture:()=>r.gPd,TextureLoader:()=>r.Tap,TextureUtils:()=>r.Vwu,Timer:()=>r.M4G,TimestampQuery:()=>r.v9J,TorusGeometry:()=>r.O3Y,TorusKnotGeometry:()=>r.UPV,Triangle:()=>r.lMl,TriangleFanDrawMode:()=>r.rYR,TriangleStripDrawMode:()=>r.O49,TrianglesDrawMode:()=>r.RJ4,TubeGeometry:()=>r.j6,UVMapping:()=>r.UTZ,Uint16BufferAttribute:()=>r.A$4,Uint32BufferAttribute:()=>r.MW4,Uint8BufferAttribute:()=>r.baL,Uint8ClampedBufferAttribute:()=>r.fc6,Uniform:()=>r.nc$,UniformsGroup:()=>r.dzP,UniformsLib:()=>l,UniformsUtils:()=>r.LlO,UnsignedByteType:()=>r.OUM,UnsignedInt101111Type:()=>r.yT7,UnsignedInt248Type:()=>r.V3x,UnsignedInt5999Type:()=>r.Dmk,UnsignedIntType:()=>r.bkx,UnsignedShort4444Type:()=>r.Wew,UnsignedShort5551Type:()=>r.gJ2,UnsignedShortType:()=>r.cHt,VSMShadowMap:()=>r.RyA,Vector2:()=>r.I9Y,Vector3:()=>r.Pq0,Vector4:()=>r.IUQ,VectorKeyframeTrack:()=>r.RiT,VideoFrameTexture:()=>r.SYV,VideoTexture:()=>r.Nv2,WebGL3DRenderTarget:()=>r.ALV,WebGLArrayRenderTarget:()=>r.y9J,WebGLCoordinateSystem:()=>r.TdN,WebGLCubeRenderTarget:()=>r.o6l,WebGLRenderTarget:()=>r.nWS,WebGLRenderer:()=>nb,WebGLUtils:()=>nv,WebGPUCoordinateSystem:()=>r.i7u,WebXRController:()=>r.R3r,WireframeGeometry:()=>r.XJ7,WrapAroundEnding:()=>r.dhZ,ZeroCurvatureEnding:()=>r.rQf,ZeroFactor:()=>r.ojh,ZeroSlopeEnding:()=>r.h2z,ZeroStencilOp:()=>r.kqe,createCanvasElement:()=>r.lPF});var r=t(5339);function i(){let e=null,n=!1,t=null,r=null;function i(n,a){t(n,a),r=e.requestAnimationFrame(i)}return{start:function(){!0!==n&&null!==t&&(r=e.requestAnimationFrame(i),n=!0)},stop:function(){e.cancelAnimationFrame(r),n=!1},setAnimationLoop:function(e){t=e},setContext:function(n){e=n}}}function a(e){let n=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),n.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);let r=n.get(t);r&&(e.deleteBuffer(r.buffer),n.delete(t))},update:function(t,r){if(t.isInterleavedBufferAttribute&&(t=t.data),t.isGLBufferAttribute){let e=n.get(t);(!e||e.versione.start-n.start);let n=0;for(let e=1;e 0\n vec4 plane;\n #ifdef ALPHA_TO_COVERAGE\n float distanceToPlane, distanceGradient;\n float clipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n if ( clipOpacity == 0.0 ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n float unionClipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n }\n #pragma unroll_loop_end\n clipOpacity *= 1.0 - unionClipOpacity;\n #endif\n diffuseColor.a *= clipOpacity;\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n bool clipped = true;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n }\n #pragma unroll_loop_end\n if ( clipped ) discard;\n #endif\n #endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n vClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n diffuseColor *= vColor;\n#elif defined( USE_COLOR )\n diffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR )\n varying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n varying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n vColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n vColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n vColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n vColor.xyz *= instanceColor.xyz;\n#endif\n#ifdef USE_BATCHING_COLOR\n vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\n vColor.xyz *= batchingColor.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; }\nvec3 pow2( const in vec3 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 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n float precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n float precisionSafeLength( vec3 v ) {\n float maxComponent = max3( abs( v ) );\n return length( v / maxComponent ) * maxComponent;\n }\n#endif\nstruct IncidentLight {\n vec3 color;\n vec3 direction;\n bool visible;\n};\nstruct ReflectedLight {\n vec3 directDiffuse;\n vec3 directSpecular;\n vec3 indirectDiffuse;\n vec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n varying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n mat3 tmp;\n tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n return tmp;\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n return vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n #define cubeUV_minMipLevel 4.0\n #define cubeUV_minTileSize 16.0\n float getFace( vec3 direction ) {\n vec3 absDirection = abs( direction );\n float face = - 1.0;\n if ( absDirection.x > absDirection.z ) {\n if ( absDirection.x > absDirection.y )\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if ( absDirection.z > absDirection.y )\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n }\n vec2 getUV( vec3 direction, float face ) {\n vec2 uv;\n if ( face == 0.0 ) {\n uv = vec2( direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 1.0 ) {\n uv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n } else if ( face == 2.0 ) {\n uv = vec2( - direction.x, direction.y ) / abs( direction.z );\n } else if ( face == 3.0 ) {\n uv = vec2( - direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 4.0 ) {\n uv = vec2( - direction.x, direction.z ) / abs( direction.y );\n } else {\n uv = vec2( direction.x, direction.y ) / abs( direction.z );\n }\n return 0.5 * ( uv + 1.0 );\n }\n vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n float face = getFace( direction );\n float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n mipInt = max( mipInt, cubeUV_minMipLevel );\n float faceSize = exp2( mipInt );\n highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n if ( face > 2.0 ) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n uv.x += filterInt * 3.0 * cubeUV_minTileSize;\n uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n uv.x *= CUBEUV_TEXEL_WIDTH;\n uv.y *= CUBEUV_TEXEL_HEIGHT;\n #ifdef texture2DGradEXT\n return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n #else\n return texture2D( envMap, uv ).rgb;\n #endif\n }\n #define cubeUV_r0 1.0\n #define cubeUV_m0 - 2.0\n #define cubeUV_r1 0.8\n #define cubeUV_m1 - 1.0\n #define cubeUV_r4 0.4\n #define cubeUV_m4 2.0\n #define cubeUV_r5 0.305\n #define cubeUV_m5 3.0\n #define cubeUV_r6 0.21\n #define cubeUV_m6 4.0\n float roughnessToMip( float roughness ) {\n float mip = 0.0;\n if ( roughness >= cubeUV_r1 ) {\n mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n } else if ( roughness >= cubeUV_r4 ) {\n mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n } else if ( roughness >= cubeUV_r5 ) {\n mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n } else if ( roughness >= cubeUV_r6 ) {\n mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n } else {\n mip = - 2.0 * log2( 1.16 * roughness ); }\n return mip;\n }\n vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n float mipF = fract( mip );\n float mipInt = floor( mip );\n vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n if ( mipF == 0.0 ) {\n return vec4( color0, 1.0 );\n } else {\n vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n return vec4( mix( color0, color1, mipF ), 1.0 );\n }\n }\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n vec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n mat3 bm = mat3( batchingMatrix );\n transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n transformedNormal = bm * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = bm * transformedTangent;\n #endif\n#endif\n#ifdef USE_INSTANCING\n mat3 im = mat3( instanceMatrix );\n transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n transformedNormal = im * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = im * transformedTangent;\n #endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n transformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n #ifdef FLIP_SIDED\n transformedTangent = - transformedTangent;\n #endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n uniform sampler2D displacementMap;\n uniform float displacementScale;\n uniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\n emissiveColor = sRGBTransferEOTF( emissiveColor );\n #endif\n totalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n uniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"vec4 LinearTransferOETF( in vec4 value ) {\n return value;\n}\nvec4 sRGBTransferEOTF( in vec4 value ) {\n return 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 sRGBTransferOETF( in vec4 value ) {\n return 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}",envmap_fragment:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vec3 cameraToFrag;\n if ( isOrthographic ) {\n cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToFrag = normalize( vWorldPosition - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vec3 reflectVec = reflect( cameraToFrag, worldNormal );\n #else\n vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n #endif\n #else\n vec3 reflectVec = vReflect;\n #endif\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n #else\n vec4 envColor = vec4( 0.0 );\n #endif\n #ifdef ENVMAP_BLENDING_MULTIPLY\n outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_MIX )\n outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_ADD )\n outgoingLight += envColor.xyz * specularStrength * reflectivity;\n #endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n uniform float envMapIntensity;\n uniform float flipEnvMap;\n uniform mat3 envMapRotation;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n \n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n uniform float reflectivity;\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n varying vec3 vWorldPosition;\n uniform float refractionRatio;\n #else\n varying vec3 vReflect;\n #endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n \n varying vec3 vWorldPosition;\n #else\n varying vec3 vReflect;\n uniform float refractionRatio;\n #endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n vec3 getIBLIrradiance( const in vec3 normal ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n return PI * envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 reflectVec = reflect( - viewDir, normal );\n reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n return envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n #ifdef USE_ANISOTROPY\n vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 bentNormal = cross( bitangent, viewDir );\n bentNormal = normalize( cross( bentNormal, bitangent ) );\n bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n return getIBLRadiance( viewDir, bentNormal, roughness );\n #else\n return vec3( 0.0 );\n #endif\n }\n #endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vWorldPosition = worldPosition.xyz;\n #else\n vec3 cameraToVertex;\n if ( isOrthographic ) {\n cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vReflect = reflect( cameraToVertex, worldNormal );\n #else\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n #endif\n #endif\n#endif",fog_vertex:"#ifdef USE_FOG\n vFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n #ifdef FOG_EXP2\n float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n #else\n float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n #endif\n gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n uniform vec3 fogColor;\n varying float vFogDepth;\n #ifdef FOG_EXP2\n uniform float fogDensity;\n #else\n uniform float fogNear;\n uniform float fogFar;\n #endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n uniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n float dotNL = dot( normal, lightDirection );\n vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n #ifdef USE_GRADIENTMAP\n return vec3( texture2D( gradientMap, coord ).r );\n #else\n vec2 fw = fwidth( coord ) * 0.5;\n return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n #endif\n}",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n uniform sampler2D lightMap;\n uniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n vec3 diffuseColor;\n float specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Lambert\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n uniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n float x = normal.x, y = normal.y, z = normal.z;\n vec3 result = shCoefficients[ 0 ] * 0.886227;\n result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n return result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n return irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n vec3 irradiance = ambientLightColor;\n return irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n if ( cutoffDistance > 0.0 ) {\n distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n }\n return distanceFalloff;\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n struct DirectionalLight {\n vec3 direction;\n vec3 color;\n };\n uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n light.color = directionalLight.color;\n light.direction = directionalLight.direction;\n light.visible = true;\n }\n#endif\n#if NUM_POINT_LIGHTS > 0\n struct PointLight {\n vec3 position;\n vec3 color;\n float distance;\n float decay;\n };\n uniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = pointLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float lightDistance = length( lVector );\n light.color = pointLight.color;\n light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n }\n#endif\n#if NUM_SPOT_LIGHTS > 0\n struct SpotLight {\n vec3 position;\n vec3 direction;\n vec3 color;\n float distance;\n float decay;\n float coneCos;\n float penumbraCos;\n };\n uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = spotLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float angleCos = dot( light.direction, spotLight.direction );\n float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n if ( spotAttenuation > 0.0 ) {\n float lightDistance = length( lVector );\n light.color = spotLight.color * spotAttenuation;\n light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n } else {\n light.color = vec3( 0.0 );\n light.visible = false;\n }\n }\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n struct RectAreaLight {\n vec3 color;\n vec3 position;\n vec3 halfWidth;\n vec3 halfHeight;\n };\n uniform sampler2D ltc_1; uniform sampler2D ltc_2;\n uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n struct HemisphereLight {\n vec3 direction;\n vec3 skyColor;\n vec3 groundColor;\n };\n uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n float dotNL = dot( normal, hemiLight.direction );\n float hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n return irradiance;\n }\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n vec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Toon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon",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 vec3 diffuseColor;\n vec3 specularColor;\n float specularShininess;\n float specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_BlinnPhong\n#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\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 material.ior = ior;\n #ifdef USE_SPECULAR\n float specularIntensityFactor = specularIntensity;\n vec3 specularColorFactor = specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n #endif\n material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n #else\n float specularIntensityFactor = 1.0;\n vec3 specularColorFactor = vec3( 1.0 );\n material.specularF90 = 1.0;\n #endif\n material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n material.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n material.clearcoat = clearcoat;\n material.clearcoatRoughness = clearcoatRoughness;\n material.clearcoatF0 = vec3( 0.04 );\n material.clearcoatF90 = 1.0;\n #ifdef USE_CLEARCOATMAP\n material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n #endif\n #ifdef USE_CLEARCOAT_ROUGHNESSMAP\n material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n #endif\n material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n material.clearcoatRoughness += geometryRoughness;\n material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n material.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n material.iridescence = iridescence;\n material.iridescenceIOR = iridescenceIOR;\n #ifdef USE_IRIDESCENCEMAP\n material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n #endif\n #ifdef USE_IRIDESCENCE_THICKNESSMAP\n material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n #else\n material.iridescenceThickness = iridescenceThicknessMaximum;\n #endif\n#endif\n#ifdef USE_SHEEN\n material.sheenColor = sheenColor;\n #ifdef USE_SHEEN_COLORMAP\n material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n #endif\n material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n #ifdef USE_SHEEN_ROUGHNESSMAP\n material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n #ifdef USE_ANISOTROPYMAP\n mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n #else\n vec2 anisotropyV = anisotropyVector;\n #endif\n material.anisotropy = length( anisotropyV );\n if( material.anisotropy == 0.0 ) {\n anisotropyV = vec2( 1.0, 0.0 );\n } else {\n anisotropyV /= material.anisotropy;\n material.anisotropy = saturate( material.anisotropy );\n }\n material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n vec3 diffuseColor;\n float roughness;\n vec3 specularColor;\n float specularF90;\n float dispersion;\n #ifdef USE_CLEARCOAT\n float clearcoat;\n float clearcoatRoughness;\n vec3 clearcoatF0;\n float clearcoatF90;\n #endif\n #ifdef USE_IRIDESCENCE\n float iridescence;\n float iridescenceIOR;\n float iridescenceThickness;\n vec3 iridescenceFresnel;\n vec3 iridescenceF0;\n #endif\n #ifdef USE_SHEEN\n vec3 sheenColor;\n float sheenRoughness;\n #endif\n #ifdef IOR\n float ior;\n #endif\n #ifdef USE_TRANSMISSION\n float transmission;\n float transmissionAlpha;\n float thickness;\n float attenuationDistance;\n vec3 attenuationColor;\n #endif\n #ifdef USE_ANISOTROPY\n float anisotropy;\n float alphaT;\n vec3 anisotropyT;\n vec3 anisotropyB;\n #endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n float a2 = pow2( alpha );\n float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n return 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n float a2 = pow2( alpha );\n float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n return RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n float v = 0.5 / ( gv + gl );\n return saturate(v);\n }\n float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n float a2 = alphaT * alphaB;\n highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n highp float v2 = dot( v, v );\n float w2 = a2 / v2;\n return RECIPROCAL_PI * a2 * pow2 ( w2 );\n }\n#endif\n#ifdef USE_CLEARCOAT\n vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n vec3 f0 = material.clearcoatF0;\n float f90 = material.clearcoatF90;\n float roughness = material.clearcoatRoughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n return F * ( V * D );\n }\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n vec3 f0 = material.specularColor;\n float f90 = material.specularF90;\n float roughness = material.roughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n #ifdef USE_IRIDESCENCE\n F = mix( F, material.iridescenceFresnel, material.iridescence );\n #endif\n #ifdef USE_ANISOTROPY\n float dotTL = dot( material.anisotropyT, lightDir );\n float dotTV = dot( material.anisotropyT, viewDir );\n float dotTH = dot( material.anisotropyT, halfDir );\n float dotBL = dot( material.anisotropyB, lightDir );\n float dotBV = dot( material.anisotropyB, viewDir );\n float dotBH = dot( material.anisotropyB, halfDir );\n float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n #else\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n #endif\n return F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n const float LUT_SIZE = 64.0;\n const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n const float LUT_BIAS = 0.5 / LUT_SIZE;\n float dotNV = saturate( dot( N, V ) );\n vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n uv = uv * LUT_SCALE + LUT_BIAS;\n return uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n float l = length( f );\n return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n float x = dot( v1, v2 );\n float y = abs( x );\n float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n float b = 3.4175940 + ( 4.1616724 + y ) * y;\n float v = a / b;\n float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n return 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 vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n vec3 lightNormal = cross( v1, v2 );\n if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n vec3 T1, T2;\n T1 = normalize( V - N * dot( V, N ) );\n T2 = - cross( N, T1 );\n mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n vec3 coords[ 4 ];\n coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n coords[ 0 ] = normalize( coords[ 0 ] );\n coords[ 1 ] = normalize( coords[ 1 ] );\n coords[ 2 ] = normalize( coords[ 2 ] );\n coords[ 3 ] = normalize( coords[ 3 ] );\n vec3 vectorFormFactor = vec3( 0.0 );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n float result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n return vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n float alpha = pow2( roughness );\n float invAlpha = 1.0 / alpha;\n float cos2h = dotNH * dotNH;\n float sin2h = max( 1.0 - cos2h, 0.0078125 );\n return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n return 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 vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float D = D_Charlie( sheenRoughness, dotNH );\n float V = V_Neubelt( dotNV, dotNL );\n return sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n float r2 = roughness * roughness;\n float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n return saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n vec4 r = roughness * c0 + c1;\n float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n return 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 vec2 fab = DFGApprox( normal, viewDir, roughness );\n return specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\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#endif\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n #ifdef USE_IRIDESCENCE\n vec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n #else\n vec3 Fr = specularColor;\n #endif\n vec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n float Ess = fab.x + fab.y;\n float Ems = 1.0 - Ess;\n vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n singleScatter += FssEss;\n multiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 normal = geometryNormal;\n vec3 viewDir = geometryViewDir;\n vec3 position = geometryPosition;\n vec3 lightPos = rectAreaLight.position;\n vec3 halfWidth = rectAreaLight.halfWidth;\n vec3 halfHeight = rectAreaLight.halfHeight;\n vec3 lightColor = rectAreaLight.color;\n float roughness = material.roughness;\n vec3 rectCoords[ 4 ];\n rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n vec2 uv = LTC_Uv( normal, viewDir, roughness );\n vec4 t1 = texture2D( ltc_1, uv );\n vec4 t2 = texture2D( ltc_2, uv );\n mat3 mInv = mat3(\n vec3( t1.x, 0, t1.y ),\n vec3( 0, 1, 0 ),\n vec3( t1.z, 0, t1.w )\n );\n vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n }\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n #ifdef USE_CLEARCOAT\n float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n vec3 ccIrradiance = dotNLcc * directLight.color;\n clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n #endif\n reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n #ifdef USE_CLEARCOAT\n clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n #endif\n vec3 singleScattering = vec3( 0.0 );\n vec3 multiScattering = vec3( 0.0 );\n vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n #ifdef USE_IRIDESCENCE\n computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n #else\n computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n #endif\n vec3 totalScattering = singleScattering + multiScattering;\n vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n reflectedLight.indirectSpecular += radiance * singleScattering;\n reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct RE_Direct_Physical\n#define RE_Direct_RectArea RE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular RE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n geometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n float dotNVi = saturate( dot( normal, geometryViewDir ) );\n if ( material.iridescenceThickness == 0.0 ) {\n material.iridescence = 0.0;\n } else {\n material.iridescence = saturate( material.iridescence );\n }\n if ( material.iridescence > 0.0 ) {\n material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n }\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n pointLight = pointLights[ i ];\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n SpotLight spotLight;\n vec4 spotColor;\n vec3 spotLightCoord;\n bool inSpotLightMap;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n spotLight = spotLights[ i ];\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n #else\n #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #endif\n #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n #endif\n #undef SPOT_LIGHT_MAP_INDEX\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n directionalLight = directionalLights[ i ];\n getDirectionalLightInfo( directionalLight, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n RectAreaLight rectAreaLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n rectAreaLight = rectAreaLights[ i ];\n RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n vec3 iblIrradiance = vec3( 0.0 );\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #if ( NUM_HEMI_LIGHTS > 0 )\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if defined( RE_IndirectSpecular )\n vec3 radiance = vec3( 0.0 );\n vec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n irradiance += lightMapIrradiance;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n iblIrradiance += getIBLIrradiance( geometryNormal );\n #endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n #ifdef USE_ANISOTROPY\n radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n #else\n radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n #endif\n #ifdef USE_CLEARCOAT\n clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n #endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGARITHMIC_DEPTH_BUFFER\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGARITHMIC_DEPTH_BUFFER\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif",map_fragment:"#ifdef USE_MAP\n vec4 sampledDiffuseColor = texture2D( map, vMapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\n #endif\n diffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n uniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n #if defined( USE_POINTS_UV )\n vec2 uv = vUv;\n #else\n vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n #endif\n#endif\n#ifdef USE_MAP\n diffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n varying vec2 vUv;\n#else\n #if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n uniform mat3 uvTransform;\n #endif\n#endif\n#ifdef USE_MAP\n uniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n metalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n uniform sampler2D metalnessMap;\n#endif",morphinstance_vertex:"#ifdef USE_INSTANCING_MORPH\n float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n }\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS )\n vColor *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n #if defined( USE_COLOR_ALPHA )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n #elif defined( USE_COLOR )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n #endif\n }\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n objectNormal *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n #ifndef USE_INSTANCING_MORPH\n uniform float morphTargetBaseInfluence;\n uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n #endif\n uniform sampler2DArray morphTargetsTexture;\n uniform ivec2 morphTargetsTextureSize;\n vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n int y = texelIndex / morphTargetsTextureSize.x;\n int x = texelIndex - y * morphTargetsTextureSize.x;\n ivec3 morphUV = ivec3( x, y, morphTargetIndex );\n return texelFetch( morphTargetsTexture, morphUV, 0 );\n }\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n transformed *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#else\n vec3 normal = normalize( vNormal );\n #ifdef DOUBLE_SIDED\n normal *= faceDirection;\n #endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n #ifdef USE_TANGENT\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn = getTangentFrame( - vViewPosition, normal,\n #if defined( USE_NORMALMAP )\n vNormalMapUv\n #elif defined( USE_CLEARCOAT_NORMALMAP )\n vClearcoatNormalMapUv\n #else\n vUv\n #endif\n );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n #endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n #ifdef USE_TANGENT\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n #endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n #ifdef FLIP_SIDED\n normal = - normal;\n #endif\n #ifdef DOUBLE_SIDED\n normal = normal * faceDirection;\n #endif\n normal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n normal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #ifdef USE_TANGENT\n vTangent = normalize( transformedTangent );\n vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n #endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n uniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n vec3 N = surf_norm;\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n return mat3( T * scale, B * scale, N );\n }\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n vec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n clearcoatMapN.xy *= clearcoatNormalScale;\n clearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n uniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform sampler2D clearcoatNormalMap;\n uniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n uniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\nconst float Inv255 = 1. / 255.;\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\nvec4 packDepthToRGBA( const in float v ) {\n if( v <= 0.0 )\n return vec4( 0., 0., 0., 0. );\n if( v >= 1.0 )\n return vec4( 1., 1., 1., 1. );\n float vuf;\n float af = modf( v * PackFactors.a, vuf );\n float bf = modf( vuf * ShiftRight8, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\n}\nvec3 packDepthToRGB( const in float v ) {\n if( v <= 0.0 )\n return vec3( 0., 0., 0. );\n if( v >= 1.0 )\n return vec3( 1., 1., 1. );\n float vuf;\n float bf = modf( v * PackFactors.b, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec3( vuf * Inv255, gf * PackUpscale, bf );\n}\nvec2 packDepthToRG( const in float v ) {\n if( v <= 0.0 )\n return vec2( 0., 0. );\n if( v >= 1.0 )\n return vec2( 1., 1. );\n float vuf;\n float gf = modf( v * 256., vuf );\n return vec2( vuf * Inv255, gf );\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors4 );\n}\nfloat unpackRGBToDepth( const in vec3 v ) {\n return dot( v, UnpackFactors3 );\n}\nfloat unpackRGToDepth( const in vec2 v ) {\n return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\n}\nvec4 pack2HalfToRGBA( const in vec2 v ) {\n vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( const in vec4 v ) {\n return 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 return ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n mvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n vec3 dithering( vec3 color ) {\n float grid_position = rand( gl_FragCoord.xy );\n vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n return color + dither_shift_RGB;\n }\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n roughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n uniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n float depth = unpackRGBAToDepth( texture2D( depths, uv ) );\n #ifdef USE_REVERSED_DEPTH_BUFFER\n return step( depth, compare );\n #else\n return step( compare, depth );\n #endif\n }\n vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n return unpackRGBATo2Half( texture2D( shadow, uv ) );\n }\n float VSMShadow( sampler2D shadow, vec2 uv, float compare ) {\n float occlusion = 1.0;\n vec2 distribution = texture2DDistribution( shadow, uv );\n #ifdef USE_REVERSED_DEPTH_BUFFER\n float hard_shadow = step( distribution.x, compare );\n #else\n float hard_shadow = step( compare, distribution.x );\n #endif\n if ( hard_shadow != 1.0 ) {\n float distance = compare - distribution.x;\n float variance = max( 0.00000, distribution.y * distribution.y );\n float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n }\n return occlusion;\n }\n float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n #if defined( SHADOWMAP_TYPE_PCF )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx0 = - texelSize.x * shadowRadius;\n float dy0 = - texelSize.y * shadowRadius;\n float dx1 = + texelSize.x * shadowRadius;\n float dy1 = + texelSize.y * shadowRadius;\n float dx2 = dx0 / 2.0;\n float dy2 = dy0 / 2.0;\n float dx3 = dx1 / 2.0;\n float dy3 = dy1 / 2.0;\n shadow = (\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n ) * ( 1.0 / 17.0 );\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx = texelSize.x;\n float dy = texelSize.y;\n vec2 uv = shadowCoord.xy;\n vec2 f = fract( uv * shadowMapSize + 0.5 );\n uv -= f * texelSize;\n shadow = (\n texture2DCompare( shadowMap, uv, shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n f.x ),\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n f.x ),\n f.y )\n ) * ( 1.0 / 9.0 );\n #elif defined( SHADOWMAP_TYPE_VSM )\n shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n #else\n shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n vec2 cubeToUV( vec3 v, float texelSizeY ) {\n vec3 absV = abs( v );\n float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n absV *= scaleToCube;\n v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n vec2 planar = v.xy;\n float almostATexel = 1.5 * texelSizeY;\n float almostOne = 1.0 - almostATexel;\n if ( absV.z >= almostOne ) {\n if ( v.z > 0.0 )\n planar.x = 4.0 - v.x;\n } else if ( absV.x >= almostOne ) {\n float signX = sign( v.x );\n planar.x = v.z * signX + 2.0 * signX;\n } else if ( absV.y >= almostOne ) {\n float signY = sign( v.y );\n planar.x = v.x + 2.0 * signY + 2.0;\n planar.y = v.z * signY - 2.0;\n }\n return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n }\n float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n float shadow = 1.0;\n vec3 lightToPosition = shadowCoord.xyz;\n \n float lightToPositionLength = length( lightToPosition );\n if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;\n vec3 bd3D = normalize( lightToPosition );\n vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n shadow = (\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n ) * ( 1.0 / 9.0 );\n #else\n shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n vec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n #if NUM_DIR_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n shadowWorldPosition = worldPosition;\n #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n #endif\n vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n float shadow = 1.0;\n #ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n directionalLight = directionalLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n spotLight = spotLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n pointLight = pointLightShadows[ i ];\n shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #endif\n return shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n mat4 boneMatX = getBoneMatrix( skinIndex.x );\n mat4 boneMatY = getBoneMatrix( skinIndex.y );\n mat4 boneMatZ = getBoneMatrix( skinIndex.z );\n mat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n uniform mat4 bindMatrix;\n uniform mat4 bindMatrixInverse;\n uniform highp sampler2D boneTexture;\n mat4 getBoneMatrix( const in float i ) {\n int size = textureSize( boneTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n vec4 skinned = vec4( 0.0 );\n skinned += boneMatX * skinVertex * skinWeight.x;\n skinned += boneMatY * skinVertex * skinWeight.y;\n skinned += boneMatZ * skinVertex * skinWeight.z;\n skinned += boneMatW * skinVertex * skinWeight.w;\n transformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n mat4 skinMatrix = mat4( 0.0 );\n skinMatrix += skinWeight.x * boneMatX;\n skinMatrix += skinWeight.y * boneMatY;\n skinMatrix += skinWeight.z * boneMatZ;\n skinMatrix += skinWeight.w * boneMatW;\n skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n #ifdef USE_TANGENT\n objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n #endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n specularStrength = texelSpecular.r;\n#else\n specularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n uniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_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 return saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n return saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 CineonToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n color = max( vec3( 0.0 ), color - 0.004 );\n return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n vec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n return a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n const mat3 ACESInputMat = mat3(\n vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),\n vec3( 0.04823, 0.01566, 0.83777 )\n );\n const mat3 ACESOutputMat = mat3(\n vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),\n vec3( -0.07367, -0.00605, 1.07602 )\n );\n color *= toneMappingExposure / 0.6;\n color = ACESInputMat * color;\n color = RRTAndODTFit( color );\n color = ACESOutputMat * color;\n return saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3( 1.6605, - 0.1246, - 0.0182 ),\n vec3( - 0.5876, 1.1329, - 0.1006 ),\n vec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3( 0.6274, 0.0691, 0.0164 ),\n vec3( 0.3293, 0.9195, 0.0880 ),\n vec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n vec3 x2 = x * x;\n vec3 x4 = x2 * x2;\n return + 15.5 * x4 * x2\n - 40.14 * x4 * x\n + 31.96 * x4\n - 6.868 * x2 * x\n + 0.4298 * x2\n + 0.1191 * x\n - 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n const mat3 AgXInsetMatrix = mat3(\n vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n );\n const mat3 AgXOutsetMatrix = mat3(\n vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n );\n const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;\n color *= toneMappingExposure;\n color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n color = AgXInsetMatrix * color;\n color = max( color, 1e-10 ); color = log2( color );\n color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n color = clamp( color, 0.0, 1.0 );\n color = agxDefaultContrastApprox( color );\n color = AgXOutsetMatrix * color;\n color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n color = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n color = clamp( color, 0.0, 1.0 );\n return color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n const float StartCompression = 0.8 - 0.04;\n const float Desaturation = 0.15;\n color *= toneMappingExposure;\n float x = min( color.r, min( color.g, color.b ) );\n float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n color -= offset;\n float peak = max( color.r, max( color.g, color.b ) );\n if ( peak < StartCompression ) return color;\n float d = 1. - StartCompression;\n float newPeak = 1. - d * d / ( peak + d - StartCompression );\n color *= newPeak / peak;\n float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n return mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n material.transmission = transmission;\n material.transmissionAlpha = 1.0;\n material.thickness = thickness;\n material.attenuationDistance = attenuationDistance;\n material.attenuationColor = attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n #endif\n #ifdef USE_THICKNESSMAP\n material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n #endif\n vec3 pos = vWorldPosition;\n vec3 v = normalize( cameraPosition - pos );\n vec3 n = inverseTransformDirection( normal, viewMatrix );\n vec4 transmitted = getIBLVolumeRefraction(\n n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n material.attenuationColor, material.attenuationDistance );\n material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n uniform float transmission;\n uniform float thickness;\n uniform float attenuationDistance;\n uniform vec3 attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n uniform sampler2D transmissionMap;\n #endif\n #ifdef USE_THICKNESSMAP\n uniform sampler2D thicknessMap;\n #endif\n uniform vec2 transmissionSamplerSize;\n uniform sampler2D transmissionSamplerMap;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrix;\n varying vec3 vWorldPosition;\n float w0( float a ) {\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n }\n float w1( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n }\n float w2( float a ){\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n }\n float w3( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * a );\n }\n float g0( float a ) {\n return w0( a ) + w1( a );\n }\n float g1( float a ) {\n return w2( a ) + w3( a );\n }\n float h0( float a ) {\n return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n }\n float h1( float a ) {\n return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n }\n vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n uv = uv * texelSize.zw + 0.5;\n vec2 iuv = floor( uv );\n vec2 fuv = fract( uv );\n float g0x = g0( fuv.x );\n float g1x = g1( fuv.x );\n float h0x = h0( fuv.x );\n float h1x = h1( fuv.x );\n float h0y = h0( fuv.y );\n float h1y = h1( fuv.y );\n vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n }\n vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n vec2 fLodSizeInv = 1.0 / fLodSize;\n vec2 cLodSizeInv = 1.0 / cLodSize;\n vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n return mix( fSample, cSample, fract( lod ) );\n }\n vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n vec3 modelScale;\n modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n return normalize( refractionVector ) * thickness * modelScale;\n }\n float applyIorToRoughness( const in float roughness, const in float ior ) {\n return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n }\n vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n }\n vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n if ( isinf( attenuationDistance ) ) {\n return vec3( 1.0 );\n } else {\n vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;\n }\n }\n vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n const in vec3 attenuationColor, const in float attenuationDistance ) {\n vec4 transmittedLight;\n vec3 transmittance;\n #ifdef USE_DISPERSION\n float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n for ( int i = 0; i < 3; i ++ ) {\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n transmittedLight[ i ] = transmissionSample[ i ];\n transmittedLight.a += transmissionSample.a;\n transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n }\n transmittedLight.a /= 3.0;\n #else\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n #endif\n vec3 attenuatedColor = transmittance * transmittedLight.rgb;\n vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n }\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n uniform mat3 mapTransform;\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n uniform mat3 alphaMapTransform;\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n uniform mat3 lightMapTransform;\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n uniform mat3 aoMapTransform;\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n uniform mat3 bumpMapTransform;\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n uniform mat3 normalMapTransform;\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n uniform mat3 displacementMapTransform;\n varying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapTransform;\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n uniform mat3 metalnessMapTransform;\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n uniform mat3 roughnessMapTransform;\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n uniform mat3 anisotropyMapTransform;\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n uniform mat3 clearcoatMapTransform;\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform mat3 clearcoatNormalMapTransform;\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform mat3 clearcoatRoughnessMapTransform;\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n uniform mat3 sheenColorMapTransform;\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n uniform mat3 sheenRoughnessMapTransform;\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n uniform mat3 iridescenceMapTransform;\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform mat3 iridescenceThicknessMapTransform;\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n uniform mat3 specularMapTransform;\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n uniform mat3 specularColorMapTransform;\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n uniform mat3 specularIntensityMapTransform;\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n vUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n vec4 worldPosition = vec4( transformed, 1.0 );\n #ifdef USE_BATCHING\n worldPosition = batchingMatrix * worldPosition;\n #endif\n #ifdef USE_INSTANCING\n worldPosition = instanceMatrix * worldPosition;\n #endif\n worldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n gl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n vec4 texColor = texture2D( t2D, vUv );\n #ifdef DECODE_VIDEO_TEXTURE\n texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n uniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n #ifdef ENVMAP_TYPE_CUBE\n vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n #elif defined( ENVMAP_TYPE_CUBE_UV )\n vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n #else\n vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n gl_FragColor = texColor;\n gl_FragColor.a *= opacity;\n #include \n #include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n uniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #if DEPTH_PACKING == 3200\n diffuseColor.a = opacity;\n #endif\n #include \n #include \n #include \n #include \n #include \n #ifdef USE_REVERSED_DEPTH_BUFFER\n float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ];\n #else\n float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5;\n #endif\n #if DEPTH_PACKING == 3200\n gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n #elif DEPTH_PACKING == 3201\n gl_FragColor = packDepthToRGBA( fragCoordZ );\n #elif DEPTH_PACKING == 3202\n gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n #elif DEPTH_PACKING == 3203\n gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n #endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vWorldPosition = 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 \n#include \nvoid main () {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #include \n #include \n #include \n #include \n float dist = length( vWorldPosition - referencePosition );\n dist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n dist = saturate( dist );\n gl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n vec3 direction = normalize( vWorldDirection );\n vec2 sampleUV = equirectUv( direction );\n gl_FragColor = texture2D( tEquirect, sampleUV );\n #include \n #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 \n#include \nvoid main() {\n vLineDistance = scale * lineDistance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #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 \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n if ( mod( vLineDistance, totalSize ) > dashSize ) {\n discard;\n }\n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #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 #include \n #include \n #include \n #include \n #include \n #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n #include \n #include \n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n varying 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 \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n #else\n reflectedLight.indirectDiffuse += vec3( 1.0 );\n #endif\n #include \n reflectedLight.indirectDiffuse *= diffuseColor.rgb;\n vec3 outgoingLight = reflectedLight.indirectDiffuse;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshlambert_vert:"#define LAMBERT\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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}",meshlambert_frag:"#define LAMBERT\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 \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #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 \n#include \nvoid main() {\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 vViewPosition = - 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 \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 viewDir = normalize( vViewPosition );\n vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n vec3 y = cross( viewDir, x );\n vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n #ifdef USE_MATCAP\n vec4 matcapColor = texture2D( matcap, uv );\n #else\n vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n #endif\n vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n #include \n #include \n #include \n #include \n #include \n #include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n vViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n #include \n #include \n #include \n #include \n gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n #ifdef OPAQUE\n gl_FragColor.a = 1.0;\n #endif\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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #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 \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n varying 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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n#ifdef USE_TRANSMISSION\n vWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n #define IOR\n #define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n uniform float ior;\n#endif\n#ifdef USE_SPECULAR\n uniform float specularIntensity;\n uniform vec3 specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n uniform sampler2D specularColorMap;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n uniform sampler2D specularIntensityMap;\n #endif\n#endif\n#ifdef USE_CLEARCOAT\n uniform float clearcoat;\n uniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n uniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n uniform float iridescence;\n uniform float iridescenceIOR;\n uniform float iridescenceThicknessMinimum;\n uniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n uniform vec3 sheenColor;\n uniform float sheenRoughness;\n #ifdef USE_SHEEN_COLORMAP\n uniform sampler2D sheenColorMap;\n #endif\n #ifdef USE_SHEEN_ROUGHNESSMAP\n uniform sampler2D sheenRoughnessMap;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n uniform vec2 anisotropyVector;\n #ifdef USE_ANISOTROPYMAP\n uniform sampler2D anisotropyMap;\n #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 \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n #include \n vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n #ifdef USE_SHEEN\n float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n #endif\n #ifdef USE_CLEARCOAT\n float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n #endif\n #include \n #include \n #include \n #include \n #include \n #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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #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 vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n varying vec2 vUv;\n uniform mat3 uvTransform;\n#endif\nvoid main() {\n #ifdef USE_POINTS_UV\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n gl_PointSize = size;\n #ifdef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n #endif\n #include \n #include \n #include \n #include \n}",points_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 vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\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}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n #include \n #include \n #include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n vec4 mvPosition = modelViewMatrix[ 3 ];\n vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\n #ifndef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n #endif\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n gl_Position = projectionMatrix * mvPosition;\n #include \n #include \n #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 \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n}"},l={common:{diffuse:{value:new r.Q1f(0xffffff)},opacity:{value:1},map:{value:null},mapTransform:{value:new r.dwI},alphaMap:{value:null},alphaMapTransform:{value:new r.dwI},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new r.dwI}},envmap:{envMap:{value:null},envMapRotation:{value:new r.dwI},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new r.dwI}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new r.dwI}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new r.dwI},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new r.dwI},normalScale:{value:new r.I9Y(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new r.dwI},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new r.dwI}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new r.dwI}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new r.dwI}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new r.Q1f(0xffffff)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,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 r.Q1f(0xffffff)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new r.dwI},alphaTest:{value:0},uvTransform:{value:new r.dwI}},sprite:{diffuse:{value:new r.Q1f(0xffffff)},opacity:{value:1},center:{value:new r.I9Y(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new r.dwI},alphaMap:{value:null},alphaMapTransform:{value:new r.dwI},alphaTest:{value:0}}},s={basic:{uniforms:(0,r.Iit)([l.common,l.specularmap,l.envmap,l.aomap,l.lightmap,l.fog]),vertexShader:o.meshbasic_vert,fragmentShader:o.meshbasic_frag},lambert:{uniforms:(0,r.Iit)([l.common,l.specularmap,l.envmap,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)}}]),vertexShader:o.meshlambert_vert,fragmentShader:o.meshlambert_frag},phong:{uniforms:(0,r.Iit)([l.common,l.specularmap,l.envmap,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)},specular:{value:new r.Q1f(1118481)},shininess:{value:30}}]),vertexShader:o.meshphong_vert,fragmentShader:o.meshphong_frag},standard:{uniforms:(0,r.Iit)([l.common,l.envmap,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.roughnessmap,l.metalnessmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag},toon:{uniforms:(0,r.Iit)([l.common,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.gradientmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)}}]),vertexShader:o.meshtoon_vert,fragmentShader:o.meshtoon_frag},matcap:{uniforms:(0,r.Iit)([l.common,l.bumpmap,l.normalmap,l.displacementmap,l.fog,{matcap:{value:null}}]),vertexShader:o.meshmatcap_vert,fragmentShader:o.meshmatcap_frag},points:{uniforms:(0,r.Iit)([l.points,l.fog]),vertexShader:o.points_vert,fragmentShader:o.points_frag},dashed:{uniforms:(0,r.Iit)([l.common,l.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:o.linedashed_vert,fragmentShader:o.linedashed_frag},depth:{uniforms:(0,r.Iit)([l.common,l.displacementmap]),vertexShader:o.depth_vert,fragmentShader:o.depth_frag},normal:{uniforms:(0,r.Iit)([l.common,l.bumpmap,l.normalmap,l.displacementmap,{opacity:{value:1}}]),vertexShader:o.meshnormal_vert,fragmentShader:o.meshnormal_frag},sprite:{uniforms:(0,r.Iit)([l.sprite,l.fog]),vertexShader:o.sprite_vert,fragmentShader:o.sprite_frag},background:{uniforms:{uvTransform:{value:new r.dwI},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:o.background_vert,fragmentShader:o.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new r.dwI}},vertexShader:o.backgroundCube_vert,fragmentShader:o.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:o.cube_vert,fragmentShader:o.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:o.equirect_vert,fragmentShader:o.equirect_frag},distanceRGBA:{uniforms:(0,r.Iit)([l.common,l.displacementmap,{referencePosition:{value:new r.Pq0},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:o.distanceRGBA_vert,fragmentShader:o.distanceRGBA_frag},shadow:{uniforms:(0,r.Iit)([l.lights,l.fog,{color:{value:new r.Q1f(0)},opacity:{value:1}}]),vertexShader:o.shadow_vert,fragmentShader:o.shadow_frag}};s.physical={uniforms:(0,r.Iit)([s.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new r.dwI},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new r.dwI},clearcoatNormalScale:{value:new r.I9Y(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new r.dwI},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new r.dwI},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new r.dwI},sheen:{value:0},sheenColor:{value:new r.Q1f(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new r.dwI},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new r.dwI},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new r.dwI},transmissionSamplerSize:{value:new r.I9Y},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new r.dwI},attenuationDistance:{value:0},attenuationColor:{value:new r.Q1f(0)},specularColor:{value:new r.Q1f(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new r.dwI},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new r.dwI},anisotropyVector:{value:new r.I9Y},anisotropyMap:{value:null},anisotropyMapTransform:{value:new r.dwI}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag};let c={r:0,b:0,g:0},d=new r.O9p,u=new r.kn4;function f(e,n,t,i,a,o,l){let f,p,m=new r.Q1f(0),h=+(!0!==o),_=null,g=0,v=null;function E(e){let r=!0===e.isScene?e.background:null;return r&&r.isTexture&&(r=(e.backgroundBlurriness>0?t:n).get(r)),r}function S(n,t){n.getRGB(c,(0,r._Ut)(e)),i.buffers.color.setClear(c.r,c.g,c.b,t,l)}return{getClearColor:function(){return m},setClearColor:function(e,n=1){m.set(e),S(m,h=n)},getClearAlpha:function(){return h},setClearAlpha:function(e){S(m,h=e)},render:function(n){let t=!1,r=E(n);null===r?S(m,h):r&&r.isColor&&(S(r,1),t=!0);let a=e.xr.getEnvironmentBlendMode();"additive"===a?i.buffers.color.setClear(0,0,0,1,l):"alpha-blend"===a&&i.buffers.color.setClear(0,0,0,0,l),(e.autoClear||t)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))},addToRenderList:function(n,t){let i=E(t);i&&(i.isCubeTexture||i.mapping===r.Om)?(void 0===p&&((p=new r.eaF(new r.iNn(1,1,1),new r.BKk({name:"BackgroundCubeMaterial",uniforms:(0,r.lxW)(s.backgroundCube.uniforms),vertexShader:s.backgroundCube.vertexShader,fragmentShader:s.backgroundCube.fragmentShader,side:r.hsX,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1}))).geometry.deleteAttribute("normal"),p.geometry.deleteAttribute("uv"),p.onBeforeRender=function(e,n,t){this.matrixWorld.copyPosition(t.matrixWorld)},Object.defineProperty(p.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),a.update(p)),d.copy(t.backgroundRotation),d.x*=-1,d.y*=-1,d.z*=-1,i.isCubeTexture&&!1===i.isRenderTargetTexture&&(d.y*=-1,d.z*=-1),p.material.uniforms.envMap.value=i,p.material.uniforms.flipEnvMap.value=i.isCubeTexture&&!1===i.isRenderTargetTexture?-1:1,p.material.uniforms.backgroundBlurriness.value=t.backgroundBlurriness,p.material.uniforms.backgroundIntensity.value=t.backgroundIntensity,p.material.uniforms.backgroundRotation.value.setFromMatrix4(u.makeRotationFromEuler(d)),p.material.toneMapped=r.ppV.getTransfer(i.colorSpace)!==r.KLL,(_!==i||g!==i.version||v!==e.toneMapping)&&(p.material.needsUpdate=!0,_=i,g=i.version,v=e.toneMapping),p.layers.enableAll(),n.unshift(p,p.geometry,p.material,0,0,null)):i&&i.isTexture&&(void 0===f&&((f=new r.eaF(new r.bdM(2,2),new r.BKk({name:"BackgroundMaterial",uniforms:(0,r.lxW)(s.background.uniforms),vertexShader:s.background.vertexShader,fragmentShader:s.background.fragmentShader,side:r.hB5,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(f.material,"map",{get:function(){return this.uniforms.t2D.value}}),a.update(f)),f.material.uniforms.t2D.value=i,f.material.uniforms.backgroundIntensity.value=t.backgroundIntensity,f.material.toneMapped=r.ppV.getTransfer(i.colorSpace)!==r.KLL,!0===i.matrixAutoUpdate&&i.updateMatrix(),f.material.uniforms.uvTransform.value.copy(i.matrix),(_!==i||g!==i.version||v!==e.toneMapping)&&(f.material.needsUpdate=!0,_=i,g=i.version,v=e.toneMapping),f.layers.enableAll(),n.unshift(f,f.geometry,f.material,0,0,null))},dispose:function(){void 0!==p&&(p.geometry.dispose(),p.material.dispose(),p=void 0),void 0!==f&&(f.geometry.dispose(),f.material.dispose(),f=void 0)}}}function p(e,n){let t=e.getParameter(e.MAX_VERTEX_ATTRIBS),i={},a=d(null),o=a,l=!1;function s(n){return e.bindVertexArray(n)}function c(n){return e.deleteVertexArray(n)}function d(e){let n=[],r=[],i=[];for(let e=0;e=0){let t=i[n],r=a[n];if(void 0===r&&("instanceMatrix"===n&&e.instanceMatrix&&(r=e.instanceMatrix),"instanceColor"===n&&e.instanceColor&&(r=e.instanceColor)),void 0===t||t.attribute!==r||r&&t.data!==r.data)return!0;l++}return o.attributesNum!==l||o.index!==r}(t,_,c,g))&&function(e,n,t,r){let i={},a=n.attributes,l=0,s=t.getAttributes();for(let n in s)if(s[n].location>=0){let t=a[n];void 0===t&&("instanceMatrix"===n&&e.instanceMatrix&&(t=e.instanceMatrix),"instanceColor"===n&&e.instanceColor&&(t=e.instanceColor));let r={};r.attribute=t,t&&t.data&&(r.data=t.data),i[n]=r,l++}o.attributes=i,o.attributesNum=l,o.index=r}(t,_,c,g),null!==g&&n.update(g,e.ELEMENT_ARRAY_BUFFER),(v||l)&&(l=!1,function(t,i,a,o){u();let l=o.attributes,s=a.getAttributes(),c=i.defaultAttributeValues;for(let i in s){let a=s[i];if(a.location>=0){let s=l[i];if(void 0===s&&("instanceMatrix"===i&&t.instanceMatrix&&(s=t.instanceMatrix),"instanceColor"===i&&t.instanceColor&&(s=t.instanceColor)),void 0!==s){let i=s.normalized,l=s.itemSize,c=n.get(s);if(void 0===c)continue;let d=c.buffer,u=c.type,m=c.bytesPerElement,_=u===e.INT||u===e.UNSIGNED_INT||s.gpuType===r.Yuy;if(s.isInterleavedBufferAttribute){let n=s.data,r=n.stride,c=s.offset;if(n.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";n="mediump"}return"mediump"===n&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let l=void 0!==t.precision?t.precision:"highp",s=o(l);s!==l&&(console.warn("THREE.WebGLRenderer:",l,"not supported, using",s,"instead."),l=s);let c=!0===t.logarithmicDepthBuffer,d=!0===t.reversedDepthBuffer&&n.has("EXT_clip_control"),u=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),f=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),p=e.getParameter(e.MAX_TEXTURE_SIZE),m=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),h=e.getParameter(e.MAX_VERTEX_ATTRIBS),_=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),g=e.getParameter(e.MAX_VARYING_VECTORS);return{isWebGL2:!0,getMaxAnisotropy:function(){if(void 0!==a)return a;if(!0===n.has("EXT_texture_filter_anisotropic")){let t=n.get("EXT_texture_filter_anisotropic");a=e.getParameter(t.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else a=0;return a},getMaxPrecision:o,textureFormatReadable:function(n){return n===r.GWd||i.convert(n)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_FORMAT)},textureTypeReadable:function(t){let a=t===r.ix0&&(n.has("EXT_color_buffer_half_float")||n.has("EXT_color_buffer_float"));return t===r.OUM||i.convert(t)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_TYPE)||t===r.RQf||!!a},precision:l,logarithmicDepthBuffer:c,reversedDepthBuffer:d,maxTextures:u,maxVertexTextures:f,maxTextureSize:p,maxCubemapSize:m,maxAttributes:h,maxVertexUniforms:_,maxVaryings:g,maxFragmentUniforms:e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),vertexTextures:f>0,maxSamples:e.getParameter(e.MAX_SAMPLES)}}function _(e){let n=this,t=null,i=0,a=!1,o=!1,l=new r.Zcv,s=new r.dwI,c={value:null,needsUpdate:!1};function d(e,t,r,i){let a=null!==e?e.length:0,o=null;if(0!==a){if(o=c.value,!0!==i||null===o){let n=r+4*a,i=t.matrixWorldInverse;s.getNormalMatrix(i),(null===o||o.length0),n.numPlanes=i,n.numIntersection=0)}}function g(e){let n=new WeakMap;function t(e,n){return n===r.wfO?e.mapping=r.hy7:n===r.uV5&&(e.mapping=r.xFO),e}function i(e){let t=e.target;t.removeEventListener("dispose",i);let r=n.get(t);void 0!==r&&(n.delete(t),r.dispose())}return{get:function(a){if(a&&a.isTexture){let o=a.mapping;if(o===r.wfO||o===r.uV5)if(n.has(a))return t(n.get(a).texture,a.mapping);else{let o=a.image;if(!o||!(o.height>0))return null;{let l=new r.o6l(o.height);return l.fromEquirectangularTexture(e,a),n.set(a,l),a.addEventListener("dispose",i),t(l.texture,a.mapping)}}}return a},dispose:function(){n=new WeakMap}}}let v=[.125,.215,.35,.446,.526,.582],E=new r.qUd,S=new r.Q1f,T=null,M=0,x=0,R=!1,A=(1+Math.sqrt(5))/2,C=1/A,b=[new r.Pq0(-A,C,0),new r.Pq0(A,C,0),new r.Pq0(-C,0,A),new r.Pq0(C,0,A),new r.Pq0(0,A,-C),new r.Pq0(0,A,C),new r.Pq0(-1,1,-1),new r.Pq0(1,1,-1),new r.Pq0(-1,1,1),new r.Pq0(1,1,1)],L=new r.Pq0;class P{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,n=0,t=.1,r=100,i={}){let{size:a=256,position:o=L}=i;T=this._renderer.getRenderTarget(),M=this._renderer.getActiveCubeFace(),x=this._renderer.getActiveMipmapLevel(),R=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,t,r,l,o),n>0&&this._blur(l,0,0,n),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,n=null){return this._fromTexture(e,n)}fromCubemap(e,n=null){return this._fromTexture(e,n)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=I(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=w(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;ee-4?s=v[l-e+4-1]:0===l&&(s=0),i.push(s);let c=1/(o-2),d=-c,u=1+c,f=[d,d,u,d,u,u,d,d,u,u,d,u],p=new Float32Array(108),m=new Float32Array(72),h=new Float32Array(36);for(let e=0;e<6;e++){let n=e%3*2/3-1,t=e>2?0:-1,r=[n,t,0,n+2/3,t,0,n+2/3,t+1,0,n,t,0,n+2/3,t+1,0,n,t+1,0];p.set(r,18*e),m.set(f,12*e);let i=[e,e,e,e,e,e];h.set(i,6*e)}let _=new r.LoY;_.setAttribute("position",new r.THS(p,3)),_.setAttribute("uv",new r.THS(m,2)),_.setAttribute("faceIndex",new r.THS(h,1)),n.push(_),a>4&&a--}return{lodPlanes:n,sizeLods:t,sigmas:i}}(i)),this._blurMaterial=function(e,n,t){let i=new Float32Array(20),a=new r.Pq0(0,1,0);return new r.BKk({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:a}},vertexShader:y(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:r.XIg,depthTest:!1,depthWrite:!1})}(i,e,n)}return i}_compileMaterial(e){let n=new r.eaF(this._lodPlanes[0],e);this._renderer.compile(n,E)}_sceneToCubeUV(e,n,t,i,a){let o=new r.ubm(90,1,n,t),l=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],c=this._renderer,d=c.autoClear,u=c.toneMapping;c.getClearColor(S),c.toneMapping=r.y_p,c.autoClear=!1,c.state.buffers.depth.getReversed()&&(c.setRenderTarget(i),c.clearDepth(),c.setRenderTarget(null));let f=new r.V9B({name:"PMREM.Background",side:r.hsX,depthWrite:!1,depthTest:!1}),p=new r.eaF(new r.iNn,f),m=!1,h=e.background;h?h.isColor&&(f.color.copy(h),e.background=null,m=!0):(f.color.copy(S),m=!0);for(let n=0;n<6;n++){let t=n%3;0===t?(o.up.set(0,l[n],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x+s[n],a.y,a.z)):1===t?(o.up.set(0,0,l[n]),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y+s[n],a.z)):(o.up.set(0,l[n],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y,a.z+s[n]));let r=this._cubeSize;D(i,t*r,n>2?r:0,r,r),c.setRenderTarget(i),m&&c.render(p,o),c.render(e,o)}p.geometry.dispose(),p.material.dispose(),c.toneMapping=u,c.autoClear=d,e.background=h}_textureToCubeUV(e,n){let t=this._renderer,i=e.mapping===r.hy7||e.mapping===r.xFO;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=I()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=w());let a=i?this._cubemapMaterial:this._equirectMaterial,o=new r.eaF(this._lodPlanes[0],a);a.uniforms.envMap.value=e;let l=this._cubeSize;D(n,0,0,3*l,2*l),t.setRenderTarget(n),t.render(o,E)}_applyPMREM(e){let n=this._renderer,t=n.autoClear;n.autoClear=!1;let r=this._lodPlanes.length;for(let n=1;n20&&console.warn(`sigmaRadians, ${a}, is too large and will clip, as it requested ${h} samples when the maximum is set to 20`);let _=[],g=0;for(let e=0;e<20;++e){let n=e/m,t=Math.exp(-n*n/2);_.push(t),0===e?g+=t:ev-4?i-v+4:0),T,3*S,2*S),s.setRenderTarget(n),s.render(d,E)}}function U(e,n,t){let i=new r.nWS(e,n,t);return i.texture.mapping=r.Om,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function D(e,n,t,r,i){e.viewport.set(n,t,r,i),e.scissor.set(n,t,r,i)}function w(){return new r.BKk({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:y(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:r.XIg,depthTest:!1,depthWrite:!1})}function I(){return new r.BKk({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:y(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:r.XIg,depthTest:!1,depthWrite:!1})}function y(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function N(e){let n=new WeakMap,t=null;function i(e){let t=e.target;t.removeEventListener("dispose",i);let r=n.get(t);void 0!==r&&(n.delete(t),r.dispose())}return{get:function(a){if(a&&a.isTexture){let o=a.mapping,l=o===r.wfO||o===r.uV5,s=o===r.hy7||o===r.xFO;if(l||s){let r=n.get(a),o=void 0!==r?r.texture.pmremVersion:0;if(a.isRenderTargetTexture&&a.pmremVersion!==o)return null===t&&(t=new P(e)),(r=l?t.fromEquirectangular(a,r):t.fromCubemap(a,r)).texture.pmremVersion=a.pmremVersion,n.set(a,r),r.texture;{if(void 0!==r)return r.texture;let o=a.image;return l&&o&&o.height>0||s&&o&&function(e){let n=0;for(let t=0;t<6;t++)void 0!==e[t]&&n++;return 6===n}(o)?(null===t&&(t=new P(e)),(r=l?t.fromEquirectangular(a):t.fromCubemap(a)).texture.pmremVersion=a.pmremVersion,n.set(a,r),a.addEventListener("dispose",i),r.texture):null}}}return a},dispose:function(){n=new WeakMap,null!==t&&(t.dispose(),t=null)}}}function O(e){let n={};function t(t){let r;if(void 0!==n[t])return n[t];switch(t){case"WEBGL_depth_texture":r=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:r=e.getExtension(t)}return n[t]=r,r}return{has:function(e){return null!==t(e)},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(e){let n=t(e);return null===n&&(0,r.mcG)("THREE.WebGLRenderer: "+e+" extension not supported."),n}}}function F(e,n,t,i){let a={},o=new WeakMap;function l(e){let r=e.target;for(let e in null!==r.index&&n.remove(r.index),r.attributes)n.remove(r.attributes[e]);r.removeEventListener("dispose",l),delete a[r.id];let s=o.get(r);s&&(n.remove(s),o.delete(r)),i.releaseStatesOfGeometry(r),!0===r.isInstancedBufferGeometry&&delete r._maxInstanceCount,t.memory.geometries--}function s(e){let t=[],i=e.index,a=e.attributes.position,l=0;if(null!==i){let e=i.array;l=i.version;for(let n=0,r=e.length;nn.maxTextureSize&&(h=Math.ceil(m/n.maxTextureSize),m=n.maxTextureSize);let _=new Float32Array(m*h*4*u),g=new r.rFo(_,m,h,u);g.type=r.RQf,g.needsUpdate=!0;let v=4*p;for(let n=0;n0)return e;let i=n*t,a=q[i];if(void 0===a&&(a=new Float32Array(i),q[i]=a),0!==n){r.toArray(a,0);for(let r=1,i=0;r!==n;++r)i+=t,e[r].toArray(a,i)}return a}function J(e,n){if(e.length!==n.length)return!1;for(let t=0,r=e.length;t":" "} ${i}: ${t[e]}`)}return r.join("\n")}(e.getShaderSource(n),r)}}let eZ=new r.Pq0;function eQ(e){return""!==e}function e$(e,n){let t=n.numSpotLightShadows+n.numSpotLightMaps-n.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,n.numDirLights).replace(/NUM_SPOT_LIGHTS/g,n.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,n.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,n.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,n.numPointLights).replace(/NUM_HEMI_LIGHTS/g,n.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,n.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,n.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,n.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,n.numPointLightShadows)}function eJ(e,n){return e.replace(/NUM_CLIPPING_PLANES/g,n.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,n.numClippingPlanes-n.numClipIntersection)}let e0=/^[ \t]*#include +<([\w\d./]+)>/gm;function e1(e){return e.replace(e0,e2)}let e3=new Map;function e2(e,n){let t=o[n];if(void 0===t){let e=e3.get(n);if(void 0!==e)t=o[e],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',n,e);else throw Error("Can not resolve #include <"+n+">")}return e1(t)}let e4=/#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 e5(e){return e.replace(e4,e6)}function e6(e,n,t,r){let i="";for(let e=parseInt(n);e0&&(a+="\n"),(l=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,M].filter(eQ).join("\n")).length>0&&(l+="\n")):(a=[e9(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,M,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+v:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&!1===t.flatShading?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&!1===t.flatShading?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+_:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif","\n"].filter(eQ).join("\n"),l=[e9(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,M,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+g:"",t.envMap?"#define "+v:"",t.envMap?"#define "+E:"",S?"#define CUBEUV_TEXEL_WIDTH "+S.texelWidth:"",S?"#define CUBEUV_TEXEL_HEIGHT "+S.texelHeight:"",S?"#define CUBEUV_MAX_MIP "+S.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&!1===t.flatShading?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+_:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==r.y_p?"#define TONE_MAPPING":"",t.toneMapping!==r.y_p?o.tonemapping_pars_fragment:"",t.toneMapping!==r.y_p?function(e,n){let t;switch(n){case r.kyO:t="Linear";break;case r.Mjd:t="Reinhard";break;case r.nNL:t="Cineon";break;case r.FV:t="ACESFilmic";break;case r.LAk:t="AgX";break;case r.aJ8:t="Neutral";break;case r.g7M:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",n),t="Linear"}return"vec3 "+e+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",o.colorspace_pars_fragment,function(e,n){let t=function(e){r.ppV._getMatrix(eY,r.ppV.workingColorSpace,e);let n=`mat3( ${eY.elements.map(e=>e.toFixed(4))} )`;switch(r.ppV.getTransfer(e)){case r.VxR:return[n,"LinearTransferOETF"];case r.KLL:return[n,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",e),[n,"LinearTransferOETF"]}}(n);return`vec4 ${e}( vec4 value ) { + return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) ); +}`}("linearToOutputTexel",t.outputColorSpace),function(){r.ppV.getLuminanceCoefficients(eZ);let e=eZ.x.toFixed(4),n=eZ.y.toFixed(4),t=eZ.z.toFixed(4);return`float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( ${e}, ${n}, ${t} ); + return dot( weights, rgb ); +}`}(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"","\n"].filter(eQ).join("\n")),m=eJ(m=e$(m=e1(m),t),t),h=eJ(h=e$(h=e1(h),t),t),m=e5(m),h=e5(h),!0!==t.isRawShaderMaterial&&(R="#version 300 es\n",a=[T,"#define attribute in\n#define varying out\n#define texture2D texture"].join("\n")+"\n"+a,l=["#define varying in",t.glslVersion===r.Wdf?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===r.Wdf?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+l);let A=R+a+m,C=R+l+h,b=eK(f,f.VERTEX_SHADER,A),L=eK(f,f.FRAGMENT_SHADER,C);function P(n){if(e.debug.checkShaderErrors){let t=f.getProgramInfoLog(x)||"",r=f.getShaderInfoLog(b)||"",i=f.getShaderInfoLog(L)||"",o=t.trim(),s=r.trim(),c=i.trim(),d=!0,u=!0;if(!1===f.getProgramParameter(x,f.LINK_STATUS))if(d=!1,"function"==typeof e.debug.onShaderError)e.debug.onShaderError(f,x,b,L);else{let e=ej(f,b,"vertex"),t=ej(f,L,"fragment");console.error("THREE.WebGLProgram: Shader Error "+f.getError()+" - VALIDATE_STATUS "+f.getProgramParameter(x,f.VALIDATE_STATUS)+"\n\nMaterial Name: "+n.name+"\nMaterial Type: "+n.type+"\n\nProgram Info Log: "+o+"\n"+e+"\n"+t)}else""!==o?console.warn("THREE.WebGLProgram: Program Info Log:",o):(""===s||""===c)&&(u=!1);u&&(n.diagnostics={runnable:d,programLog:o,vertexShader:{log:s,prefix:a},fragmentShader:{log:c,prefix:l}})}f.deleteShader(b),f.deleteShader(L),s=new eX(f,x),c=function(e,n){let t={},r=e.getProgramParameter(n,e.ACTIVE_ATTRIBUTES);for(let i=0;i0,j=o.clearcoat>0,Z=o.dispersion>0,Q=o.iridescence>0,$=o.sheen>0,J=o.transmission>0,ee=Y&&!!o.anisotropyMap,en=j&&!!o.clearcoatMap,et=j&&!!o.clearcoatNormalMap,er=j&&!!o.clearcoatRoughnessMap,ei=Q&&!!o.iridescenceMap,ea=Q&&!!o.iridescenceThicknessMap,eo=$&&!!o.sheenColorMap,el=$&&!!o.sheenRoughnessMap,es=!!o.specularMap,ec=!!o.specularColorMap,ed=!!o.specularIntensityMap,eu=J&&!!o.transmissionMap,ef=J&&!!o.thicknessMap,ep=!!o.gradientMap,em=!!o.alphaMap,eh=o.alphaTest>0,e_=!!o.alphaHash,eg=!!o.extensions,ev=r.y_p;o.toneMapped&&(null===I||!0===I.isXRRenderTarget)&&(ev=e.toneMapping);let eE={shaderID:P,shaderType:o.type,shaderName:o.name,vertexShader:S,fragmentShader:T,defines:o.defines,customVertexShaderID:M,customFragmentShaderID:x,isRawShaderMaterial:!0===o.isRawShaderMaterial,glslVersion:o.glslVersion,precision:h,batching:O,batchingColor:O&&null!==E._colorsTexture,instancing:N,instancingColor:N&&null!==E.instanceColor,instancingMorph:N&&null!==E.morphTexture,supportsVertexTextures:m,outputColorSpace:null===I?e.outputColorSpace:!0===I.isXRRenderTarget?I.texture.colorSpace:r.Zr2,alphaToCoverage:!!o.alphaToCoverage,map:F,matcap:B,envMap:G,envMapMode:G&&b.mapping,envMapCubeUVHeight:L,aoMap:H,lightMap:V,bumpMap:k,normalMap:W,displacementMap:m&&z,emissiveMap:X,normalMapObjectSpace:W&&o.normalMapType===r.vyJ,normalMapTangentSpace:W&&o.normalMapType===r.bI3,metalnessMap:K,roughnessMap:q,anisotropy:Y,anisotropyMap:ee,clearcoat:j,clearcoatMap:en,clearcoatNormalMap:et,clearcoatRoughnessMap:er,dispersion:Z,iridescence:Q,iridescenceMap:ei,iridescenceThicknessMap:ea,sheen:$,sheenColorMap:eo,sheenRoughnessMap:el,specularMap:es,specularColorMap:ec,specularIntensityMap:ed,transmission:J,transmissionMap:eu,thicknessMap:ef,gradientMap:ep,opaque:!1===o.transparent&&o.blending===r.NTi&&!1===o.alphaToCoverage,alphaMap:em,alphaTest:eh,alphaHash:e_,combine:o.combine,mapUv:F&&g(o.map.channel),aoMapUv:H&&g(o.aoMap.channel),lightMapUv:V&&g(o.lightMap.channel),bumpMapUv:k&&g(o.bumpMap.channel),normalMapUv:W&&g(o.normalMap.channel),displacementMapUv:z&&g(o.displacementMap.channel),emissiveMapUv:X&&g(o.emissiveMap.channel),metalnessMapUv:K&&g(o.metalnessMap.channel),roughnessMapUv:q&&g(o.roughnessMap.channel),anisotropyMapUv:ee&&g(o.anisotropyMap.channel),clearcoatMapUv:en&&g(o.clearcoatMap.channel),clearcoatNormalMapUv:et&&g(o.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:er&&g(o.clearcoatRoughnessMap.channel),iridescenceMapUv:ei&&g(o.iridescenceMap.channel),iridescenceThicknessMapUv:ea&&g(o.iridescenceThicknessMap.channel),sheenColorMapUv:eo&&g(o.sheenColorMap.channel),sheenRoughnessMapUv:el&&g(o.sheenRoughnessMap.channel),specularMapUv:es&&g(o.specularMap.channel),specularColorMapUv:ec&&g(o.specularColorMap.channel),specularIntensityMapUv:ed&&g(o.specularIntensityMap.channel),transmissionMapUv:eu&&g(o.transmissionMap.channel),thicknessMapUv:ef&&g(o.thicknessMap.channel),alphaMapUv:em&&g(o.alphaMap.channel),vertexTangents:!!A.attributes.tangent&&(W||Y),vertexColors:o.vertexColors,vertexAlphas:!0===o.vertexColors&&!!A.attributes.color&&4===A.attributes.color.itemSize,pointsUvs:!0===E.isPoints&&!!A.attributes.uv&&(F||em),fog:!!R,useFog:!0===o.fog,fogExp2:!!R&&R.isFogExp2,flatShading:!0===o.flatShading&&!1===o.wireframe,sizeAttenuation:!0===o.sizeAttenuation,logarithmicDepthBuffer:p,reversedDepthBuffer:y,skinning:!0===E.isSkinnedMesh,morphTargets:void 0!==A.morphAttributes.position,morphNormals:void 0!==A.morphAttributes.normal,morphColors:void 0!==A.morphAttributes.color,morphTargetsCount:D,morphTextureStride:w,numDirLights:c.directional.length,numPointLights:c.point.length,numSpotLights:c.spot.length,numSpotLightMaps:c.spotLightMap.length,numRectAreaLights:c.rectArea.length,numHemiLights:c.hemi.length,numDirLightShadows:c.directionalShadowMap.length,numPointLightShadows:c.pointShadowMap.length,numSpotLightShadows:c.spotShadowMap.length,numSpotLightShadowsWithMaps:c.numSpotLightShadowsWithMaps,numLightProbes:c.numLightProbes,numClippingPlanes:l.numPlanes,numClipIntersection:l.numIntersection,dithering:o.dithering,shadowMapEnabled:e.shadowMap.enabled&&f.length>0,shadowMapType:e.shadowMap.type,toneMapping:ev,decodeVideoTexture:F&&!0===o.map.isVideoTexture&&r.ppV.getTransfer(o.map.colorSpace)===r.KLL,decodeVideoTextureEmissive:X&&!0===o.emissiveMap.isVideoTexture&&r.ppV.getTransfer(o.emissiveMap.colorSpace)===r.KLL,premultipliedAlpha:o.premultipliedAlpha,doubleSided:o.side===r.$EB,flipSided:o.side===r.hsX,useDepthPacking:o.depthPacking>=0,depthPacking:o.depthPacking||0,index0AttributeName:o.index0AttributeName,extensionClipCullDistance:eg&&!0===o.extensions.clipCullDistance&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(eg&&!0===o.extensions.multiDraw||O)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:o.customProgramCacheKey()};return eE.vertexUv1s=u.has(1),eE.vertexUv2s=u.has(2),eE.vertexUv3s=u.has(3),u.clear(),eE},getProgramCacheKey:function(n){var t,r,i,a;let o=[];if(n.shaderID?o.push(n.shaderID):(o.push(n.customVertexShaderID),o.push(n.customFragmentShaderID)),void 0!==n.defines)for(let e in n.defines)o.push(e),o.push(n.defines[e]);return!1===n.isRawShaderMaterial&&(t=o,r=n,t.push(r.precision),t.push(r.outputColorSpace),t.push(r.envMapMode),t.push(r.envMapCubeUVHeight),t.push(r.mapUv),t.push(r.alphaMapUv),t.push(r.lightMapUv),t.push(r.aoMapUv),t.push(r.bumpMapUv),t.push(r.normalMapUv),t.push(r.displacementMapUv),t.push(r.emissiveMapUv),t.push(r.metalnessMapUv),t.push(r.roughnessMapUv),t.push(r.anisotropyMapUv),t.push(r.clearcoatMapUv),t.push(r.clearcoatNormalMapUv),t.push(r.clearcoatRoughnessMapUv),t.push(r.iridescenceMapUv),t.push(r.iridescenceThicknessMapUv),t.push(r.sheenColorMapUv),t.push(r.sheenRoughnessMapUv),t.push(r.specularMapUv),t.push(r.specularColorMapUv),t.push(r.specularIntensityMapUv),t.push(r.transmissionMapUv),t.push(r.thicknessMapUv),t.push(r.combine),t.push(r.fogExp2),t.push(r.sizeAttenuation),t.push(r.morphTargetsCount),t.push(r.morphAttributeCount),t.push(r.numDirLights),t.push(r.numPointLights),t.push(r.numSpotLights),t.push(r.numSpotLightMaps),t.push(r.numHemiLights),t.push(r.numRectAreaLights),t.push(r.numDirLightShadows),t.push(r.numPointLightShadows),t.push(r.numSpotLightShadows),t.push(r.numSpotLightShadowsWithMaps),t.push(r.numLightProbes),t.push(r.shadowMapType),t.push(r.toneMapping),t.push(r.numClippingPlanes),t.push(r.numClipIntersection),t.push(r.depthPacking),i=o,a=n,c.disableAll(),a.supportsVertexTextures&&c.enable(0),a.instancing&&c.enable(1),a.instancingColor&&c.enable(2),a.instancingMorph&&c.enable(3),a.matcap&&c.enable(4),a.envMap&&c.enable(5),a.normalMapObjectSpace&&c.enable(6),a.normalMapTangentSpace&&c.enable(7),a.clearcoat&&c.enable(8),a.iridescence&&c.enable(9),a.alphaTest&&c.enable(10),a.vertexColors&&c.enable(11),a.vertexAlphas&&c.enable(12),a.vertexUv1s&&c.enable(13),a.vertexUv2s&&c.enable(14),a.vertexUv3s&&c.enable(15),a.vertexTangents&&c.enable(16),a.anisotropy&&c.enable(17),a.alphaHash&&c.enable(18),a.batching&&c.enable(19),a.dispersion&&c.enable(20),a.batchingColor&&c.enable(21),a.gradientMap&&c.enable(22),i.push(c.mask),c.disableAll(),a.fog&&c.enable(0),a.useFog&&c.enable(1),a.flatShading&&c.enable(2),a.logarithmicDepthBuffer&&c.enable(3),a.reversedDepthBuffer&&c.enable(4),a.skinning&&c.enable(5),a.morphTargets&&c.enable(6),a.morphNormals&&c.enable(7),a.morphColors&&c.enable(8),a.premultipliedAlpha&&c.enable(9),a.shadowMapEnabled&&c.enable(10),a.doubleSided&&c.enable(11),a.flipSided&&c.enable(12),a.useDepthPacking&&c.enable(13),a.dithering&&c.enable(14),a.transmission&&c.enable(15),a.sheen&&c.enable(16),a.opaque&&c.enable(17),a.pointsUvs&&c.enable(18),a.decodeVideoTexture&&c.enable(19),a.decodeVideoTextureEmissive&&c.enable(20),a.alphaToCoverage&&c.enable(21),i.push(c.mask),o.push(e.outputColorSpace)),o.push(n.customProgramCacheKey),o.join()},getUniforms:function(e){let n,t=_[e.type];if(t){let e=s[t];n=r.LlO.clone(e.uniforms)}else n=e.uniforms;return n},acquireProgram:function(n,t){let r;for(let e=0,n=f.length;e0?r.push(d):!0===o.transparent?i.push(d):t.push(d)},unshift:function(e,n,o,l,s,c){let d=a(e,n,o,l,s,c);o.transmission>0?r.unshift(d):!0===o.transparent?i.unshift(d):t.unshift(d)},finish:function(){for(let t=n,r=e.length;t1&&t.sort(e||ni),r.length>1&&r.sort(n||na),i.length>1&&i.sort(n||na)}}}function nl(){let e=new WeakMap;return{get:function(n,t){let r,i=e.get(n);return void 0===i?(r=new no,e.set(n,[r])):t>=i.length?(r=new no,i.push(r)):r=i[t],r},dispose:function(){e=new WeakMap}}}function ns(){let e={};return{get:function(n){let t;if(void 0!==e[n.id])return e[n.id];switch(n.type){case"DirectionalLight":t={direction:new r.Pq0,color:new r.Q1f};break;case"SpotLight":t={position:new r.Pq0,direction:new r.Pq0,color:new r.Q1f,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new r.Pq0,color:new r.Q1f,distance:0,decay:0};break;case"HemisphereLight":t={direction:new r.Pq0,skyColor:new r.Q1f,groundColor:new r.Q1f};break;case"RectAreaLight":t={color:new r.Q1f,position:new r.Pq0,halfWidth:new r.Pq0,halfHeight:new r.Pq0}}return e[n.id]=t,t}}}let nc=0;function nd(e,n){return 2*!!n.castShadow-2*!!e.castShadow+ +!!n.map-!!e.map}function nu(e){let n=new ns,t=function(){let e={};return{get:function(n){let t;if(void 0!==e[n.id])return e[n.id];switch(n.type){case"DirectionalLight":case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new r.I9Y};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new r.I9Y,shadowCameraNear:1,shadowCameraFar:1e3}}return e[n.id]=t,t}}}(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)i.probe.push(new r.Pq0);let a=new r.Pq0,o=new r.kn4,s=new r.kn4;return{setup:function(r){let a=0,o=0,s=0;for(let e=0;e<9;e++)i.probe[e].set(0,0,0);let c=0,d=0,u=0,f=0,p=0,m=0,h=0,_=0,g=0,v=0,E=0;r.sort(nd);for(let e=0,l=r.length;e0&&(!0===e.has("OES_texture_float_linear")?(i.rectAreaLTC1=l.LTC_FLOAT_1,i.rectAreaLTC2=l.LTC_FLOAT_2):(i.rectAreaLTC1=l.LTC_HALF_1,i.rectAreaLTC2=l.LTC_HALF_2)),i.ambient[0]=a,i.ambient[1]=o,i.ambient[2]=s;let S=i.hash;(S.directionalLength!==c||S.pointLength!==d||S.spotLength!==u||S.rectAreaLength!==f||S.hemiLength!==p||S.numDirectionalShadows!==m||S.numPointShadows!==h||S.numSpotShadows!==_||S.numSpotMaps!==g||S.numLightProbes!==E)&&(i.directional.length=c,i.spot.length=u,i.rectArea.length=f,i.point.length=d,i.hemi.length=p,i.directionalShadow.length=m,i.directionalShadowMap.length=m,i.pointShadow.length=h,i.pointShadowMap.length=h,i.spotShadow.length=_,i.spotShadowMap.length=_,i.directionalShadowMatrix.length=m,i.pointShadowMatrix.length=h,i.spotLightMatrix.length=_+g-v,i.spotLightMap.length=g,i.numSpotLightShadowsWithMaps=v,i.numLightProbes=E,S.directionalLength=c,S.pointLength=d,S.spotLength=u,S.rectAreaLength=f,S.hemiLength=p,S.numDirectionalShadows=m,S.numPointShadows=h,S.numSpotShadows=_,S.numSpotMaps=g,S.numLightProbes=E,i.version=nc++)},setupView:function(e,n){let t=0,r=0,l=0,c=0,d=0,u=n.matrixWorldInverse;for(let n=0,f=e.length;n=a.length?(i=new nf(e),a.push(i)):i=a[r],i},dispose:function(){n=new WeakMap}}}function nm(e,n,t){let i=new r.PPD,a=new r.I9Y,o=new r.I9Y,l=new r.IUQ,s=new r.CSG({depthPacking:r.N5j}),c=new r.aVO,d={},u=t.maxTextureSize,f={[r.hB5]:r.hsX,[r.hsX]:r.hB5,[r.$EB]:r.$EB},p=new r.BKk({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new r.I9Y},radius:{value:4}},vertexShader:"void main() {\n gl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n const float samples = float( VSM_SAMPLES );\n float mean = 0.0;\n float squared_mean = 0.0;\n float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n float uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n for ( float i = 0.0; i < samples; i ++ ) {\n float uvOffset = uvStart + i * uvStride;\n #ifdef HORIZONTAL_PASS\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean / samples;\n squared_mean = squared_mean / samples;\n float std_dev = sqrt( squared_mean - mean * mean );\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new r.LoY;h.setAttribute("position",new r.THS(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let _=new r.eaF(h,p),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=r.QP0;let v=this.type;function E(n,t,i,a){let o=null,l=!0===i.isPointLight?n.customDistanceMaterial:n.customDepthMaterial;if(void 0!==l)o=l;else if(o=!0===i.isPointLight?c:s,e.localClippingEnabled&&!0===t.clipShadows&&Array.isArray(t.clippingPlanes)&&0!==t.clippingPlanes.length||t.displacementMap&&0!==t.displacementScale||t.alphaMap&&t.alphaTest>0||t.map&&t.alphaTest>0||!0===t.alphaToCoverage){let e=o.uuid,n=t.uuid,r=d[e];void 0===r&&(r={},d[e]=r);let i=r[n];void 0===i&&(i=o.clone(),r[n]=i,t.addEventListener("dispose",S)),o=i}return o.visible=t.visible,o.wireframe=t.wireframe,a===r.RyA?o.side=null!==t.shadowSide?t.shadowSide:t.side:o.side=null!==t.shadowSide?t.shadowSide:f[t.side],o.alphaMap=t.alphaMap,o.alphaTest=!0===t.alphaToCoverage?.5:t.alphaTest,o.map=t.map,o.clipShadows=t.clipShadows,o.clippingPlanes=t.clippingPlanes,o.clipIntersection=t.clipIntersection,o.displacementMap=t.displacementMap,o.displacementScale=t.displacementScale,o.displacementBias=t.displacementBias,o.wireframeLinewidth=t.wireframeLinewidth,o.linewidth=t.linewidth,!0===i.isPointLight&&!0===o.isMeshDistanceMaterial&&(e.properties.get(o).light=i),o}function S(e){for(let n in e.target.removeEventListener("dispose",S),d){let t=d[n],r=e.target.uuid;r in t&&(t[r].dispose(),delete t[r])}}this.render=function(t,s,c){if(!1===g.enabled||!1===g.autoUpdate&&!1===g.needsUpdate||0===t.length)return;let d=e.getRenderTarget(),f=e.getActiveCubeFace(),h=e.getActiveMipmapLevel(),S=e.state;S.setBlending(r.XIg),!0===S.buffers.depth.getReversed()?S.buffers.color.setClear(0,0,0,0):S.buffers.color.setClear(1,1,1,1),S.buffers.depth.setTest(!0),S.setScissorTest(!1);let T=v!==r.RyA&&this.type===r.RyA,M=v===r.RyA&&this.type!==r.RyA;for(let d=0,f=t.length;du||a.y>u)&&(a.x>u&&(o.x=Math.floor(u/g.x),a.x=o.x*g.x,h.mapSize.x=o.x),a.y>u&&(o.y=Math.floor(u/g.y),a.y=o.y*g.y,h.mapSize.y=o.y)),null===h.map||!0===T||!0===M){let e=this.type!==r.RyA?{minFilter:r.hxR,magFilter:r.hxR}:{};null!==h.map&&h.map.dispose(),h.map=new r.nWS(a.x,a.y,e),h.map.texture.name=f.name+".shadowMap",h.camera.updateProjectionMatrix()}e.setRenderTarget(h.map),e.clear();let v=h.getViewportCount();for(let t=0;t=1:-1!==D.indexOf("OpenGL ES")&&(U=parseFloat(/^OpenGL ES (\d)/.exec(D)[1])>=2);let w=null,I={},y=e.getParameter(e.SCISSOR_BOX),N=e.getParameter(e.VIEWPORT),O=new r.IUQ().fromArray(y),F=new r.IUQ().fromArray(N);function B(n,t,r,i){let a=new Uint8Array(4),o=e.createTexture();e.bindTexture(n,o),e.texParameteri(n,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(n,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let o=0;ot||i.height>t)&&(r=t/Math.max(i.width,i.height)),r<1)if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof VideoFrame&&e instanceof VideoFrame){let t=Math.floor(r*i.width),a=Math.floor(r*i.height);void 0===s&&(s=h(t,a));let o=n?h(t,a):s;return o.width=t,o.height=a,o.getContext("2d").drawImage(e,0,0,t,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+i.width+"x"+i.height+") to ("+t+"x"+a+")."),o}else"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+i.width+"x"+i.height+").");return e}function g(e){return e.generateMipmaps}function v(n){e.generateMipmap(n)}function E(t,i,a,o,l=!1){if(null!==t){if(void 0!==e[t])return e[t];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+t+"'")}let s=i;if(i===e.RED&&(a===e.FLOAT&&(s=e.R32F),a===e.HALF_FLOAT&&(s=e.R16F),a===e.UNSIGNED_BYTE&&(s=e.R8)),i===e.RED_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.R8UI),a===e.UNSIGNED_SHORT&&(s=e.R16UI),a===e.UNSIGNED_INT&&(s=e.R32UI),a===e.BYTE&&(s=e.R8I),a===e.SHORT&&(s=e.R16I),a===e.INT&&(s=e.R32I)),i===e.RG&&(a===e.FLOAT&&(s=e.RG32F),a===e.HALF_FLOAT&&(s=e.RG16F),a===e.UNSIGNED_BYTE&&(s=e.RG8)),i===e.RG_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.RG8UI),a===e.UNSIGNED_SHORT&&(s=e.RG16UI),a===e.UNSIGNED_INT&&(s=e.RG32UI),a===e.BYTE&&(s=e.RG8I),a===e.SHORT&&(s=e.RG16I),a===e.INT&&(s=e.RG32I)),i===e.RGB_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.RGB8UI),a===e.UNSIGNED_SHORT&&(s=e.RGB16UI),a===e.UNSIGNED_INT&&(s=e.RGB32UI),a===e.BYTE&&(s=e.RGB8I),a===e.SHORT&&(s=e.RGB16I),a===e.INT&&(s=e.RGB32I)),i===e.RGBA_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.RGBA8UI),a===e.UNSIGNED_SHORT&&(s=e.RGBA16UI),a===e.UNSIGNED_INT&&(s=e.RGBA32UI),a===e.BYTE&&(s=e.RGBA8I),a===e.SHORT&&(s=e.RGBA16I),a===e.INT&&(s=e.RGBA32I)),i===e.RGB&&(a===e.UNSIGNED_INT_5_9_9_9_REV&&(s=e.RGB9_E5),a===e.UNSIGNED_INT_10F_11F_11F_REV&&(s=e.R11F_G11F_B10F)),i===e.RGBA){let n=l?r.VxR:r.ppV.getTransfer(o);a===e.FLOAT&&(s=e.RGBA32F),a===e.HALF_FLOAT&&(s=e.RGBA16F),a===e.UNSIGNED_BYTE&&(s=n===r.KLL?e.SRGB8_ALPHA8:e.RGBA8),a===e.UNSIGNED_SHORT_4_4_4_4&&(s=e.RGBA4),a===e.UNSIGNED_SHORT_5_5_5_1&&(s=e.RGB5_A1)}return(s===e.R16F||s===e.R32F||s===e.RG16F||s===e.RG32F||s===e.RGBA16F||s===e.RGBA32F)&&n.get("EXT_color_buffer_float"),s}function S(n,t){let i;return n?null===t||t===r.bkx||t===r.V3x?i=e.DEPTH24_STENCIL8:t===r.RQf?i=e.DEPTH32F_STENCIL8:t===r.cHt&&(i=e.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):null===t||t===r.bkx||t===r.V3x?i=e.DEPTH_COMPONENT24:t===r.RQf?i=e.DEPTH_COMPONENT32F:t===r.cHt&&(i=e.DEPTH_COMPONENT16),i}function T(e,n){return!0===g(e)||e.isFramebufferTexture&&e.minFilter!==r.hxR&&e.minFilter!==r.k6q?Math.log2(Math.max(n.width,n.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?n.mipmaps.length:1}function M(e){let n=e.target;n.removeEventListener("dispose",M),function(e){let n=i.get(e);if(void 0===n.__webglInit)return;let t=e.source,r=p.get(t);if(r){let i=r[n.__cacheKey];i.usedTimes--,0===i.usedTimes&&R(e),0===Object.keys(r).length&&p.delete(t)}i.remove(e)}(n),n.isVideoTexture&&f.delete(n)}function x(n){let t=n.target;t.removeEventListener("dispose",x),function(n){let t=i.get(n);if(n.depthTexture&&(n.depthTexture.dispose(),i.remove(n.depthTexture)),n.isWebGLCubeRenderTarget)for(let n=0;n<6;n++){if(Array.isArray(t.__webglFramebuffer[n]))for(let r=0;r0&&a.__version!==n.version){let e=n.image;if(null===e)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==e.complete)return void I(a,n,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}else n.isExternalTexture&&(a.__webglTexture=n.sourceTexture?n.sourceTexture:null);t.bindTexture(e.TEXTURE_2D,a.__webglTexture,e.TEXTURE0+r)}let b={[r.GJx]:e.REPEAT,[r.ghU]:e.CLAMP_TO_EDGE,[r.kTW]:e.MIRRORED_REPEAT},L={[r.hxR]:e.NEAREST,[r.pHI]:e.NEAREST_MIPMAP_NEAREST,[r.Cfg]:e.NEAREST_MIPMAP_LINEAR,[r.k6q]:e.LINEAR,[r.kRr]:e.LINEAR_MIPMAP_NEAREST,[r.$_I]:e.LINEAR_MIPMAP_LINEAR},P={[r.amv]:e.NEVER,[r.FFZ]:e.ALWAYS,[r.vim]:e.LESS,[r.TiK]:e.LEQUAL,[r.kO0]:e.EQUAL,[r.gWB]:e.GEQUAL,[r.eoi]:e.GREATER,[r.jzd]:e.NOTEQUAL};function U(t,o){if((o.type===r.RQf&&!1===n.has("OES_texture_float_linear")&&(o.magFilter===r.k6q||o.magFilter===r.kRr||o.magFilter===r.Cfg||o.magFilter===r.$_I||o.minFilter===r.k6q||o.minFilter===r.kRr||o.minFilter===r.Cfg||o.minFilter===r.$_I)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),e.texParameteri(t,e.TEXTURE_WRAP_S,b[o.wrapS]),e.texParameteri(t,e.TEXTURE_WRAP_T,b[o.wrapT]),(t===e.TEXTURE_3D||t===e.TEXTURE_2D_ARRAY)&&e.texParameteri(t,e.TEXTURE_WRAP_R,b[o.wrapR]),e.texParameteri(t,e.TEXTURE_MAG_FILTER,L[o.magFilter]),e.texParameteri(t,e.TEXTURE_MIN_FILTER,L[o.minFilter]),o.compareFunction&&(e.texParameteri(t,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(t,e.TEXTURE_COMPARE_FUNC,P[o.compareFunction])),!0===n.has("EXT_texture_filter_anisotropic"))&&o.magFilter!==r.hxR&&(o.minFilter===r.Cfg||o.minFilter===r.$_I)&&(o.type!==r.RQf||!1!==n.has("OES_texture_float_linear"))&&(o.anisotropy>1||i.get(o).__currentAnisotropy)){let r=n.get("EXT_texture_filter_anisotropic");e.texParameterf(t,r.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,a.getMaxAnisotropy())),i.get(o).__currentAnisotropy=o.anisotropy}}function D(n,t){let r=!1;void 0===n.__webglInit&&(n.__webglInit=!0,t.addEventListener("dispose",M));let i=t.source,a=p.get(i);void 0===a&&(a={},p.set(i,a));let o=function(e){let n=[];return n.push(e.wrapS),n.push(e.wrapT),n.push(e.wrapR||0),n.push(e.magFilter),n.push(e.minFilter),n.push(e.anisotropy),n.push(e.internalFormat),n.push(e.format),n.push(e.type),n.push(e.generateMipmaps),n.push(e.premultiplyAlpha),n.push(e.flipY),n.push(e.unpackAlignment),n.push(e.colorSpace),n.join()}(t);if(o!==n.__cacheKey){void 0===a[o]&&(a[o]={texture:e.createTexture(),usedTimes:0},l.memory.textures++,r=!0),a[o].usedTimes++;let i=a[n.__cacheKey];void 0!==i&&(a[n.__cacheKey].usedTimes--,0===i.usedTimes&&R(t)),n.__cacheKey=o,n.__webglTexture=a[o].texture}return r}function w(e,n,t){return Math.floor(Math.floor(e/t)/n)}function I(n,l,s){let c=e.TEXTURE_2D;(l.isDataArrayTexture||l.isCompressedArrayTexture)&&(c=e.TEXTURE_2D_ARRAY),l.isData3DTexture&&(c=e.TEXTURE_3D);let d=D(n,l),u=l.source;t.bindTexture(c,n.__webglTexture,e.TEXTURE0+s);let f=i.get(u);if(u.version!==f.__version||!0===d){let n;t.activeTexture(e.TEXTURE0+s);let i=r.ppV.getPrimaries(r.ppV.workingColorSpace),p=l.colorSpace===r.jf0?null:r.ppV.getPrimaries(l.colorSpace),m=l.colorSpace===r.jf0||i===p?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,l.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,l.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,l.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,m);let h=_(l.image,!1,a.maxTextureSize);h=k(l,h);let M=o.convert(l.format,l.colorSpace),x=o.convert(l.type),R=E(l.internalFormat,M,x,l.colorSpace,l.isVideoTexture);U(c,l);let A=l.mipmaps,C=!0!==l.isVideoTexture,b=void 0===f.__version||!0===d,L=u.dataReady,P=T(l,h);if(l.isDepthTexture)R=S(l.format===r.dcC,l.type),b&&(C?t.texStorage2D(e.TEXTURE_2D,1,R,h.width,h.height):t.texImage2D(e.TEXTURE_2D,0,R,h.width,h.height,0,M,x,null));else if(l.isDataTexture)if(A.length>0){C&&b&&t.texStorage2D(e.TEXTURE_2D,P,R,A[0].width,A[0].height);for(let r=0,i=A.length;re.start-n.start);let l=0;for(let e=1;e0){let a=(0,r.Nex)(n.width,n.height,l.format,l.type);for(let r of l.layerUpdates){let o=n.data.subarray(r*a/n.data.BYTES_PER_ELEMENT,(r+1)*a/n.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,r,n.width,n.height,1,M,o)}l.clearLayerUpdates()}else t.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,n.width,n.height,h.depth,M,n.data)}else t.compressedTexImage3D(e.TEXTURE_2D_ARRAY,i,R,n.width,n.height,h.depth,0,n.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else C?L&&t.texSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,n.width,n.height,h.depth,M,x,n.data):t.texImage3D(e.TEXTURE_2D_ARRAY,i,R,n.width,n.height,h.depth,0,M,x,n.data)}else{C&&b&&t.texStorage2D(e.TEXTURE_2D,P,R,A[0].width,A[0].height);for(let i=0,a=A.length;i0){let n=(0,r.Nex)(h.width,h.height,l.format,l.type);for(let r of l.layerUpdates){let i=h.data.subarray(r*n/h.data.BYTES_PER_ELEMENT,(r+1)*n/h.data.BYTES_PER_ELEMENT);t.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,r,h.width,h.height,1,M,x,i)}l.clearLayerUpdates()}else t.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,h.width,h.height,h.depth,M,x,h.data)}else t.texImage3D(e.TEXTURE_2D_ARRAY,0,R,h.width,h.height,h.depth,0,M,x,h.data);else if(l.isData3DTexture)C?(b&&t.texStorage3D(e.TEXTURE_3D,P,R,h.width,h.height,h.depth),L&&t.texSubImage3D(e.TEXTURE_3D,0,0,0,0,h.width,h.height,h.depth,M,x,h.data)):t.texImage3D(e.TEXTURE_3D,0,R,h.width,h.height,h.depth,0,M,x,h.data);else if(l.isFramebufferTexture){if(b)if(C)t.texStorage2D(e.TEXTURE_2D,P,R,h.width,h.height);else{let n=h.width,r=h.height;for(let i=0;i>=1,r>>=1}}else if(A.length>0){if(C&&b){let n=W(A[0]);t.texStorage2D(e.TEXTURE_2D,P,R,n.width,n.height)}for(let r=0,i=A.length;r>d),i=Math.max(1,r.height>>d);s===e.TEXTURE_3D||s===e.TEXTURE_2D_ARRAY?t.texImage3D(s,d,p,n,i,r.depth,0,u,f,null):t.texImage2D(s,d,p,n,i,0,u,f,null)}t.bindFramebuffer(e.FRAMEBUFFER,n),V(r)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,l,s,h.__webglTexture,0,H(r)):(s===e.TEXTURE_2D||s>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&s<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,l,s,h.__webglTexture,d),t.bindFramebuffer(e.FRAMEBUFFER,null)}function N(n,t,r){if(e.bindRenderbuffer(e.RENDERBUFFER,n),t.depthBuffer){let i=t.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=S(t.stencilBuffer,a),l=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,s=H(t);V(t)?c.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,s,o,t.width,t.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,s,o,t.width,t.height):e.renderbufferStorage(e.RENDERBUFFER,o,t.width,t.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,l,e.RENDERBUFFER,n)}else{let n=t.textures;for(let i=0;i{delete r.__boundDepthTexture,delete r.__depthDisposeCallback,e.removeEventListener("dispose",n)};e.addEventListener("dispose",n),r.__depthDisposeCallback=n}r.__boundDepthTexture=e}if(n.depthTexture&&!r.__autoAllocateDepthBuffer){if(a)throw Error("target.depthTexture not supported in Cube render targets");let e=n.texture.mipmaps;e&&e.length>0?O(r.__webglFramebuffer[0],n):O(r.__webglFramebuffer,n)}else if(a){r.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(t.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[i]),void 0===r.__webglDepthbuffer[i])r.__webglDepthbuffer[i]=e.createRenderbuffer(),N(r.__webglDepthbuffer[i],n,!1);else{let t=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=r.__webglDepthbuffer[i];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,t,e.RENDERBUFFER,a)}}else{let i=n.texture.mipmaps;if(i&&i.length>0?t.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[0]):t.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer),void 0===r.__webglDepthbuffer)r.__webglDepthbuffer=e.createRenderbuffer(),N(r.__webglDepthbuffer,n,!1);else{let t=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,i=r.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,t,e.RENDERBUFFER,i)}}t.bindFramebuffer(e.FRAMEBUFFER,null)}let B=[],G=[];function H(e){return Math.min(a.maxSamples,e.samples)}function V(e){let t=i.get(e);return e.samples>0&&!0===n.has("WEBGL_multisampled_render_to_texture")&&!1!==t.__useRenderToTexture}function k(e,n){let t=e.colorSpace,i=e.format,a=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||t!==r.Zr2&&t!==r.jf0&&(r.ppV.getTransfer(t)===r.KLL?(i!==r.GWd||a!==r.OUM)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",t)),n}function W(e){return"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement?(u.width=e.naturalWidth||e.width,u.height=e.naturalHeight||e.height):"undefined"!=typeof VideoFrame&&e instanceof VideoFrame?(u.width=e.displayWidth,u.height=e.displayHeight):(u.width=e.width,u.height=e.height),u}this.allocateTextureUnit=function(){let e=A;return e>=a.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+a.maxTextures),A+=1,e},this.resetTextureUnits=function(){A=0},this.setTexture2D=C,this.setTexture2DArray=function(n,r){let a=i.get(n);if(!1===n.isRenderTargetTexture&&n.version>0&&a.__version!==n.version)return void I(a,n,r);t.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+r)},this.setTexture3D=function(n,r){let a=i.get(n);if(!1===n.isRenderTargetTexture&&n.version>0&&a.__version!==n.version)return void I(a,n,r);t.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+r)},this.setTextureCube=function(n,l){let s=i.get(n);if(n.version>0&&s.__version!==n.version)return void function(n,l,s){if(6!==l.image.length)return;let c=D(n,l),d=l.source;t.bindTexture(e.TEXTURE_CUBE_MAP,n.__webglTexture,e.TEXTURE0+s);let u=i.get(d);if(d.version!==u.__version||!0===c){let n;t.activeTexture(e.TEXTURE0+s);let i=r.ppV.getPrimaries(r.ppV.workingColorSpace),f=l.colorSpace===r.jf0?null:r.ppV.getPrimaries(l.colorSpace),p=l.colorSpace===r.jf0||i===f?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,l.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,l.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,l.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);let m=l.isCompressedTexture||l.image[0].isCompressedTexture,h=l.image[0]&&l.image[0].isDataTexture,S=[];for(let e=0;e<6;e++)m||h?S[e]=h?l.image[e].image:l.image[e]:S[e]=_(l.image[e],!0,a.maxCubemapSize),S[e]=k(l,S[e]);let M=S[0],x=o.convert(l.format,l.colorSpace),R=o.convert(l.type),A=E(l.internalFormat,x,R,l.colorSpace),C=!0!==l.isVideoTexture,b=void 0===u.__version||!0===c,L=d.dataReady,P=T(l,M);if(U(e.TEXTURE_CUBE_MAP,l),m){C&&b&&t.texStorage2D(e.TEXTURE_CUBE_MAP,P,A,M.width,M.height);for(let i=0;i<6;i++){n=S[i].mipmaps;for(let a=0;a0&&P++;let r=W(S[0]);t.texStorage2D(e.TEXTURE_CUBE_MAP,P,A,r.width,r.height)}for(let r=0;r<6;r++)if(h){C?L&&t.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,0,0,S[r].width,S[r].height,x,R,S[r].data):t.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,A,S[r].width,S[r].height,0,x,R,S[r].data);for(let i=0;i1;if(!u&&(void 0===s.__webglTexture&&(s.__webglTexture=e.createTexture()),s.__version=r.version,l.memory.textures++),d){a.__webglFramebuffer=[];for(let n=0;n<6;n++)if(r.mipmaps&&r.mipmaps.length>0){a.__webglFramebuffer[n]=[];for(let t=0;t0){a.__webglFramebuffer=[];for(let n=0;n0&&!1===V(n)){a.__webglMultisampledFramebuffer=e.createFramebuffer(),a.__webglColorRenderbuffer=[],t.bindFramebuffer(e.FRAMEBUFFER,a.__webglMultisampledFramebuffer);for(let t=0;t0)for(let i=0;i0)for(let t=0;t0){if(!1===V(n)){let r=n.textures,a=n.width,o=n.height,l=e.COLOR_BUFFER_BIT,s=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,c=i.get(n),u=r.length>1;if(u)for(let n=0;n0?t.bindFramebuffer(e.DRAW_FRAMEBUFFER,c.__webglFramebuffer[0]):t.bindFramebuffer(e.DRAW_FRAMEBUFFER,c.__webglFramebuffer);for(let t=0;t= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class nT{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,n){if(null===this.texture){let t=new r.rjZ(e.texture);(e.depthNear!==n.depthNear||e.depthFar!==n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=t}}getMesh(e){if(null!==this.texture&&null===this.mesh){let n=e.cameras[0].viewport,t=new r.BKk({vertexShader:nE,fragmentShader:nS,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new r.eaF(new r.bdM(20,20),t)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class nM extends r.Qev{constructor(e,n){super();let t=this,a=null,o=1,l=null,s="local-floor",c=1,d=null,u=null,f=null,p=null,m=null,h=null,_="undefined"!=typeof XRWebGLBinding,g=new nT,v={},E=n.getContextAttributes(),S=null,T=null,M=[],x=[],R=new r.I9Y,A=null,C=new r.ubm;C.viewport=new r.IUQ;let b=new r.ubm;b.viewport=new r.IUQ;let L=[C,b],P=new r.nZQ,U=null,D=null;function w(e){let n=x.indexOf(e.inputSource);if(-1===n)return;let t=M[n];void 0!==t&&(t.update(e.inputSource,e.frame,d||l),t.dispatchEvent({type:e.type,data:e.inputSource}))}function I(){a.removeEventListener("select",w),a.removeEventListener("selectstart",w),a.removeEventListener("selectend",w),a.removeEventListener("squeeze",w),a.removeEventListener("squeezestart",w),a.removeEventListener("squeezeend",w),a.removeEventListener("end",I),a.removeEventListener("inputsourceschange",y);for(let e=0;e=0&&(x[r]=null,M[r].disconnect(t))}for(let n=0;n=x.length){x.push(t),r=e;break}else if(null===x[e]){x[e]=t,r=e;break}if(-1===r)break}let i=M[r];i&&i.connect(t)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let n=M[e];return void 0===n&&(n=new r.R3r,M[e]=n),n.getTargetRaySpace()},this.getControllerGrip=function(e){let n=M[e];return void 0===n&&(n=new r.R3r,M[e]=n),n.getGripSpace()},this.getHand=function(e){let n=M[e];return void 0===n&&(n=new r.R3r,M[e]=n),n.getHandSpace()},this.setFramebufferScaleFactor=function(e){o=e,!0===t.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){s=e,!0===t.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return d||l},this.setReferenceSpace=function(e){d=e},this.getBaseLayer=function(){return null!==p?p:m},this.getBinding=function(){return null===f&&_&&(f=new XRWebGLBinding(a,n)),f},this.getFrame=function(){return h},this.getSession=function(){return a},this.setSession=async function(i){if(null!==(a=i)){if(S=e.getRenderTarget(),a.addEventListener("select",w),a.addEventListener("selectstart",w),a.addEventListener("selectend",w),a.addEventListener("squeeze",w),a.addEventListener("squeezestart",w),a.addEventListener("squeezeend",w),a.addEventListener("end",I),a.addEventListener("inputsourceschange",y),!0!==E.xrCompatible&&await n.makeXRCompatible(),A=e.getPixelRatio(),e.getSize(R),_&&"createProjectionLayer"in XRWebGLBinding.prototype){let t=null,i=null,l=null;E.depth&&(l=E.stencil?n.DEPTH24_STENCIL8:n.DEPTH_COMPONENT24,t=E.stencil?r.dcC:r.zdS,i=E.stencil?r.V3x:r.bkx);let s={colorFormat:n.RGBA8,depthFormat:l,scaleFactor:o};p=(f=this.getBinding()).createProjectionLayer(s),a.updateRenderState({layers:[p]}),e.setPixelRatio(1),e.setSize(p.textureWidth,p.textureHeight,!1),T=new r.nWS(p.textureWidth,p.textureHeight,{format:r.GWd,type:r.OUM,depthTexture:new r.VCu(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,t),stencilBuffer:E.stencil,colorSpace:e.outputColorSpace,samples:4*!!E.antialias,resolveDepthBuffer:!1===p.ignoreDepthValues,resolveStencilBuffer:!1===p.ignoreDepthValues})}else{let t={antialias:E.antialias,alpha:!0,depth:E.depth,stencil:E.stencil,framebufferScaleFactor:o};m=new XRWebGLLayer(a,n,t),a.updateRenderState({baseLayer:m}),e.setPixelRatio(1),e.setSize(m.framebufferWidth,m.framebufferHeight,!1),T=new r.nWS(m.framebufferWidth,m.framebufferHeight,{format:r.GWd,type:r.OUM,colorSpace:e.outputColorSpace,stencilBuffer:E.stencil,resolveDepthBuffer:!1===m.ignoreDepthValues,resolveStencilBuffer:!1===m.ignoreDepthValues})}T.isXRRenderTarget=!0,this.setFoveation(c),d=null,l=await a.requestReferenceSpace(s),G.setContext(a),G.start(),t.isPresenting=!0,t.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==a)return a.environmentBlendMode},this.getDepthTexture=function(){return g.getDepthTexture()};let N=new r.Pq0,O=new r.Pq0;function F(e,n){null===n?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(n.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){var n,t,i;if(null===a)return;let o=e.near,l=e.far;null!==g.texture&&(g.depthNear>0&&(o=g.depthNear),g.depthFar>0&&(l=g.depthFar)),P.near=b.near=C.near=o,P.far=b.far=C.far=l,(U!==P.near||D!==P.far)&&(a.updateRenderState({depthNear:P.near,depthFar:P.far}),U=P.near,D=P.far),P.layers.mask=6|e.layers.mask,C.layers.mask=3&P.layers.mask,b.layers.mask=5&P.layers.mask;let s=e.parent,c=P.cameras;F(P,s);for(let e=0;e0&&(e.alphaTest.value=i.alphaTest);let a=n.get(i),o=a.envMap,l=a.envMapRotation;o&&(e.envMap.value=o,nx.copy(l),nx.x*=-1,nx.y*=-1,nx.z*=-1,o.isCubeTexture&&!1===o.isRenderTargetTexture&&(nx.y*=-1,nx.z*=-1),e.envMapRotation.value.setFromMatrix4(nR.makeRotationFromEuler(nx)),e.flipEnvMap.value=o.isCubeTexture&&!1===o.isRenderTargetTexture?-1:1,e.reflectivity.value=i.reflectivity,e.ior.value=i.ior,e.refractionRatio.value=i.refractionRatio),i.lightMap&&(e.lightMap.value=i.lightMap,e.lightMapIntensity.value=i.lightMapIntensity,t(i.lightMap,e.lightMapTransform)),i.aoMap&&(e.aoMap.value=i.aoMap,e.aoMapIntensity.value=i.aoMapIntensity,t(i.aoMap,e.aoMapTransform))}return{refreshFogUniforms:function(n,t){t.color.getRGB(n.fogColor.value,(0,r._Ut)(e)),t.isFog?(n.fogNear.value=t.near,n.fogFar.value=t.far):t.isFogExp2&&(n.fogDensity.value=t.density)},refreshMaterialUniforms:function(e,a,o,l,s){var c,d,u,f,p,m,h,_,g,v,E,S,T,M,x,R,A,C,b,L,P;a.isMeshBasicMaterial||a.isMeshLambertMaterial?i(e,a):a.isMeshToonMaterial?(i(e,a),c=e,(d=a).gradientMap&&(c.gradientMap.value=d.gradientMap)):a.isMeshPhongMaterial?(i(e,a),u=e,f=a,u.specular.value.copy(f.specular),u.shininess.value=Math.max(f.shininess,1e-4)):a.isMeshStandardMaterial?(i(e,a),p=e,m=a,p.metalness.value=m.metalness,m.metalnessMap&&(p.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,p.metalnessMapTransform)),p.roughness.value=m.roughness,m.roughnessMap&&(p.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,p.roughnessMapTransform)),m.envMap&&(p.envMapIntensity.value=m.envMapIntensity),a.isMeshPhysicalMaterial&&(h=e,_=a,g=s,h.ior.value=_.ior,_.sheen>0&&(h.sheenColor.value.copy(_.sheenColor).multiplyScalar(_.sheen),h.sheenRoughness.value=_.sheenRoughness,_.sheenColorMap&&(h.sheenColorMap.value=_.sheenColorMap,t(_.sheenColorMap,h.sheenColorMapTransform)),_.sheenRoughnessMap&&(h.sheenRoughnessMap.value=_.sheenRoughnessMap,t(_.sheenRoughnessMap,h.sheenRoughnessMapTransform))),_.clearcoat>0&&(h.clearcoat.value=_.clearcoat,h.clearcoatRoughness.value=_.clearcoatRoughness,_.clearcoatMap&&(h.clearcoatMap.value=_.clearcoatMap,t(_.clearcoatMap,h.clearcoatMapTransform)),_.clearcoatRoughnessMap&&(h.clearcoatRoughnessMap.value=_.clearcoatRoughnessMap,t(_.clearcoatRoughnessMap,h.clearcoatRoughnessMapTransform)),_.clearcoatNormalMap&&(h.clearcoatNormalMap.value=_.clearcoatNormalMap,t(_.clearcoatNormalMap,h.clearcoatNormalMapTransform),h.clearcoatNormalScale.value.copy(_.clearcoatNormalScale),_.side===r.hsX&&h.clearcoatNormalScale.value.negate())),_.dispersion>0&&(h.dispersion.value=_.dispersion),_.iridescence>0&&(h.iridescence.value=_.iridescence,h.iridescenceIOR.value=_.iridescenceIOR,h.iridescenceThicknessMinimum.value=_.iridescenceThicknessRange[0],h.iridescenceThicknessMaximum.value=_.iridescenceThicknessRange[1],_.iridescenceMap&&(h.iridescenceMap.value=_.iridescenceMap,t(_.iridescenceMap,h.iridescenceMapTransform)),_.iridescenceThicknessMap&&(h.iridescenceThicknessMap.value=_.iridescenceThicknessMap,t(_.iridescenceThicknessMap,h.iridescenceThicknessMapTransform))),_.transmission>0&&(h.transmission.value=_.transmission,h.transmissionSamplerMap.value=g.texture,h.transmissionSamplerSize.value.set(g.width,g.height),_.transmissionMap&&(h.transmissionMap.value=_.transmissionMap,t(_.transmissionMap,h.transmissionMapTransform)),h.thickness.value=_.thickness,_.thicknessMap&&(h.thicknessMap.value=_.thicknessMap,t(_.thicknessMap,h.thicknessMapTransform)),h.attenuationDistance.value=_.attenuationDistance,h.attenuationColor.value.copy(_.attenuationColor)),_.anisotropy>0&&(h.anisotropyVector.value.set(_.anisotropy*Math.cos(_.anisotropyRotation),_.anisotropy*Math.sin(_.anisotropyRotation)),_.anisotropyMap&&(h.anisotropyMap.value=_.anisotropyMap,t(_.anisotropyMap,h.anisotropyMapTransform))),h.specularIntensity.value=_.specularIntensity,h.specularColor.value.copy(_.specularColor),_.specularColorMap&&(h.specularColorMap.value=_.specularColorMap,t(_.specularColorMap,h.specularColorMapTransform)),_.specularIntensityMap&&(h.specularIntensityMap.value=_.specularIntensityMap,t(_.specularIntensityMap,h.specularIntensityMapTransform)))):a.isMeshMatcapMaterial?(i(e,a),v=e,(E=a).matcap&&(v.matcap.value=E.matcap)):a.isMeshDepthMaterial?i(e,a):a.isMeshDistanceMaterial?(i(e,a),function(e,t){let r=n.get(t).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}(e,a)):a.isMeshNormalMaterial?i(e,a):a.isLineBasicMaterial?(S=e,T=a,S.diffuse.value.copy(T.color),S.opacity.value=T.opacity,T.map&&(S.map.value=T.map,t(T.map,S.mapTransform)),a.isLineDashedMaterial&&(M=e,x=a,M.dashSize.value=x.dashSize,M.totalSize.value=x.dashSize+x.gapSize,M.scale.value=x.scale)):a.isPointsMaterial?(R=e,A=a,C=o,b=l,R.diffuse.value.copy(A.color),R.opacity.value=A.opacity,R.size.value=A.size*C,R.scale.value=.5*b,A.map&&(R.map.value=A.map,t(A.map,R.uvTransform)),A.alphaMap&&(R.alphaMap.value=A.alphaMap,t(A.alphaMap,R.alphaMapTransform)),A.alphaTest>0&&(R.alphaTest.value=A.alphaTest)):a.isSpriteMaterial?(L=e,P=a,L.diffuse.value.copy(P.color),L.opacity.value=P.opacity,L.rotation.value=P.rotation,P.map&&(L.map.value=P.map,t(P.map,L.mapTransform)),P.alphaMap&&(L.alphaMap.value=P.alphaMap,t(P.alphaMap,L.alphaMapTransform)),P.alphaTest>0&&(L.alphaTest.value=P.alphaTest)):a.isShadowMaterial?(e.color.value.copy(a.color),e.opacity.value=a.opacity):a.isShaderMaterial&&(a.uniformsNeedUpdate=!1)}}}function nC(e,n,t,r){let i={},a={},o=[],l=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function s(e){let n={boundary:0,storage:0};return"number"==typeof e||"boolean"==typeof e?(n.boundary=4,n.storage=4):e.isVector2?(n.boundary=8,n.storage=8):e.isVector3||e.isColor?(n.boundary=16,n.storage=12):e.isVector4?(n.boundary=16,n.storage=16):e.isMatrix3?(n.boundary=48,n.storage=48):e.isMatrix4?(n.boundary=64,n.storage=64):e.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",e),n}function c(n){let t=n.target;t.removeEventListener("dispose",c);let r=o.indexOf(t.__bindingPointIndex);o.splice(r,1),e.deleteBuffer(i[t.id]),delete i[t.id],delete a[t.id]}return{bind:function(e,n){let t=n.program;r.uniformBlockBinding(e,t)},update:function(t,d){let u=i[t.id];void 0===u&&(function(e){let n=e.uniforms,t=0;for(let e=0,r=n.length;e0&&(t+=16-r),e.__size=t,e.__cache={}}(t),u=function(n){let t=function(){for(let e=0;es.matrixWorld.determinant(),h=function(e,n,t,i,a){var s,f;!0!==n.isScene&&(n=eD),d.resetTextureUnits();let p=n.fog,m=i.isMeshStandardMaterial?n.environment:null,h=null===ec?ea.outputColorSpace:!0===ec.isXRRenderTarget?ec.texture.colorSpace:r.Zr2,_=(i.isMeshStandardMaterial?v:u).get(i.envMap||m),g=!0===i.vertexColors&&!!t.attributes.color&&4===t.attributes.color.itemSize,E=!!t.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),S=!!t.morphAttributes.position,T=!!t.morphAttributes.normal,M=!!t.morphAttributes.color,R=r.y_p;i.toneMapped&&(null===ec||!0===ec.isXRRenderTarget)&&(R=ea.toneMapping);let A=t.morphAttributes.position||t.morphAttributes.normal||t.morphAttributes.color,b=void 0!==A?A.length:0,L=c.get(i),U=et.state.lights;if(!0===eC&&(!0===eb||e!==eu)){let n=e===eu&&i.id===ed;C.setState(i,e,n)}let D=!1;i.version===L.__version?L.needsLights&&L.lightsStateVersion!==U.state.version||L.outputColorSpace!==h||a.isBatchedMesh&&!1===L.batching?D=!0:a.isBatchedMesh||!0!==L.batching?a.isBatchedMesh&&!0===L.batchingColor&&null===a.colorTexture||a.isBatchedMesh&&!1===L.batchingColor&&null!==a.colorTexture||a.isInstancedMesh&&!1===L.instancing?D=!0:a.isInstancedMesh||!0!==L.instancing?a.isSkinnedMesh&&!1===L.skinning?D=!0:a.isSkinnedMesh||!0!==L.skinning?a.isInstancedMesh&&!0===L.instancingColor&&null===a.instanceColor||a.isInstancedMesh&&!1===L.instancingColor&&null!==a.instanceColor||a.isInstancedMesh&&!0===L.instancingMorph&&null===a.morphTexture||a.isInstancedMesh&&!1===L.instancingMorph&&null!==a.morphTexture||L.envMap!==_||!0===i.fog&&L.fog!==p||void 0!==L.numClippingPlanes&&(L.numClippingPlanes!==C.numPlanes||L.numIntersection!==C.numIntersection)||L.vertexAlphas!==g||L.vertexTangents!==E||L.morphTargets!==S||L.morphNormals!==T||L.morphColors!==M||L.toneMapping!==R?D=!0:L.morphTargetsCount!==b&&(D=!0):D=!0:D=!0:D=!0:(D=!0,L.__version=i.version);let w=L.currentProgram;!0===D&&(w=eJ(i,n,a));let I=!1,N=!1,O=!1,F=w.getUniforms(),B=L.uniforms;if(l.useProgram(w.program)&&(I=!0,N=!0,O=!0),i.id!==ed&&(ed=i.id,N=!0),I||eu!==e){l.buffers.depth.getReversed()&&!0!==e.reversedDepth&&(e._reversedDepth=!0,e.updateProjectionMatrix()),F.setValue(ey,"projectionMatrix",e.projectionMatrix),F.setValue(ey,"viewMatrix",e.matrixWorldInverse);let n=F.map.cameraPosition;void 0!==n&&n.setValue(ey,eP.setFromMatrixPosition(e.matrixWorld)),o.logarithmicDepthBuffer&&F.setValue(ey,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&F.setValue(ey,"isOrthographic",!0===e.isOrthographicCamera),eu!==e&&(eu=e,N=!0,O=!0)}if(a.isSkinnedMesh){F.setOptional(ey,a,"bindMatrix"),F.setOptional(ey,a,"bindMatrixInverse");let e=a.skeleton;e&&(null===e.boneTexture&&e.computeBoneTexture(),F.setValue(ey,"boneTexture",e.boneTexture,d))}a.isBatchedMesh&&(F.setOptional(ey,a,"batchingTexture"),F.setValue(ey,"batchingTexture",a._matricesTexture,d),F.setOptional(ey,a,"batchingIdTexture"),F.setValue(ey,"batchingIdTexture",a._indirectTexture,d),F.setOptional(ey,a,"batchingColorTexture"),null!==a._colorsTexture&&F.setValue(ey,"batchingColorTexture",a._colorsTexture,d));let G=t.morphAttributes;if((void 0!==G.position||void 0!==G.normal||void 0!==G.color)&&P.update(a,t,w),(N||L.receiveShadow!==a.receiveShadow)&&(L.receiveShadow=a.receiveShadow,F.setValue(ey,"receiveShadow",a.receiveShadow)),i.isMeshGouraudMaterial&&null!==i.envMap&&(B.envMap.value=_,B.flipEnvMap.value=_.isCubeTexture&&!1===_.isRenderTargetTexture?-1:1),i.isMeshStandardMaterial&&null===i.envMap&&null!==n.environment&&(B.envMapIntensity.value=n.environmentIntensity),N&&(F.setValue(ey,"toneMappingExposure",ea.toneMappingExposure),L.needsLights&&(s=B,f=O,s.ambientLightColor.needsUpdate=f,s.lightProbe.needsUpdate=f,s.directionalLights.needsUpdate=f,s.directionalLightShadows.needsUpdate=f,s.pointLights.needsUpdate=f,s.pointLightShadows.needsUpdate=f,s.spotLights.needsUpdate=f,s.spotLightShadows.needsUpdate=f,s.rectAreaLights.needsUpdate=f,s.hemisphereLights.needsUpdate=f),p&&!0===i.fog&&x.refreshFogUniforms(B,p),x.refreshMaterialUniforms(B,i,eE,ev,et.state.transmissionRenderTarget[e.id]),eX.upload(ey,e0(L),B,d)),i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(eX.upload(ey,e0(L),B,d),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&F.setValue(ey,"center",a.center),F.setValue(ey,"modelViewMatrix",a.modelViewMatrix),F.setValue(ey,"normalMatrix",a.normalMatrix),F.setValue(ey,"modelMatrix",a.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){let e=i.uniformsGroups;for(let n=0,t=e.length;n{function r(){if(i.forEach(function(e){c.get(e).currentProgram.isReady()&&i.delete(e)}),0===i.size)return void n(e);setTimeout(r,10)}null!==t.get("KHR_parallel_shader_compile")?r():setTimeout(r,10)})};let eW=null;function ez(){eq.stop()}function eK(){eq.start()}let eq=new i;function eY(e,n,t,r){if(!1===e.visible)return;if(e.layers.test(n.layers)){if(e.isGroup)t=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(n);else if(e.isLight)et.pushLight(e),e.castShadow&&et.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||eA.intersectsSprite(e)){r&&eU.setFromMatrixPosition(e.matrixWorld).applyMatrix4(eL);let n=T.update(e),i=e.material;i.visible&&en.push(e,n,i,t,eU.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||eA.intersectsObject(e))){let n=T.update(e),i=e.material;if(r&&(void 0!==e.boundingSphere?(null===e.boundingSphere&&e.computeBoundingSphere(),eU.copy(e.boundingSphere.center)):(null===n.boundingSphere&&n.computeBoundingSphere(),eU.copy(n.boundingSphere.center)),eU.applyMatrix4(e.matrixWorld).applyMatrix4(eL)),Array.isArray(i)){let r=n.groups;for(let a=0,o=r.length;a0&&eQ(i,n,t),a.length>0&&eQ(a,n,t),o.length>0&&eQ(o,n,t),l.buffers.depth.setTest(!0),l.buffers.depth.setMask(!0),l.buffers.color.setMask(!0),l.setPolygonOffset(!1)}function eZ(e,n,i,a){if(null!==(!0===i.isScene?i.overrideMaterial:null))return;void 0===et.state.transmissionRenderTarget[a.id]&&(et.state.transmissionRenderTarget[a.id]=new r.nWS(1,1,{generateMipmaps:!0,type:t.has("EXT_color_buffer_half_float")||t.has("EXT_color_buffer_float")?r.ix0:r.OUM,minFilter:r.$_I,samples:4,stencilBuffer:X,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:r.ppV.workingColorSpace}));let o=et.state.transmissionRenderTarget[a.id],l=a.viewport||ef;o.setSize(l.z*ea.transmissionResolutionScale,l.w*ea.transmissionResolutionScale);let s=ea.getRenderTarget(),c=ea.getActiveCubeFace(),u=ea.getActiveMipmapLevel();ea.setRenderTarget(o),ea.getClearColor(eh),(e_=ea.getClearAlpha())<1&&ea.setClearColor(0xffffff,.5),ea.clear(),ew&&L.render(i);let f=ea.toneMapping;ea.toneMapping=r.y_p;let p=a.viewport;if(void 0!==a.viewport&&(a.viewport=void 0),et.setupLightsView(a),!0===eC&&C.setGlobalState(ea.clippingPlanes,a),eQ(e,i,a),d.updateMultisampleRenderTarget(o),d.updateRenderTargetMipmap(o),!1===t.has("WEBGL_multisampled_render_to_texture")){let e=!1;for(let t=0,o=n.length;t0)for(let n=0,r=t.length;n0&&eZ(i,a,e,n),ew&&L.render(e),ej(en,e,n);null!==ec&&0===es&&(d.updateMultisampleRenderTarget(ec),d.updateRenderTargetMipmap(ec)),!0===e.isScene&&e.onAfterRender(ea,e,n),I.resetDefaultState(),ed=-1,eu=null,ei.pop(),ei.length>0?(et=ei[ei.length-1],!0===eC&&C.setGlobalState(ea.clippingPlanes,et.state.camera)):et=null,er.pop(),en=er.length>0?er[er.length-1]:null},this.getActiveCubeFace=function(){return el},this.getActiveMipmapLevel=function(){return es},this.getRenderTarget=function(){return ec},this.setRenderTargetTextures=function(e,n,t){let r=c.get(e);r.__autoAllocateDepthBuffer=!1===e.resolveDepthBuffer,!1===r.__autoAllocateDepthBuffer&&(r.__useRenderToTexture=!1),c.get(e.texture).__webglTexture=n,c.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:t,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,n){let t=c.get(e);t.__webglFramebuffer=n,t.__useDefaultFramebuffer=void 0===n};let e3=ey.createFramebuffer();this.setRenderTarget=function(e,n=0,t=0){ec=e,el=n,es=t;let r=!0,i=null,a=!1,o=!1;if(e){let s=c.get(e);if(void 0!==s.__useDefaultFramebuffer)l.bindFramebuffer(ey.FRAMEBUFFER,null),r=!1;else if(void 0===s.__webglFramebuffer)d.setupRenderTarget(e);else if(s.__hasExternalTextures)d.rebindTextures(e,c.get(e.texture).__webglTexture,c.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let n=e.depthTexture;if(s.__boundDepthTexture!==n){if(null!==n&&c.has(n)&&(e.width!==n.image.width||e.height!==n.image.height))throw Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");d.setupDepthRenderbuffer(e)}}let u=e.texture;(u.isData3DTexture||u.isDataArrayTexture||u.isCompressedArrayTexture)&&(o=!0);let f=c.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(i=Array.isArray(f[n])?f[n][t]:f[n],a=!0):i=e.samples>0&&!1===d.useMultisampledRTT(e)?c.get(e).__webglMultisampledFramebuffer:Array.isArray(f)?f[t]:f,ef.copy(e.viewport),ep.copy(e.scissor),em=e.scissorTest}else ef.copy(eM).multiplyScalar(eE).floor(),ep.copy(ex).multiplyScalar(eE).floor(),em=eR;if(0!==t&&(i=e3),l.bindFramebuffer(ey.FRAMEBUFFER,i)&&r&&l.drawBuffers(e,i),l.viewport(ef),l.scissor(ep),l.setScissorTest(em),a){let r=c.get(e.texture);ey.framebufferTexture2D(ey.FRAMEBUFFER,ey.COLOR_ATTACHMENT0,ey.TEXTURE_CUBE_MAP_POSITIVE_X+n,r.__webglTexture,t)}else if(o)for(let r=0;r=0&&n<=e.width-r&&t>=0&&t<=e.height-i&&(e.textures.length>1&&ey.readBuffer(ey.COLOR_ATTACHMENT0+d),ey.readPixels(n,t,r,i,w.convert(s),w.convert(c),a))}finally{let e=null!==ec?c.get(ec).__webglFramebuffer:null;l.bindFramebuffer(ey.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,n,t,i,a,s,d,u=0){if(!(e&&e.isWebGLRenderTarget))throw Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let f=c.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==d&&(f=f[d]),f)if(n>=0&&n<=e.width-i&&t>=0&&t<=e.height-a){l.bindFramebuffer(ey.FRAMEBUFFER,f);let d=e.textures[u],p=d.format,m=d.type;if(!o.textureFormatReadable(p))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!o.textureTypeReadable(m))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let h=ey.createBuffer();ey.bindBuffer(ey.PIXEL_PACK_BUFFER,h),ey.bufferData(ey.PIXEL_PACK_BUFFER,s.byteLength,ey.STREAM_READ),e.textures.length>1&&ey.readBuffer(ey.COLOR_ATTACHMENT0+u),ey.readPixels(n,t,i,a,w.convert(p),w.convert(m),0);let _=null!==ec?c.get(ec).__webglFramebuffer:null;l.bindFramebuffer(ey.FRAMEBUFFER,_);let g=ey.fenceSync(ey.SYNC_GPU_COMMANDS_COMPLETE,0);return ey.flush(),await (0,r.jej)(ey,g,4),ey.bindBuffer(ey.PIXEL_PACK_BUFFER,h),ey.getBufferSubData(ey.PIXEL_PACK_BUFFER,0,s),ey.deleteBuffer(h),ey.deleteSync(g),s}else throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(e,n=null,t=0){let r=Math.pow(2,-t),i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=null!==n?n.x:0,s=null!==n?n.y:0;d.setTexture2D(e,0),ey.copyTexSubImage2D(ey.TEXTURE_2D,t,0,0,o,s,i,a),l.unbindTexture()};let e2=ey.createFramebuffer(),e4=ey.createFramebuffer();this.copyTextureToTexture=function(e,n,t=null,i=null,a=0,o=null){let s,u,f,p,m,h,_,g,v,E;null===o&&(0!==a?((0,r.mcG)("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),o=a,a=0):o=0);let S=e.isCompressedTexture?e.mipmaps[o]:e.image;if(null!==t)s=t.max.x-t.min.x,u=t.max.y-t.min.y,f=t.isBox3?t.max.z-t.min.z:1,p=t.min.x,m=t.min.y,h=t.isBox3?t.min.z:0;else{let n=Math.pow(2,-a);s=Math.floor(S.width*n),u=Math.floor(S.height*n),f=e.isDataArrayTexture?S.depth:e.isData3DTexture?Math.floor(S.depth*n):1,p=0,m=0,h=0}null!==i?(_=i.x,g=i.y,v=i.z):(_=0,g=0,v=0);let T=w.convert(n.format),M=w.convert(n.type);n.isData3DTexture?(d.setTexture3D(n,0),E=ey.TEXTURE_3D):n.isDataArrayTexture||n.isCompressedArrayTexture?(d.setTexture2DArray(n,0),E=ey.TEXTURE_2D_ARRAY):(d.setTexture2D(n,0),E=ey.TEXTURE_2D),ey.pixelStorei(ey.UNPACK_FLIP_Y_WEBGL,n.flipY),ey.pixelStorei(ey.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),ey.pixelStorei(ey.UNPACK_ALIGNMENT,n.unpackAlignment);let x=ey.getParameter(ey.UNPACK_ROW_LENGTH),R=ey.getParameter(ey.UNPACK_IMAGE_HEIGHT),A=ey.getParameter(ey.UNPACK_SKIP_PIXELS),C=ey.getParameter(ey.UNPACK_SKIP_ROWS),b=ey.getParameter(ey.UNPACK_SKIP_IMAGES);ey.pixelStorei(ey.UNPACK_ROW_LENGTH,S.width),ey.pixelStorei(ey.UNPACK_IMAGE_HEIGHT,S.height),ey.pixelStorei(ey.UNPACK_SKIP_PIXELS,p),ey.pixelStorei(ey.UNPACK_SKIP_ROWS,m),ey.pixelStorei(ey.UNPACK_SKIP_IMAGES,h);let L=e.isDataArrayTexture||e.isData3DTexture,P=n.isDataArrayTexture||n.isData3DTexture;if(e.isDepthTexture){let t=c.get(e),r=c.get(n),i=c.get(t.__renderTarget),d=c.get(r.__renderTarget);l.bindFramebuffer(ey.READ_FRAMEBUFFER,i.__webglFramebuffer),l.bindFramebuffer(ey.DRAW_FRAMEBUFFER,d.__webglFramebuffer);for(let t=0;t{t.d(n,{JeP:()=>nC});var r=t(5339);function i(){let e=null,n=!1,t=null,r=null;function i(n,a){t(n,a),r=e.requestAnimationFrame(i)}return{start:function(){!0!==n&&null!==t&&(r=e.requestAnimationFrame(i),n=!0)},stop:function(){e.cancelAnimationFrame(r),n=!1},setAnimationLoop:function(e){t=e},setContext:function(n){e=n}}}function a(e){let n=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),n.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);let r=n.get(t);r&&(e.deleteBuffer(r.buffer),n.delete(t))},update:function(t,r){if(t.isInterleavedBufferAttribute&&(t=t.data),t.isGLBufferAttribute){let e=n.get(t);(!e||e.versione.start-n.start);let n=0;for(let e=1;e 0\n vec4 plane;\n #ifdef ALPHA_TO_COVERAGE\n float distanceToPlane, distanceGradient;\n float clipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n if ( clipOpacity == 0.0 ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n float unionClipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n }\n #pragma unroll_loop_end\n clipOpacity *= 1.0 - unionClipOpacity;\n #endif\n diffuseColor.a *= clipOpacity;\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n bool clipped = true;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n }\n #pragma unroll_loop_end\n if ( clipped ) discard;\n #endif\n #endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n vClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n diffuseColor *= vColor;\n#elif defined( USE_COLOR )\n diffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR )\n varying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n varying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n vColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n vColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n vColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n vColor.xyz *= instanceColor.xyz;\n#endif\n#ifdef USE_BATCHING_COLOR\n vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\n vColor.xyz *= batchingColor.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; }\nvec3 pow2( const in vec3 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 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n float precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n float precisionSafeLength( vec3 v ) {\n float maxComponent = max3( abs( v ) );\n return length( v / maxComponent ) * maxComponent;\n }\n#endif\nstruct IncidentLight {\n vec3 color;\n vec3 direction;\n bool visible;\n};\nstruct ReflectedLight {\n vec3 directDiffuse;\n vec3 directSpecular;\n vec3 indirectDiffuse;\n vec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n varying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n mat3 tmp;\n tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n return tmp;\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n return vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n #define cubeUV_minMipLevel 4.0\n #define cubeUV_minTileSize 16.0\n float getFace( vec3 direction ) {\n vec3 absDirection = abs( direction );\n float face = - 1.0;\n if ( absDirection.x > absDirection.z ) {\n if ( absDirection.x > absDirection.y )\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if ( absDirection.z > absDirection.y )\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n }\n vec2 getUV( vec3 direction, float face ) {\n vec2 uv;\n if ( face == 0.0 ) {\n uv = vec2( direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 1.0 ) {\n uv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n } else if ( face == 2.0 ) {\n uv = vec2( - direction.x, direction.y ) / abs( direction.z );\n } else if ( face == 3.0 ) {\n uv = vec2( - direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 4.0 ) {\n uv = vec2( - direction.x, direction.z ) / abs( direction.y );\n } else {\n uv = vec2( direction.x, direction.y ) / abs( direction.z );\n }\n return 0.5 * ( uv + 1.0 );\n }\n vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n float face = getFace( direction );\n float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n mipInt = max( mipInt, cubeUV_minMipLevel );\n float faceSize = exp2( mipInt );\n highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n if ( face > 2.0 ) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n uv.x += filterInt * 3.0 * cubeUV_minTileSize;\n uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n uv.x *= CUBEUV_TEXEL_WIDTH;\n uv.y *= CUBEUV_TEXEL_HEIGHT;\n #ifdef texture2DGradEXT\n return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n #else\n return texture2D( envMap, uv ).rgb;\n #endif\n }\n #define cubeUV_r0 1.0\n #define cubeUV_m0 - 2.0\n #define cubeUV_r1 0.8\n #define cubeUV_m1 - 1.0\n #define cubeUV_r4 0.4\n #define cubeUV_m4 2.0\n #define cubeUV_r5 0.305\n #define cubeUV_m5 3.0\n #define cubeUV_r6 0.21\n #define cubeUV_m6 4.0\n float roughnessToMip( float roughness ) {\n float mip = 0.0;\n if ( roughness >= cubeUV_r1 ) {\n mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n } else if ( roughness >= cubeUV_r4 ) {\n mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n } else if ( roughness >= cubeUV_r5 ) {\n mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n } else if ( roughness >= cubeUV_r6 ) {\n mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n } else {\n mip = - 2.0 * log2( 1.16 * roughness ); }\n return mip;\n }\n vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n float mipF = fract( mip );\n float mipInt = floor( mip );\n vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n if ( mipF == 0.0 ) {\n return vec4( color0, 1.0 );\n } else {\n vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n return vec4( mix( color0, color1, mipF ), 1.0 );\n }\n }\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n vec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n mat3 bm = mat3( batchingMatrix );\n transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n transformedNormal = bm * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = bm * transformedTangent;\n #endif\n#endif\n#ifdef USE_INSTANCING\n mat3 im = mat3( instanceMatrix );\n transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n transformedNormal = im * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = im * transformedTangent;\n #endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n transformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n #ifdef FLIP_SIDED\n transformedTangent = - transformedTangent;\n #endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n uniform sampler2D displacementMap;\n uniform float displacementScale;\n uniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\n emissiveColor = sRGBTransferEOTF( emissiveColor );\n #endif\n totalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n uniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"vec4 LinearTransferOETF( in vec4 value ) {\n return value;\n}\nvec4 sRGBTransferEOTF( in vec4 value ) {\n return 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 sRGBTransferOETF( in vec4 value ) {\n return 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}",envmap_fragment:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vec3 cameraToFrag;\n if ( isOrthographic ) {\n cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToFrag = normalize( vWorldPosition - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vec3 reflectVec = reflect( cameraToFrag, worldNormal );\n #else\n vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n #endif\n #else\n vec3 reflectVec = vReflect;\n #endif\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n #else\n vec4 envColor = vec4( 0.0 );\n #endif\n #ifdef ENVMAP_BLENDING_MULTIPLY\n outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_MIX )\n outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_ADD )\n outgoingLight += envColor.xyz * specularStrength * reflectivity;\n #endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n uniform float envMapIntensity;\n uniform float flipEnvMap;\n uniform mat3 envMapRotation;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n \n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n uniform float reflectivity;\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n varying vec3 vWorldPosition;\n uniform float refractionRatio;\n #else\n varying vec3 vReflect;\n #endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n \n varying vec3 vWorldPosition;\n #else\n varying vec3 vReflect;\n uniform float refractionRatio;\n #endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n vec3 getIBLIrradiance( const in vec3 normal ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n return PI * envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 reflectVec = reflect( - viewDir, normal );\n reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n return envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n #ifdef USE_ANISOTROPY\n vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 bentNormal = cross( bitangent, viewDir );\n bentNormal = normalize( cross( bentNormal, bitangent ) );\n bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n return getIBLRadiance( viewDir, bentNormal, roughness );\n #else\n return vec3( 0.0 );\n #endif\n }\n #endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vWorldPosition = worldPosition.xyz;\n #else\n vec3 cameraToVertex;\n if ( isOrthographic ) {\n cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vReflect = reflect( cameraToVertex, worldNormal );\n #else\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n #endif\n #endif\n#endif",fog_vertex:"#ifdef USE_FOG\n vFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n #ifdef FOG_EXP2\n float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n #else\n float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n #endif\n gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n uniform vec3 fogColor;\n varying float vFogDepth;\n #ifdef FOG_EXP2\n uniform float fogDensity;\n #else\n uniform float fogNear;\n uniform float fogFar;\n #endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n uniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n float dotNL = dot( normal, lightDirection );\n vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n #ifdef USE_GRADIENTMAP\n return vec3( texture2D( gradientMap, coord ).r );\n #else\n vec2 fw = fwidth( coord ) * 0.5;\n return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n #endif\n}",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n uniform sampler2D lightMap;\n uniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n vec3 diffuseColor;\n float specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Lambert\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n uniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n float x = normal.x, y = normal.y, z = normal.z;\n vec3 result = shCoefficients[ 0 ] * 0.886227;\n result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n return result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n return irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n vec3 irradiance = ambientLightColor;\n return irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n if ( cutoffDistance > 0.0 ) {\n distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n }\n return distanceFalloff;\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n struct DirectionalLight {\n vec3 direction;\n vec3 color;\n };\n uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n light.color = directionalLight.color;\n light.direction = directionalLight.direction;\n light.visible = true;\n }\n#endif\n#if NUM_POINT_LIGHTS > 0\n struct PointLight {\n vec3 position;\n vec3 color;\n float distance;\n float decay;\n };\n uniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = pointLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float lightDistance = length( lVector );\n light.color = pointLight.color;\n light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n }\n#endif\n#if NUM_SPOT_LIGHTS > 0\n struct SpotLight {\n vec3 position;\n vec3 direction;\n vec3 color;\n float distance;\n float decay;\n float coneCos;\n float penumbraCos;\n };\n uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = spotLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float angleCos = dot( light.direction, spotLight.direction );\n float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n if ( spotAttenuation > 0.0 ) {\n float lightDistance = length( lVector );\n light.color = spotLight.color * spotAttenuation;\n light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n } else {\n light.color = vec3( 0.0 );\n light.visible = false;\n }\n }\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n struct RectAreaLight {\n vec3 color;\n vec3 position;\n vec3 halfWidth;\n vec3 halfHeight;\n };\n uniform sampler2D ltc_1; uniform sampler2D ltc_2;\n uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n struct HemisphereLight {\n vec3 direction;\n vec3 skyColor;\n vec3 groundColor;\n };\n uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n float dotNL = dot( normal, hemiLight.direction );\n float hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n return irradiance;\n }\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n vec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Toon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon",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 vec3 diffuseColor;\n vec3 specularColor;\n float specularShininess;\n float specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_BlinnPhong\n#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\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 material.ior = ior;\n #ifdef USE_SPECULAR\n float specularIntensityFactor = specularIntensity;\n vec3 specularColorFactor = specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n #endif\n material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n #else\n float specularIntensityFactor = 1.0;\n vec3 specularColorFactor = vec3( 1.0 );\n material.specularF90 = 1.0;\n #endif\n material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n material.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n material.clearcoat = clearcoat;\n material.clearcoatRoughness = clearcoatRoughness;\n material.clearcoatF0 = vec3( 0.04 );\n material.clearcoatF90 = 1.0;\n #ifdef USE_CLEARCOATMAP\n material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n #endif\n #ifdef USE_CLEARCOAT_ROUGHNESSMAP\n material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n #endif\n material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n material.clearcoatRoughness += geometryRoughness;\n material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n material.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n material.iridescence = iridescence;\n material.iridescenceIOR = iridescenceIOR;\n #ifdef USE_IRIDESCENCEMAP\n material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n #endif\n #ifdef USE_IRIDESCENCE_THICKNESSMAP\n material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n #else\n material.iridescenceThickness = iridescenceThicknessMaximum;\n #endif\n#endif\n#ifdef USE_SHEEN\n material.sheenColor = sheenColor;\n #ifdef USE_SHEEN_COLORMAP\n material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n #endif\n material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n #ifdef USE_SHEEN_ROUGHNESSMAP\n material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n #ifdef USE_ANISOTROPYMAP\n mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n #else\n vec2 anisotropyV = anisotropyVector;\n #endif\n material.anisotropy = length( anisotropyV );\n if( material.anisotropy == 0.0 ) {\n anisotropyV = vec2( 1.0, 0.0 );\n } else {\n anisotropyV /= material.anisotropy;\n material.anisotropy = saturate( material.anisotropy );\n }\n material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n vec3 diffuseColor;\n float roughness;\n vec3 specularColor;\n float specularF90;\n float dispersion;\n #ifdef USE_CLEARCOAT\n float clearcoat;\n float clearcoatRoughness;\n vec3 clearcoatF0;\n float clearcoatF90;\n #endif\n #ifdef USE_IRIDESCENCE\n float iridescence;\n float iridescenceIOR;\n float iridescenceThickness;\n vec3 iridescenceFresnel;\n vec3 iridescenceF0;\n #endif\n #ifdef USE_SHEEN\n vec3 sheenColor;\n float sheenRoughness;\n #endif\n #ifdef IOR\n float ior;\n #endif\n #ifdef USE_TRANSMISSION\n float transmission;\n float transmissionAlpha;\n float thickness;\n float attenuationDistance;\n vec3 attenuationColor;\n #endif\n #ifdef USE_ANISOTROPY\n float anisotropy;\n float alphaT;\n vec3 anisotropyT;\n vec3 anisotropyB;\n #endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n float a2 = pow2( alpha );\n float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n return 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n float a2 = pow2( alpha );\n float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n return RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n float v = 0.5 / ( gv + gl );\n return saturate(v);\n }\n float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n float a2 = alphaT * alphaB;\n highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n highp float v2 = dot( v, v );\n float w2 = a2 / v2;\n return RECIPROCAL_PI * a2 * pow2 ( w2 );\n }\n#endif\n#ifdef USE_CLEARCOAT\n vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n vec3 f0 = material.clearcoatF0;\n float f90 = material.clearcoatF90;\n float roughness = material.clearcoatRoughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n return F * ( V * D );\n }\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n vec3 f0 = material.specularColor;\n float f90 = material.specularF90;\n float roughness = material.roughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n #ifdef USE_IRIDESCENCE\n F = mix( F, material.iridescenceFresnel, material.iridescence );\n #endif\n #ifdef USE_ANISOTROPY\n float dotTL = dot( material.anisotropyT, lightDir );\n float dotTV = dot( material.anisotropyT, viewDir );\n float dotTH = dot( material.anisotropyT, halfDir );\n float dotBL = dot( material.anisotropyB, lightDir );\n float dotBV = dot( material.anisotropyB, viewDir );\n float dotBH = dot( material.anisotropyB, halfDir );\n float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n #else\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n #endif\n return F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n const float LUT_SIZE = 64.0;\n const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n const float LUT_BIAS = 0.5 / LUT_SIZE;\n float dotNV = saturate( dot( N, V ) );\n vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n uv = uv * LUT_SCALE + LUT_BIAS;\n return uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n float l = length( f );\n return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n float x = dot( v1, v2 );\n float y = abs( x );\n float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n float b = 3.4175940 + ( 4.1616724 + y ) * y;\n float v = a / b;\n float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n return 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 vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n vec3 lightNormal = cross( v1, v2 );\n if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n vec3 T1, T2;\n T1 = normalize( V - N * dot( V, N ) );\n T2 = - cross( N, T1 );\n mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n vec3 coords[ 4 ];\n coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n coords[ 0 ] = normalize( coords[ 0 ] );\n coords[ 1 ] = normalize( coords[ 1 ] );\n coords[ 2 ] = normalize( coords[ 2 ] );\n coords[ 3 ] = normalize( coords[ 3 ] );\n vec3 vectorFormFactor = vec3( 0.0 );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n float result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n return vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n float alpha = pow2( roughness );\n float invAlpha = 1.0 / alpha;\n float cos2h = dotNH * dotNH;\n float sin2h = max( 1.0 - cos2h, 0.0078125 );\n return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n return 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 vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float D = D_Charlie( sheenRoughness, dotNH );\n float V = V_Neubelt( dotNV, dotNL );\n return sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n float r2 = roughness * roughness;\n float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n return saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n vec4 r = roughness * c0 + c1;\n float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n return 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 vec2 fab = DFGApprox( normal, viewDir, roughness );\n return specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\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#endif\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n #ifdef USE_IRIDESCENCE\n vec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n #else\n vec3 Fr = specularColor;\n #endif\n vec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n float Ess = fab.x + fab.y;\n float Ems = 1.0 - Ess;\n vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n singleScatter += FssEss;\n multiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 normal = geometryNormal;\n vec3 viewDir = geometryViewDir;\n vec3 position = geometryPosition;\n vec3 lightPos = rectAreaLight.position;\n vec3 halfWidth = rectAreaLight.halfWidth;\n vec3 halfHeight = rectAreaLight.halfHeight;\n vec3 lightColor = rectAreaLight.color;\n float roughness = material.roughness;\n vec3 rectCoords[ 4 ];\n rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n vec2 uv = LTC_Uv( normal, viewDir, roughness );\n vec4 t1 = texture2D( ltc_1, uv );\n vec4 t2 = texture2D( ltc_2, uv );\n mat3 mInv = mat3(\n vec3( t1.x, 0, t1.y ),\n vec3( 0, 1, 0 ),\n vec3( t1.z, 0, t1.w )\n );\n vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n }\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n #ifdef USE_CLEARCOAT\n float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n vec3 ccIrradiance = dotNLcc * directLight.color;\n clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n #endif\n reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n #ifdef USE_CLEARCOAT\n clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n #endif\n vec3 singleScattering = vec3( 0.0 );\n vec3 multiScattering = vec3( 0.0 );\n vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n #ifdef USE_IRIDESCENCE\n computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n #else\n computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n #endif\n vec3 totalScattering = singleScattering + multiScattering;\n vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n reflectedLight.indirectSpecular += radiance * singleScattering;\n reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct RE_Direct_Physical\n#define RE_Direct_RectArea RE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular RE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n geometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n float dotNVi = saturate( dot( normal, geometryViewDir ) );\n if ( material.iridescenceThickness == 0.0 ) {\n material.iridescence = 0.0;\n } else {\n material.iridescence = saturate( material.iridescence );\n }\n if ( material.iridescence > 0.0 ) {\n material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n }\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n pointLight = pointLights[ i ];\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n SpotLight spotLight;\n vec4 spotColor;\n vec3 spotLightCoord;\n bool inSpotLightMap;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n spotLight = spotLights[ i ];\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n #else\n #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #endif\n #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n #endif\n #undef SPOT_LIGHT_MAP_INDEX\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n directionalLight = directionalLights[ i ];\n getDirectionalLightInfo( directionalLight, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n RectAreaLight rectAreaLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n rectAreaLight = rectAreaLights[ i ];\n RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n vec3 iblIrradiance = vec3( 0.0 );\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #if ( NUM_HEMI_LIGHTS > 0 )\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if defined( RE_IndirectSpecular )\n vec3 radiance = vec3( 0.0 );\n vec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n irradiance += lightMapIrradiance;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n iblIrradiance += getIBLIrradiance( geometryNormal );\n #endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n #ifdef USE_ANISOTROPY\n radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n #else\n radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n #endif\n #ifdef USE_CLEARCOAT\n clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n #endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGARITHMIC_DEPTH_BUFFER\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGARITHMIC_DEPTH_BUFFER\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif",map_fragment:"#ifdef USE_MAP\n vec4 sampledDiffuseColor = texture2D( map, vMapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\n #endif\n diffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n uniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n #if defined( USE_POINTS_UV )\n vec2 uv = vUv;\n #else\n vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n #endif\n#endif\n#ifdef USE_MAP\n diffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n varying vec2 vUv;\n#else\n #if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n uniform mat3 uvTransform;\n #endif\n#endif\n#ifdef USE_MAP\n uniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n metalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n uniform sampler2D metalnessMap;\n#endif",morphinstance_vertex:"#ifdef USE_INSTANCING_MORPH\n float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n }\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS )\n vColor *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n #if defined( USE_COLOR_ALPHA )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n #elif defined( USE_COLOR )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n #endif\n }\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n objectNormal *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n #ifndef USE_INSTANCING_MORPH\n uniform float morphTargetBaseInfluence;\n uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n #endif\n uniform sampler2DArray morphTargetsTexture;\n uniform ivec2 morphTargetsTextureSize;\n vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n int y = texelIndex / morphTargetsTextureSize.x;\n int x = texelIndex - y * morphTargetsTextureSize.x;\n ivec3 morphUV = ivec3( x, y, morphTargetIndex );\n return texelFetch( morphTargetsTexture, morphUV, 0 );\n }\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n transformed *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#else\n vec3 normal = normalize( vNormal );\n #ifdef DOUBLE_SIDED\n normal *= faceDirection;\n #endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n #ifdef USE_TANGENT\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn = getTangentFrame( - vViewPosition, normal,\n #if defined( USE_NORMALMAP )\n vNormalMapUv\n #elif defined( USE_CLEARCOAT_NORMALMAP )\n vClearcoatNormalMapUv\n #else\n vUv\n #endif\n );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n #endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n #ifdef USE_TANGENT\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n #endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n #ifdef FLIP_SIDED\n normal = - normal;\n #endif\n #ifdef DOUBLE_SIDED\n normal = normal * faceDirection;\n #endif\n normal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n normal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #ifdef USE_TANGENT\n vTangent = normalize( transformedTangent );\n vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n #endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n uniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n vec3 N = surf_norm;\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n return mat3( T * scale, B * scale, N );\n }\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n vec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n clearcoatMapN.xy *= clearcoatNormalScale;\n clearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n uniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform sampler2D clearcoatNormalMap;\n uniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n uniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\nconst float Inv255 = 1. / 255.;\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\nvec4 packDepthToRGBA( const in float v ) {\n if( v <= 0.0 )\n return vec4( 0., 0., 0., 0. );\n if( v >= 1.0 )\n return vec4( 1., 1., 1., 1. );\n float vuf;\n float af = modf( v * PackFactors.a, vuf );\n float bf = modf( vuf * ShiftRight8, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\n}\nvec3 packDepthToRGB( const in float v ) {\n if( v <= 0.0 )\n return vec3( 0., 0., 0. );\n if( v >= 1.0 )\n return vec3( 1., 1., 1. );\n float vuf;\n float bf = modf( v * PackFactors.b, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec3( vuf * Inv255, gf * PackUpscale, bf );\n}\nvec2 packDepthToRG( const in float v ) {\n if( v <= 0.0 )\n return vec2( 0., 0. );\n if( v >= 1.0 )\n return vec2( 1., 1. );\n float vuf;\n float gf = modf( v * 256., vuf );\n return vec2( vuf * Inv255, gf );\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors4 );\n}\nfloat unpackRGBToDepth( const in vec3 v ) {\n return dot( v, UnpackFactors3 );\n}\nfloat unpackRGToDepth( const in vec2 v ) {\n return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\n}\nvec4 pack2HalfToRGBA( const in vec2 v ) {\n vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( const in vec4 v ) {\n return 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 return ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n mvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n vec3 dithering( vec3 color ) {\n float grid_position = rand( gl_FragCoord.xy );\n vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n return color + dither_shift_RGB;\n }\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n roughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n uniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n float depth = unpackRGBAToDepth( texture2D( depths, uv ) );\n #ifdef USE_REVERSED_DEPTH_BUFFER\n return step( depth, compare );\n #else\n return step( compare, depth );\n #endif\n }\n vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n return unpackRGBATo2Half( texture2D( shadow, uv ) );\n }\n float VSMShadow( sampler2D shadow, vec2 uv, float compare ) {\n float occlusion = 1.0;\n vec2 distribution = texture2DDistribution( shadow, uv );\n #ifdef USE_REVERSED_DEPTH_BUFFER\n float hard_shadow = step( distribution.x, compare );\n #else\n float hard_shadow = step( compare, distribution.x );\n #endif\n if ( hard_shadow != 1.0 ) {\n float distance = compare - distribution.x;\n float variance = max( 0.00000, distribution.y * distribution.y );\n float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n }\n return occlusion;\n }\n float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n #if defined( SHADOWMAP_TYPE_PCF )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx0 = - texelSize.x * shadowRadius;\n float dy0 = - texelSize.y * shadowRadius;\n float dx1 = + texelSize.x * shadowRadius;\n float dy1 = + texelSize.y * shadowRadius;\n float dx2 = dx0 / 2.0;\n float dy2 = dy0 / 2.0;\n float dx3 = dx1 / 2.0;\n float dy3 = dy1 / 2.0;\n shadow = (\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n ) * ( 1.0 / 17.0 );\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx = texelSize.x;\n float dy = texelSize.y;\n vec2 uv = shadowCoord.xy;\n vec2 f = fract( uv * shadowMapSize + 0.5 );\n uv -= f * texelSize;\n shadow = (\n texture2DCompare( shadowMap, uv, shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n f.x ),\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n f.x ),\n f.y )\n ) * ( 1.0 / 9.0 );\n #elif defined( SHADOWMAP_TYPE_VSM )\n shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n #else\n shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n vec2 cubeToUV( vec3 v, float texelSizeY ) {\n vec3 absV = abs( v );\n float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n absV *= scaleToCube;\n v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n vec2 planar = v.xy;\n float almostATexel = 1.5 * texelSizeY;\n float almostOne = 1.0 - almostATexel;\n if ( absV.z >= almostOne ) {\n if ( v.z > 0.0 )\n planar.x = 4.0 - v.x;\n } else if ( absV.x >= almostOne ) {\n float signX = sign( v.x );\n planar.x = v.z * signX + 2.0 * signX;\n } else if ( absV.y >= almostOne ) {\n float signY = sign( v.y );\n planar.x = v.x + 2.0 * signY + 2.0;\n planar.y = v.z * signY - 2.0;\n }\n return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n }\n float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n float shadow = 1.0;\n vec3 lightToPosition = shadowCoord.xyz;\n \n float lightToPositionLength = length( lightToPosition );\n if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;\n vec3 bd3D = normalize( lightToPosition );\n vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n shadow = (\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n ) * ( 1.0 / 9.0 );\n #else\n shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n vec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n #if NUM_DIR_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n shadowWorldPosition = worldPosition;\n #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n #endif\n vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n float shadow = 1.0;\n #ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n directionalLight = directionalLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n spotLight = spotLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n pointLight = pointLightShadows[ i ];\n shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #endif\n return shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n mat4 boneMatX = getBoneMatrix( skinIndex.x );\n mat4 boneMatY = getBoneMatrix( skinIndex.y );\n mat4 boneMatZ = getBoneMatrix( skinIndex.z );\n mat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n uniform mat4 bindMatrix;\n uniform mat4 bindMatrixInverse;\n uniform highp sampler2D boneTexture;\n mat4 getBoneMatrix( const in float i ) {\n int size = textureSize( boneTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n vec4 skinned = vec4( 0.0 );\n skinned += boneMatX * skinVertex * skinWeight.x;\n skinned += boneMatY * skinVertex * skinWeight.y;\n skinned += boneMatZ * skinVertex * skinWeight.z;\n skinned += boneMatW * skinVertex * skinWeight.w;\n transformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n mat4 skinMatrix = mat4( 0.0 );\n skinMatrix += skinWeight.x * boneMatX;\n skinMatrix += skinWeight.y * boneMatY;\n skinMatrix += skinWeight.z * boneMatZ;\n skinMatrix += skinWeight.w * boneMatW;\n skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n #ifdef USE_TANGENT\n objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n #endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n specularStrength = texelSpecular.r;\n#else\n specularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n uniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_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 return saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n return saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 CineonToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n color = max( vec3( 0.0 ), color - 0.004 );\n return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n vec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n return a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n const mat3 ACESInputMat = mat3(\n vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),\n vec3( 0.04823, 0.01566, 0.83777 )\n );\n const mat3 ACESOutputMat = mat3(\n vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),\n vec3( -0.07367, -0.00605, 1.07602 )\n );\n color *= toneMappingExposure / 0.6;\n color = ACESInputMat * color;\n color = RRTAndODTFit( color );\n color = ACESOutputMat * color;\n return saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3( 1.6605, - 0.1246, - 0.0182 ),\n vec3( - 0.5876, 1.1329, - 0.1006 ),\n vec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3( 0.6274, 0.0691, 0.0164 ),\n vec3( 0.3293, 0.9195, 0.0880 ),\n vec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n vec3 x2 = x * x;\n vec3 x4 = x2 * x2;\n return + 15.5 * x4 * x2\n - 40.14 * x4 * x\n + 31.96 * x4\n - 6.868 * x2 * x\n + 0.4298 * x2\n + 0.1191 * x\n - 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n const mat3 AgXInsetMatrix = mat3(\n vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n );\n const mat3 AgXOutsetMatrix = mat3(\n vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n );\n const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;\n color *= toneMappingExposure;\n color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n color = AgXInsetMatrix * color;\n color = max( color, 1e-10 ); color = log2( color );\n color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n color = clamp( color, 0.0, 1.0 );\n color = agxDefaultContrastApprox( color );\n color = AgXOutsetMatrix * color;\n color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n color = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n color = clamp( color, 0.0, 1.0 );\n return color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n const float StartCompression = 0.8 - 0.04;\n const float Desaturation = 0.15;\n color *= toneMappingExposure;\n float x = min( color.r, min( color.g, color.b ) );\n float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n color -= offset;\n float peak = max( color.r, max( color.g, color.b ) );\n if ( peak < StartCompression ) return color;\n float d = 1. - StartCompression;\n float newPeak = 1. - d * d / ( peak + d - StartCompression );\n color *= newPeak / peak;\n float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n return mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n material.transmission = transmission;\n material.transmissionAlpha = 1.0;\n material.thickness = thickness;\n material.attenuationDistance = attenuationDistance;\n material.attenuationColor = attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n #endif\n #ifdef USE_THICKNESSMAP\n material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n #endif\n vec3 pos = vWorldPosition;\n vec3 v = normalize( cameraPosition - pos );\n vec3 n = inverseTransformDirection( normal, viewMatrix );\n vec4 transmitted = getIBLVolumeRefraction(\n n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n material.attenuationColor, material.attenuationDistance );\n material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n uniform float transmission;\n uniform float thickness;\n uniform float attenuationDistance;\n uniform vec3 attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n uniform sampler2D transmissionMap;\n #endif\n #ifdef USE_THICKNESSMAP\n uniform sampler2D thicknessMap;\n #endif\n uniform vec2 transmissionSamplerSize;\n uniform sampler2D transmissionSamplerMap;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrix;\n varying vec3 vWorldPosition;\n float w0( float a ) {\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n }\n float w1( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n }\n float w2( float a ){\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n }\n float w3( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * a );\n }\n float g0( float a ) {\n return w0( a ) + w1( a );\n }\n float g1( float a ) {\n return w2( a ) + w3( a );\n }\n float h0( float a ) {\n return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n }\n float h1( float a ) {\n return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n }\n vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n uv = uv * texelSize.zw + 0.5;\n vec2 iuv = floor( uv );\n vec2 fuv = fract( uv );\n float g0x = g0( fuv.x );\n float g1x = g1( fuv.x );\n float h0x = h0( fuv.x );\n float h1x = h1( fuv.x );\n float h0y = h0( fuv.y );\n float h1y = h1( fuv.y );\n vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n }\n vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n vec2 fLodSizeInv = 1.0 / fLodSize;\n vec2 cLodSizeInv = 1.0 / cLodSize;\n vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n return mix( fSample, cSample, fract( lod ) );\n }\n vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n vec3 modelScale;\n modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n return normalize( refractionVector ) * thickness * modelScale;\n }\n float applyIorToRoughness( const in float roughness, const in float ior ) {\n return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n }\n vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n }\n vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n if ( isinf( attenuationDistance ) ) {\n return vec3( 1.0 );\n } else {\n vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;\n }\n }\n vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n const in vec3 attenuationColor, const in float attenuationDistance ) {\n vec4 transmittedLight;\n vec3 transmittance;\n #ifdef USE_DISPERSION\n float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n for ( int i = 0; i < 3; i ++ ) {\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n transmittedLight[ i ] = transmissionSample[ i ];\n transmittedLight.a += transmissionSample.a;\n transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n }\n transmittedLight.a /= 3.0;\n #else\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n #endif\n vec3 attenuatedColor = transmittance * transmittedLight.rgb;\n vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n }\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n uniform mat3 mapTransform;\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n uniform mat3 alphaMapTransform;\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n uniform mat3 lightMapTransform;\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n uniform mat3 aoMapTransform;\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n uniform mat3 bumpMapTransform;\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n uniform mat3 normalMapTransform;\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n uniform mat3 displacementMapTransform;\n varying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapTransform;\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n uniform mat3 metalnessMapTransform;\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n uniform mat3 roughnessMapTransform;\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n uniform mat3 anisotropyMapTransform;\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n uniform mat3 clearcoatMapTransform;\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform mat3 clearcoatNormalMapTransform;\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform mat3 clearcoatRoughnessMapTransform;\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n uniform mat3 sheenColorMapTransform;\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n uniform mat3 sheenRoughnessMapTransform;\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n uniform mat3 iridescenceMapTransform;\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform mat3 iridescenceThicknessMapTransform;\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n uniform mat3 specularMapTransform;\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n uniform mat3 specularColorMapTransform;\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n uniform mat3 specularIntensityMapTransform;\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n vUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n vec4 worldPosition = vec4( transformed, 1.0 );\n #ifdef USE_BATCHING\n worldPosition = batchingMatrix * worldPosition;\n #endif\n #ifdef USE_INSTANCING\n worldPosition = instanceMatrix * worldPosition;\n #endif\n worldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n gl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n vec4 texColor = texture2D( t2D, vUv );\n #ifdef DECODE_VIDEO_TEXTURE\n texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n uniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n #ifdef ENVMAP_TYPE_CUBE\n vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n #elif defined( ENVMAP_TYPE_CUBE_UV )\n vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n #else\n vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n gl_FragColor = texColor;\n gl_FragColor.a *= opacity;\n #include \n #include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n uniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #if DEPTH_PACKING == 3200\n diffuseColor.a = opacity;\n #endif\n #include \n #include \n #include \n #include \n #include \n #ifdef USE_REVERSED_DEPTH_BUFFER\n float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ];\n #else\n float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5;\n #endif\n #if DEPTH_PACKING == 3200\n gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n #elif DEPTH_PACKING == 3201\n gl_FragColor = packDepthToRGBA( fragCoordZ );\n #elif DEPTH_PACKING == 3202\n gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n #elif DEPTH_PACKING == 3203\n gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n #endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vWorldPosition = 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 \n#include \nvoid main () {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #include \n #include \n #include \n #include \n float dist = length( vWorldPosition - referencePosition );\n dist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n dist = saturate( dist );\n gl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n vec3 direction = normalize( vWorldDirection );\n vec2 sampleUV = equirectUv( direction );\n gl_FragColor = texture2D( tEquirect, sampleUV );\n #include \n #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 \n#include \nvoid main() {\n vLineDistance = scale * lineDistance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #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 \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n if ( mod( vLineDistance, totalSize ) > dashSize ) {\n discard;\n }\n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #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 #include \n #include \n #include \n #include \n #include \n #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n #include \n #include \n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n varying 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 \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n #else\n reflectedLight.indirectDiffuse += vec3( 1.0 );\n #endif\n #include \n reflectedLight.indirectDiffuse *= diffuseColor.rgb;\n vec3 outgoingLight = reflectedLight.indirectDiffuse;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshlambert_vert:"#define LAMBERT\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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}",meshlambert_frag:"#define LAMBERT\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 \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #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 \n#include \nvoid main() {\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 vViewPosition = - 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 \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 viewDir = normalize( vViewPosition );\n vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n vec3 y = cross( viewDir, x );\n vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n #ifdef USE_MATCAP\n vec4 matcapColor = texture2D( matcap, uv );\n #else\n vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n #endif\n vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n #include \n #include \n #include \n #include \n #include \n #include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n vViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n #include \n #include \n #include \n #include \n gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n #ifdef OPAQUE\n gl_FragColor.a = 1.0;\n #endif\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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #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 \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n varying 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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n#ifdef USE_TRANSMISSION\n vWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n #define IOR\n #define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n uniform float ior;\n#endif\n#ifdef USE_SPECULAR\n uniform float specularIntensity;\n uniform vec3 specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n uniform sampler2D specularColorMap;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n uniform sampler2D specularIntensityMap;\n #endif\n#endif\n#ifdef USE_CLEARCOAT\n uniform float clearcoat;\n uniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n uniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n uniform float iridescence;\n uniform float iridescenceIOR;\n uniform float iridescenceThicknessMinimum;\n uniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n uniform vec3 sheenColor;\n uniform float sheenRoughness;\n #ifdef USE_SHEEN_COLORMAP\n uniform sampler2D sheenColorMap;\n #endif\n #ifdef USE_SHEEN_ROUGHNESSMAP\n uniform sampler2D sheenRoughnessMap;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n uniform vec2 anisotropyVector;\n #ifdef USE_ANISOTROPYMAP\n uniform sampler2D anisotropyMap;\n #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 \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n #include \n vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n #ifdef USE_SHEEN\n float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n #endif\n #ifdef USE_CLEARCOAT\n float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n #endif\n #include \n #include \n #include \n #include \n #include \n #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 #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 vViewPosition = - mvPosition.xyz;\n #include \n #include \n #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 vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\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 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n varying vec2 vUv;\n uniform mat3 uvTransform;\n#endif\nvoid main() {\n #ifdef USE_POINTS_UV\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n gl_PointSize = size;\n #ifdef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n #endif\n #include \n #include \n #include \n #include \n}",points_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 vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\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}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n #include \n #include \n #include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n vec4 mvPosition = modelViewMatrix[ 3 ];\n vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\n #ifndef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n #endif\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n gl_Position = projectionMatrix * mvPosition;\n #include \n #include \n #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 \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n}"},l={common:{diffuse:{value:new r.Q1f(0xffffff)},opacity:{value:1},map:{value:null},mapTransform:{value:new r.dwI},alphaMap:{value:null},alphaMapTransform:{value:new r.dwI},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new r.dwI}},envmap:{envMap:{value:null},envMapRotation:{value:new r.dwI},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new r.dwI}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new r.dwI}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new r.dwI},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new r.dwI},normalScale:{value:new r.I9Y(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new r.dwI},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new r.dwI}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new r.dwI}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new r.dwI}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new r.Q1f(0xffffff)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,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 r.Q1f(0xffffff)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new r.dwI},alphaTest:{value:0},uvTransform:{value:new r.dwI}},sprite:{diffuse:{value:new r.Q1f(0xffffff)},opacity:{value:1},center:{value:new r.I9Y(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new r.dwI},alphaMap:{value:null},alphaMapTransform:{value:new r.dwI},alphaTest:{value:0}}},s={basic:{uniforms:(0,r.Iit)([l.common,l.specularmap,l.envmap,l.aomap,l.lightmap,l.fog]),vertexShader:o.meshbasic_vert,fragmentShader:o.meshbasic_frag},lambert:{uniforms:(0,r.Iit)([l.common,l.specularmap,l.envmap,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)}}]),vertexShader:o.meshlambert_vert,fragmentShader:o.meshlambert_frag},phong:{uniforms:(0,r.Iit)([l.common,l.specularmap,l.envmap,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)},specular:{value:new r.Q1f(1118481)},shininess:{value:30}}]),vertexShader:o.meshphong_vert,fragmentShader:o.meshphong_frag},standard:{uniforms:(0,r.Iit)([l.common,l.envmap,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.roughnessmap,l.metalnessmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag},toon:{uniforms:(0,r.Iit)([l.common,l.aomap,l.lightmap,l.emissivemap,l.bumpmap,l.normalmap,l.displacementmap,l.gradientmap,l.fog,l.lights,{emissive:{value:new r.Q1f(0)}}]),vertexShader:o.meshtoon_vert,fragmentShader:o.meshtoon_frag},matcap:{uniforms:(0,r.Iit)([l.common,l.bumpmap,l.normalmap,l.displacementmap,l.fog,{matcap:{value:null}}]),vertexShader:o.meshmatcap_vert,fragmentShader:o.meshmatcap_frag},points:{uniforms:(0,r.Iit)([l.points,l.fog]),vertexShader:o.points_vert,fragmentShader:o.points_frag},dashed:{uniforms:(0,r.Iit)([l.common,l.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:o.linedashed_vert,fragmentShader:o.linedashed_frag},depth:{uniforms:(0,r.Iit)([l.common,l.displacementmap]),vertexShader:o.depth_vert,fragmentShader:o.depth_frag},normal:{uniforms:(0,r.Iit)([l.common,l.bumpmap,l.normalmap,l.displacementmap,{opacity:{value:1}}]),vertexShader:o.meshnormal_vert,fragmentShader:o.meshnormal_frag},sprite:{uniforms:(0,r.Iit)([l.sprite,l.fog]),vertexShader:o.sprite_vert,fragmentShader:o.sprite_frag},background:{uniforms:{uvTransform:{value:new r.dwI},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:o.background_vert,fragmentShader:o.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new r.dwI}},vertexShader:o.backgroundCube_vert,fragmentShader:o.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:o.cube_vert,fragmentShader:o.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:o.equirect_vert,fragmentShader:o.equirect_frag},distanceRGBA:{uniforms:(0,r.Iit)([l.common,l.displacementmap,{referencePosition:{value:new r.Pq0},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:o.distanceRGBA_vert,fragmentShader:o.distanceRGBA_frag},shadow:{uniforms:(0,r.Iit)([l.lights,l.fog,{color:{value:new r.Q1f(0)},opacity:{value:1}}]),vertexShader:o.shadow_vert,fragmentShader:o.shadow_frag}};s.physical={uniforms:(0,r.Iit)([s.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new r.dwI},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new r.dwI},clearcoatNormalScale:{value:new r.I9Y(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new r.dwI},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new r.dwI},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new r.dwI},sheen:{value:0},sheenColor:{value:new r.Q1f(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new r.dwI},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new r.dwI},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new r.dwI},transmissionSamplerSize:{value:new r.I9Y},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new r.dwI},attenuationDistance:{value:0},attenuationColor:{value:new r.Q1f(0)},specularColor:{value:new r.Q1f(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new r.dwI},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new r.dwI},anisotropyVector:{value:new r.I9Y},anisotropyMap:{value:null},anisotropyMapTransform:{value:new r.dwI}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag};let c={r:0,b:0,g:0},d=new r.O9p,u=new r.kn4;function f(e,n,t,i,a,o,l){let f,p,m=new r.Q1f(0),h=+(!0!==o),_=null,g=0,v=null;function E(e){let r=!0===e.isScene?e.background:null;return r&&r.isTexture&&(r=(e.backgroundBlurriness>0?t:n).get(r)),r}function S(n,t){n.getRGB(c,(0,r._Ut)(e)),i.buffers.color.setClear(c.r,c.g,c.b,t,l)}return{getClearColor:function(){return m},setClearColor:function(e,n=1){m.set(e),S(m,h=n)},getClearAlpha:function(){return h},setClearAlpha:function(e){S(m,h=e)},render:function(n){let t=!1,r=E(n);null===r?S(m,h):r&&r.isColor&&(S(r,1),t=!0);let a=e.xr.getEnvironmentBlendMode();"additive"===a?i.buffers.color.setClear(0,0,0,1,l):"alpha-blend"===a&&i.buffers.color.setClear(0,0,0,0,l),(e.autoClear||t)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))},addToRenderList:function(n,t){let i=E(t);i&&(i.isCubeTexture||i.mapping===r.Om)?(void 0===p&&((p=new r.eaF(new r.iNn(1,1,1),new r.BKk({name:"BackgroundCubeMaterial",uniforms:(0,r.lxW)(s.backgroundCube.uniforms),vertexShader:s.backgroundCube.vertexShader,fragmentShader:s.backgroundCube.fragmentShader,side:r.hsX,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1}))).geometry.deleteAttribute("normal"),p.geometry.deleteAttribute("uv"),p.onBeforeRender=function(e,n,t){this.matrixWorld.copyPosition(t.matrixWorld)},Object.defineProperty(p.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),a.update(p)),d.copy(t.backgroundRotation),d.x*=-1,d.y*=-1,d.z*=-1,i.isCubeTexture&&!1===i.isRenderTargetTexture&&(d.y*=-1,d.z*=-1),p.material.uniforms.envMap.value=i,p.material.uniforms.flipEnvMap.value=i.isCubeTexture&&!1===i.isRenderTargetTexture?-1:1,p.material.uniforms.backgroundBlurriness.value=t.backgroundBlurriness,p.material.uniforms.backgroundIntensity.value=t.backgroundIntensity,p.material.uniforms.backgroundRotation.value.setFromMatrix4(u.makeRotationFromEuler(d)),p.material.toneMapped=r.ppV.getTransfer(i.colorSpace)!==r.KLL,(_!==i||g!==i.version||v!==e.toneMapping)&&(p.material.needsUpdate=!0,_=i,g=i.version,v=e.toneMapping),p.layers.enableAll(),n.unshift(p,p.geometry,p.material,0,0,null)):i&&i.isTexture&&(void 0===f&&((f=new r.eaF(new r.bdM(2,2),new r.BKk({name:"BackgroundMaterial",uniforms:(0,r.lxW)(s.background.uniforms),vertexShader:s.background.vertexShader,fragmentShader:s.background.fragmentShader,side:r.hB5,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(f.material,"map",{get:function(){return this.uniforms.t2D.value}}),a.update(f)),f.material.uniforms.t2D.value=i,f.material.uniforms.backgroundIntensity.value=t.backgroundIntensity,f.material.toneMapped=r.ppV.getTransfer(i.colorSpace)!==r.KLL,!0===i.matrixAutoUpdate&&i.updateMatrix(),f.material.uniforms.uvTransform.value.copy(i.matrix),(_!==i||g!==i.version||v!==e.toneMapping)&&(f.material.needsUpdate=!0,_=i,g=i.version,v=e.toneMapping),f.layers.enableAll(),n.unshift(f,f.geometry,f.material,0,0,null))},dispose:function(){void 0!==p&&(p.geometry.dispose(),p.material.dispose(),p=void 0),void 0!==f&&(f.geometry.dispose(),f.material.dispose(),f=void 0)}}}function p(e,n){let t=e.getParameter(e.MAX_VERTEX_ATTRIBS),i={},a=d(null),o=a,l=!1;function s(n){return e.bindVertexArray(n)}function c(n){return e.deleteVertexArray(n)}function d(e){let n=[],r=[],i=[];for(let e=0;e=0){let t=i[n],r=a[n];if(void 0===r&&("instanceMatrix"===n&&e.instanceMatrix&&(r=e.instanceMatrix),"instanceColor"===n&&e.instanceColor&&(r=e.instanceColor)),void 0===t||t.attribute!==r||r&&t.data!==r.data)return!0;l++}return o.attributesNum!==l||o.index!==r}(t,_,c,g))&&function(e,n,t,r){let i={},a=n.attributes,l=0,s=t.getAttributes();for(let n in s)if(s[n].location>=0){let t=a[n];void 0===t&&("instanceMatrix"===n&&e.instanceMatrix&&(t=e.instanceMatrix),"instanceColor"===n&&e.instanceColor&&(t=e.instanceColor));let r={};r.attribute=t,t&&t.data&&(r.data=t.data),i[n]=r,l++}o.attributes=i,o.attributesNum=l,o.index=r}(t,_,c,g),null!==g&&n.update(g,e.ELEMENT_ARRAY_BUFFER),(v||l)&&(l=!1,function(t,i,a,o){u();let l=o.attributes,s=a.getAttributes(),c=i.defaultAttributeValues;for(let i in s){let a=s[i];if(a.location>=0){let s=l[i];if(void 0===s&&("instanceMatrix"===i&&t.instanceMatrix&&(s=t.instanceMatrix),"instanceColor"===i&&t.instanceColor&&(s=t.instanceColor)),void 0!==s){let i=s.normalized,l=s.itemSize,c=n.get(s);if(void 0===c)continue;let d=c.buffer,u=c.type,m=c.bytesPerElement,_=u===e.INT||u===e.UNSIGNED_INT||s.gpuType===r.Yuy;if(s.isInterleavedBufferAttribute){let n=s.data,r=n.stride,c=s.offset;if(n.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";n="mediump"}return"mediump"===n&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let l=void 0!==t.precision?t.precision:"highp",s=o(l);s!==l&&(console.warn("THREE.WebGLRenderer:",l,"not supported, using",s,"instead."),l=s);let c=!0===t.logarithmicDepthBuffer,d=!0===t.reversedDepthBuffer&&n.has("EXT_clip_control"),u=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),f=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),p=e.getParameter(e.MAX_TEXTURE_SIZE),m=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),h=e.getParameter(e.MAX_VERTEX_ATTRIBS),_=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),g=e.getParameter(e.MAX_VARYING_VECTORS);return{isWebGL2:!0,getMaxAnisotropy:function(){if(void 0!==a)return a;if(!0===n.has("EXT_texture_filter_anisotropic")){let t=n.get("EXT_texture_filter_anisotropic");a=e.getParameter(t.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else a=0;return a},getMaxPrecision:o,textureFormatReadable:function(n){return n===r.GWd||i.convert(n)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_FORMAT)},textureTypeReadable:function(t){let a=t===r.ix0&&(n.has("EXT_color_buffer_half_float")||n.has("EXT_color_buffer_float"));return t===r.OUM||i.convert(t)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_TYPE)||t===r.RQf||!!a},precision:l,logarithmicDepthBuffer:c,reversedDepthBuffer:d,maxTextures:u,maxVertexTextures:f,maxTextureSize:p,maxCubemapSize:m,maxAttributes:h,maxVertexUniforms:_,maxVaryings:g,maxFragmentUniforms:e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),vertexTextures:f>0,maxSamples:e.getParameter(e.MAX_SAMPLES)}}function _(e){let n=this,t=null,i=0,a=!1,o=!1,l=new r.Zcv,s=new r.dwI,c={value:null,needsUpdate:!1};function d(e,t,r,i){let a=null!==e?e.length:0,o=null;if(0!==a){if(o=c.value,!0!==i||null===o){let n=r+4*a,i=t.matrixWorldInverse;s.getNormalMatrix(i),(null===o||o.length0),n.numPlanes=i,n.numIntersection=0)}}function g(e){let n=new WeakMap;function t(e,n){return n===r.wfO?e.mapping=r.hy7:n===r.uV5&&(e.mapping=r.xFO),e}function i(e){let t=e.target;t.removeEventListener("dispose",i);let r=n.get(t);void 0!==r&&(n.delete(t),r.dispose())}return{get:function(a){if(a&&a.isTexture){let o=a.mapping;if(o===r.wfO||o===r.uV5)if(n.has(a))return t(n.get(a).texture,a.mapping);else{let o=a.image;if(!o||!(o.height>0))return null;{let l=new r.o6l(o.height);return l.fromEquirectangularTexture(e,a),n.set(a,l),a.addEventListener("dispose",i),t(l.texture,a.mapping)}}}return a},dispose:function(){n=new WeakMap}}}let v=[.125,.215,.35,.446,.526,.582],E=new r.qUd,S=new r.Q1f,T=null,M=0,x=0,R=!1,A=(1+Math.sqrt(5))/2,b=1/A,C=[new r.Pq0(-A,b,0),new r.Pq0(A,b,0),new r.Pq0(-b,0,A),new r.Pq0(b,0,A),new r.Pq0(0,A,-b),new r.Pq0(0,A,b),new r.Pq0(-1,1,-1),new r.Pq0(1,1,-1),new r.Pq0(-1,1,1),new r.Pq0(1,1,1)],L=new r.Pq0;class P{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,n=0,t=.1,r=100,i={}){let{size:a=256,position:o=L}=i;T=this._renderer.getRenderTarget(),M=this._renderer.getActiveCubeFace(),x=this._renderer.getActiveMipmapLevel(),R=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,t,r,l,o),n>0&&this._blur(l,0,0,n),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,n=null){return this._fromTexture(e,n)}fromCubemap(e,n=null){return this._fromTexture(e,n)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=I(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=D(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;ee-4?s=v[l-e+4-1]:0===l&&(s=0),i.push(s);let c=1/(o-2),d=-c,u=1+c,f=[d,d,u,d,u,u,d,d,u,u,d,u],p=new Float32Array(108),m=new Float32Array(72),h=new Float32Array(36);for(let e=0;e<6;e++){let n=e%3*2/3-1,t=e>2?0:-1,r=[n,t,0,n+2/3,t,0,n+2/3,t+1,0,n,t,0,n+2/3,t+1,0,n,t+1,0];p.set(r,18*e),m.set(f,12*e);let i=[e,e,e,e,e,e];h.set(i,6*e)}let _=new r.LoY;_.setAttribute("position",new r.THS(p,3)),_.setAttribute("uv",new r.THS(m,2)),_.setAttribute("faceIndex",new r.THS(h,1)),n.push(_),a>4&&a--}return{lodPlanes:n,sizeLods:t,sigmas:i}}(i)),this._blurMaterial=function(e,n,t){let i=new Float32Array(20),a=new r.Pq0(0,1,0);return new r.BKk({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:a}},vertexShader:y(),fragmentShader:` - - precision mediump float; - precision mediump int; - - varying vec3 vOutputDirection; - - uniform sampler2D envMap; - uniform int samples; - uniform float weights[ n ]; - uniform bool latitudinal; - uniform float dTheta; - uniform float mipInt; - uniform vec3 poleAxis; - - #define ENVMAP_TYPE_CUBE_UV - #include - - vec3 getSample( float theta, vec3 axis ) { - - float cosTheta = cos( theta ); - // Rodrigues' axis-angle rotation - vec3 sampleDirection = vOutputDirection * cosTheta - + cross( axis, vOutputDirection ) * sin( theta ) - + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); - - return bilinearCubeUV( envMap, sampleDirection, mipInt ); - - } - - void main() { - - vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); - - if ( all( equal( axis, vec3( 0.0 ) ) ) ) { - - axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); - - } - - axis = normalize( axis ); - - gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); - gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); - - for ( int i = 1; i < n; i++ ) { - - if ( i >= samples ) { - - break; - - } - - float theta = dTheta * float( i ); - gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); - gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); - - } - - } - `,blending:r.XIg,depthTest:!1,depthWrite:!1})}(i,e,n)}return i}_compileMaterial(e){let n=new r.eaF(this._lodPlanes[0],e);this._renderer.compile(n,E)}_sceneToCubeUV(e,n,t,i,a){let o=new r.ubm(90,1,n,t),l=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],c=this._renderer,d=c.autoClear,u=c.toneMapping;c.getClearColor(S),c.toneMapping=r.y_p,c.autoClear=!1,c.state.buffers.depth.getReversed()&&(c.setRenderTarget(i),c.clearDepth(),c.setRenderTarget(null));let f=new r.V9B({name:"PMREM.Background",side:r.hsX,depthWrite:!1,depthTest:!1}),p=new r.eaF(new r.iNn,f),m=!1,h=e.background;h?h.isColor&&(f.color.copy(h),e.background=null,m=!0):(f.color.copy(S),m=!0);for(let n=0;n<6;n++){let t=n%3;0===t?(o.up.set(0,l[n],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x+s[n],a.y,a.z)):1===t?(o.up.set(0,0,l[n]),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y+s[n],a.z)):(o.up.set(0,l[n],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y,a.z+s[n]));let r=this._cubeSize;w(i,t*r,n>2?r:0,r,r),c.setRenderTarget(i),m&&c.render(p,o),c.render(e,o)}p.geometry.dispose(),p.material.dispose(),c.toneMapping=u,c.autoClear=d,e.background=h}_textureToCubeUV(e,n){let t=this._renderer,i=e.mapping===r.hy7||e.mapping===r.xFO;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=I()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=D());let a=i?this._cubemapMaterial:this._equirectMaterial,o=new r.eaF(this._lodPlanes[0],a);a.uniforms.envMap.value=e;let l=this._cubeSize;w(n,0,0,3*l,2*l),t.setRenderTarget(n),t.render(o,E)}_applyPMREM(e){let n=this._renderer,t=n.autoClear;n.autoClear=!1;let r=this._lodPlanes.length;for(let n=1;n20&&console.warn(`sigmaRadians, ${a}, is too large and will clip, as it requested ${h} samples when the maximum is set to 20`);let _=[],g=0;for(let e=0;e<20;++e){let n=e/m,t=Math.exp(-n*n/2);_.push(t),0===e?g+=t:ev-4?i-v+4:0),T,3*S,2*S),s.setRenderTarget(n),s.render(d,E)}}function U(e,n,t){let i=new r.nWS(e,n,t);return i.texture.mapping=r.Om,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function w(e,n,t,r,i){e.viewport.set(n,t,r,i),e.scissor.set(n,t,r,i)}function D(){return new r.BKk({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:y(),fragmentShader:` - - precision mediump float; - precision mediump int; - - varying vec3 vOutputDirection; - - uniform sampler2D envMap; - - #include - - void main() { - - vec3 outputDirection = normalize( vOutputDirection ); - vec2 uv = equirectUv( outputDirection ); - - gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); - - } - `,blending:r.XIg,depthTest:!1,depthWrite:!1})}function I(){return new r.BKk({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:y(),fragmentShader:` - - precision mediump float; - precision mediump int; - - uniform float flipEnvMap; - - varying vec3 vOutputDirection; - - uniform samplerCube envMap; - - void main() { - - gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); - - } - `,blending:r.XIg,depthTest:!1,depthWrite:!1})}function y(){return` - - precision mediump float; - precision mediump int; - - attribute float faceIndex; - - varying vec3 vOutputDirection; - - // RH coordinate system; PMREM face-indexing convention - vec3 getDirection( vec2 uv, float face ) { - - uv = 2.0 * uv - 1.0; - - vec3 direction = vec3( uv, 1.0 ); - - if ( face == 0.0 ) { - - direction = direction.zyx; // ( 1, v, u ) pos x - - } else if ( face == 1.0 ) { - - direction = direction.xzy; - direction.xz *= -1.0; // ( -u, 1, -v ) pos y - - } else if ( face == 2.0 ) { - - direction.x *= -1.0; // ( -u, v, 1 ) pos z - - } else if ( face == 3.0 ) { - - direction = direction.zyx; - direction.xz *= -1.0; // ( -1, v, -u ) neg x - - } else if ( face == 4.0 ) { - - direction = direction.xzy; - direction.xy *= -1.0; // ( -u, -1, v ) neg y - - } else if ( face == 5.0 ) { - - direction.z *= -1.0; // ( u, v, -1 ) neg z - - } - - return direction; - - } - - void main() { - - vOutputDirection = getDirection( uv, faceIndex ); - gl_Position = vec4( position, 1.0 ); - - } - `}function N(e){let n=new WeakMap,t=null;function i(e){let t=e.target;t.removeEventListener("dispose",i);let r=n.get(t);void 0!==r&&(n.delete(t),r.dispose())}return{get:function(a){if(a&&a.isTexture){let o=a.mapping,l=o===r.wfO||o===r.uV5,s=o===r.hy7||o===r.xFO;if(l||s){let r=n.get(a),o=void 0!==r?r.texture.pmremVersion:0;if(a.isRenderTargetTexture&&a.pmremVersion!==o)return null===t&&(t=new P(e)),(r=l?t.fromEquirectangular(a,r):t.fromCubemap(a,r)).texture.pmremVersion=a.pmremVersion,n.set(a,r),r.texture;{if(void 0!==r)return r.texture;let o=a.image;return l&&o&&o.height>0||s&&o&&function(e){let n=0;for(let t=0;t<6;t++)void 0!==e[t]&&n++;return 6===n}(o)?(null===t&&(t=new P(e)),(r=l?t.fromEquirectangular(a):t.fromCubemap(a)).texture.pmremVersion=a.pmremVersion,n.set(a,r),a.addEventListener("dispose",i),r.texture):null}}}return a},dispose:function(){n=new WeakMap,null!==t&&(t.dispose(),t=null)}}}function O(e){let n={};function t(t){let r;if(void 0!==n[t])return n[t];switch(t){case"WEBGL_depth_texture":r=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:r=e.getExtension(t)}return n[t]=r,r}return{has:function(e){return null!==t(e)},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(e){let n=t(e);return null===n&&(0,r.mcG)("THREE.WebGLRenderer: "+e+" extension not supported."),n}}}function F(e,n,t,i){let a={},o=new WeakMap;function l(e){let r=e.target;for(let e in null!==r.index&&n.remove(r.index),r.attributes)n.remove(r.attributes[e]);r.removeEventListener("dispose",l),delete a[r.id];let s=o.get(r);s&&(n.remove(s),o.delete(r)),i.releaseStatesOfGeometry(r),!0===r.isInstancedBufferGeometry&&delete r._maxInstanceCount,t.memory.geometries--}function s(e){let t=[],i=e.index,a=e.attributes.position,l=0;if(null!==i){let e=i.array;l=i.version;for(let n=0,r=e.length;nn.maxTextureSize&&(h=Math.ceil(m/n.maxTextureSize),m=n.maxTextureSize);let _=new Float32Array(m*h*4*u),g=new r.rFo(_,m,h,u);g.type=r.RQf,g.needsUpdate=!0;let v=4*p;for(let n=0;n0)return e;let i=n*t,a=Y[i];if(void 0===a&&(a=new Float32Array(i),Y[i]=a),0!==n){r.toArray(a,0);for(let r=1,i=0;r!==n;++r)i+=t,e[r].toArray(a,i)}return a}function J(e,n){if(e.length!==n.length)return!1;for(let t=0,r=e.length;t":" "} ${i}: ${t[e]}`)}return r.join("\n")}(e.getShaderSource(n),r)}}let eQ=new r.Pq0;function eZ(e){return""!==e}function e$(e,n){let t=n.numSpotLightShadows+n.numSpotLightMaps-n.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,n.numDirLights).replace(/NUM_SPOT_LIGHTS/g,n.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,n.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,n.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,n.numPointLights).replace(/NUM_HEMI_LIGHTS/g,n.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,n.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,n.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,n.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,n.numPointLightShadows)}function eJ(e,n){return e.replace(/NUM_CLIPPING_PLANES/g,n.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,n.numClippingPlanes-n.numClipIntersection)}let e0=/^[ \t]*#include +<([\w\d./]+)>/gm;function e1(e){return e.replace(e0,e2)}let e3=new Map;function e2(e,n){let t=o[n];if(void 0===t){let e=e3.get(n);if(void 0!==e)t=o[e],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',n,e);else throw Error("Can not resolve #include <"+n+">")}return e1(t)}let e4=/#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 e5(e){return e.replace(e4,e6)}function e6(e,n,t,r){let i="";for(let e=parseInt(n);e0&&(a+="\n"),(l=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,M].filter(eZ).join("\n")).length>0&&(l+="\n")):(a=[e9(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,M,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+v:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&!1===t.flatShading?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&!1===t.flatShading?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+_:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif","\n"].filter(eZ).join("\n"),l=[e9(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,M,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+g:"",t.envMap?"#define "+v:"",t.envMap?"#define "+E:"",S?"#define CUBEUV_TEXEL_WIDTH "+S.texelWidth:"",S?"#define CUBEUV_TEXEL_HEIGHT "+S.texelHeight:"",S?"#define CUBEUV_MAX_MIP "+S.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&!1===t.flatShading?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+_:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==r.y_p?"#define TONE_MAPPING":"",t.toneMapping!==r.y_p?o.tonemapping_pars_fragment:"",t.toneMapping!==r.y_p?function(e,n){let t;switch(n){case r.kyO:t="Linear";break;case r.Mjd:t="Reinhard";break;case r.nNL:t="Cineon";break;case r.FV:t="ACESFilmic";break;case r.LAk:t="AgX";break;case r.aJ8:t="Neutral";break;case r.g7M:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",n),t="Linear"}return"vec3 "+e+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",o.colorspace_pars_fragment,function(e,n){let t=function(e){r.ppV._getMatrix(eq,r.ppV.workingColorSpace,e);let n=`mat3( ${eq.elements.map(e=>e.toFixed(4))} )`;switch(r.ppV.getTransfer(e)){case r.VxR:return[n,"LinearTransferOETF"];case r.KLL:return[n,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",e),[n,"LinearTransferOETF"]}}(n);return`vec4 ${e}( vec4 value ) { - return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) ); -}`}("linearToOutputTexel",t.outputColorSpace),function(){r.ppV.getLuminanceCoefficients(eQ);let e=eQ.x.toFixed(4),n=eQ.y.toFixed(4),t=eQ.z.toFixed(4);return`float luminance( const in vec3 rgb ) { - const vec3 weights = vec3( ${e}, ${n}, ${t} ); - return dot( weights, rgb ); -}`}(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"","\n"].filter(eZ).join("\n")),m=eJ(m=e$(m=e1(m),t),t),h=eJ(h=e$(h=e1(h),t),t),m=e5(m),h=e5(h),!0!==t.isRawShaderMaterial&&(R="#version 300 es\n",a=[T,"#define attribute in\n#define varying out\n#define texture2D texture"].join("\n")+"\n"+a,l=["#define varying in",t.glslVersion===r.Wdf?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===r.Wdf?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+l);let A=R+a+m,b=R+l+h,C=eK(f,f.VERTEX_SHADER,A),L=eK(f,f.FRAGMENT_SHADER,b);function P(n){if(e.debug.checkShaderErrors){let t=f.getProgramInfoLog(x)||"",r=f.getShaderInfoLog(C)||"",i=f.getShaderInfoLog(L)||"",o=t.trim(),s=r.trim(),c=i.trim(),d=!0,u=!0;if(!1===f.getProgramParameter(x,f.LINK_STATUS))if(d=!1,"function"==typeof e.debug.onShaderError)e.debug.onShaderError(f,x,C,L);else{let e=ej(f,C,"vertex"),t=ej(f,L,"fragment");console.error("THREE.WebGLProgram: Shader Error "+f.getError()+" - VALIDATE_STATUS "+f.getProgramParameter(x,f.VALIDATE_STATUS)+"\n\nMaterial Name: "+n.name+"\nMaterial Type: "+n.type+"\n\nProgram Info Log: "+o+"\n"+e+"\n"+t)}else""!==o?console.warn("THREE.WebGLProgram: Program Info Log:",o):(""===s||""===c)&&(u=!1);u&&(n.diagnostics={runnable:d,programLog:o,vertexShader:{log:s,prefix:a},fragmentShader:{log:c,prefix:l}})}f.deleteShader(C),f.deleteShader(L),s=new eX(f,x),c=function(e,n){let t={},r=e.getProgramParameter(n,e.ACTIVE_ATTRIBUTES);for(let i=0;i0,j=o.clearcoat>0,Q=o.dispersion>0,Z=o.iridescence>0,$=o.sheen>0,J=o.transmission>0,ee=q&&!!o.anisotropyMap,en=j&&!!o.clearcoatMap,et=j&&!!o.clearcoatNormalMap,er=j&&!!o.clearcoatRoughnessMap,ei=Z&&!!o.iridescenceMap,ea=Z&&!!o.iridescenceThicknessMap,eo=$&&!!o.sheenColorMap,el=$&&!!o.sheenRoughnessMap,es=!!o.specularMap,ec=!!o.specularColorMap,ed=!!o.specularIntensityMap,eu=J&&!!o.transmissionMap,ef=J&&!!o.thicknessMap,ep=!!o.gradientMap,em=!!o.alphaMap,eh=o.alphaTest>0,e_=!!o.alphaHash,eg=!!o.extensions,ev=r.y_p;o.toneMapped&&(null===I||!0===I.isXRRenderTarget)&&(ev=e.toneMapping);let eE={shaderID:P,shaderType:o.type,shaderName:o.name,vertexShader:S,fragmentShader:T,defines:o.defines,customVertexShaderID:M,customFragmentShaderID:x,isRawShaderMaterial:!0===o.isRawShaderMaterial,glslVersion:o.glslVersion,precision:h,batching:O,batchingColor:O&&null!==E._colorsTexture,instancing:N,instancingColor:N&&null!==E.instanceColor,instancingMorph:N&&null!==E.morphTexture,supportsVertexTextures:m,outputColorSpace:null===I?e.outputColorSpace:!0===I.isXRRenderTarget?I.texture.colorSpace:r.Zr2,alphaToCoverage:!!o.alphaToCoverage,map:F,matcap:B,envMap:H,envMapMode:H&&C.mapping,envMapCubeUVHeight:L,aoMap:G,lightMap:V,bumpMap:k,normalMap:W,displacementMap:m&&z,emissiveMap:X,normalMapObjectSpace:W&&o.normalMapType===r.vyJ,normalMapTangentSpace:W&&o.normalMapType===r.bI3,metalnessMap:K,roughnessMap:Y,anisotropy:q,anisotropyMap:ee,clearcoat:j,clearcoatMap:en,clearcoatNormalMap:et,clearcoatRoughnessMap:er,dispersion:Q,iridescence:Z,iridescenceMap:ei,iridescenceThicknessMap:ea,sheen:$,sheenColorMap:eo,sheenRoughnessMap:el,specularMap:es,specularColorMap:ec,specularIntensityMap:ed,transmission:J,transmissionMap:eu,thicknessMap:ef,gradientMap:ep,opaque:!1===o.transparent&&o.blending===r.NTi&&!1===o.alphaToCoverage,alphaMap:em,alphaTest:eh,alphaHash:e_,combine:o.combine,mapUv:F&&g(o.map.channel),aoMapUv:G&&g(o.aoMap.channel),lightMapUv:V&&g(o.lightMap.channel),bumpMapUv:k&&g(o.bumpMap.channel),normalMapUv:W&&g(o.normalMap.channel),displacementMapUv:z&&g(o.displacementMap.channel),emissiveMapUv:X&&g(o.emissiveMap.channel),metalnessMapUv:K&&g(o.metalnessMap.channel),roughnessMapUv:Y&&g(o.roughnessMap.channel),anisotropyMapUv:ee&&g(o.anisotropyMap.channel),clearcoatMapUv:en&&g(o.clearcoatMap.channel),clearcoatNormalMapUv:et&&g(o.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:er&&g(o.clearcoatRoughnessMap.channel),iridescenceMapUv:ei&&g(o.iridescenceMap.channel),iridescenceThicknessMapUv:ea&&g(o.iridescenceThicknessMap.channel),sheenColorMapUv:eo&&g(o.sheenColorMap.channel),sheenRoughnessMapUv:el&&g(o.sheenRoughnessMap.channel),specularMapUv:es&&g(o.specularMap.channel),specularColorMapUv:ec&&g(o.specularColorMap.channel),specularIntensityMapUv:ed&&g(o.specularIntensityMap.channel),transmissionMapUv:eu&&g(o.transmissionMap.channel),thicknessMapUv:ef&&g(o.thicknessMap.channel),alphaMapUv:em&&g(o.alphaMap.channel),vertexTangents:!!A.attributes.tangent&&(W||q),vertexColors:o.vertexColors,vertexAlphas:!0===o.vertexColors&&!!A.attributes.color&&4===A.attributes.color.itemSize,pointsUvs:!0===E.isPoints&&!!A.attributes.uv&&(F||em),fog:!!R,useFog:!0===o.fog,fogExp2:!!R&&R.isFogExp2,flatShading:!0===o.flatShading&&!1===o.wireframe,sizeAttenuation:!0===o.sizeAttenuation,logarithmicDepthBuffer:p,reversedDepthBuffer:y,skinning:!0===E.isSkinnedMesh,morphTargets:void 0!==A.morphAttributes.position,morphNormals:void 0!==A.morphAttributes.normal,morphColors:void 0!==A.morphAttributes.color,morphTargetsCount:w,morphTextureStride:D,numDirLights:c.directional.length,numPointLights:c.point.length,numSpotLights:c.spot.length,numSpotLightMaps:c.spotLightMap.length,numRectAreaLights:c.rectArea.length,numHemiLights:c.hemi.length,numDirLightShadows:c.directionalShadowMap.length,numPointLightShadows:c.pointShadowMap.length,numSpotLightShadows:c.spotShadowMap.length,numSpotLightShadowsWithMaps:c.numSpotLightShadowsWithMaps,numLightProbes:c.numLightProbes,numClippingPlanes:l.numPlanes,numClipIntersection:l.numIntersection,dithering:o.dithering,shadowMapEnabled:e.shadowMap.enabled&&f.length>0,shadowMapType:e.shadowMap.type,toneMapping:ev,decodeVideoTexture:F&&!0===o.map.isVideoTexture&&r.ppV.getTransfer(o.map.colorSpace)===r.KLL,decodeVideoTextureEmissive:X&&!0===o.emissiveMap.isVideoTexture&&r.ppV.getTransfer(o.emissiveMap.colorSpace)===r.KLL,premultipliedAlpha:o.premultipliedAlpha,doubleSided:o.side===r.$EB,flipSided:o.side===r.hsX,useDepthPacking:o.depthPacking>=0,depthPacking:o.depthPacking||0,index0AttributeName:o.index0AttributeName,extensionClipCullDistance:eg&&!0===o.extensions.clipCullDistance&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(eg&&!0===o.extensions.multiDraw||O)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:o.customProgramCacheKey()};return eE.vertexUv1s=u.has(1),eE.vertexUv2s=u.has(2),eE.vertexUv3s=u.has(3),u.clear(),eE},getProgramCacheKey:function(n){var t,r,i,a;let o=[];if(n.shaderID?o.push(n.shaderID):(o.push(n.customVertexShaderID),o.push(n.customFragmentShaderID)),void 0!==n.defines)for(let e in n.defines)o.push(e),o.push(n.defines[e]);return!1===n.isRawShaderMaterial&&(t=o,r=n,t.push(r.precision),t.push(r.outputColorSpace),t.push(r.envMapMode),t.push(r.envMapCubeUVHeight),t.push(r.mapUv),t.push(r.alphaMapUv),t.push(r.lightMapUv),t.push(r.aoMapUv),t.push(r.bumpMapUv),t.push(r.normalMapUv),t.push(r.displacementMapUv),t.push(r.emissiveMapUv),t.push(r.metalnessMapUv),t.push(r.roughnessMapUv),t.push(r.anisotropyMapUv),t.push(r.clearcoatMapUv),t.push(r.clearcoatNormalMapUv),t.push(r.clearcoatRoughnessMapUv),t.push(r.iridescenceMapUv),t.push(r.iridescenceThicknessMapUv),t.push(r.sheenColorMapUv),t.push(r.sheenRoughnessMapUv),t.push(r.specularMapUv),t.push(r.specularColorMapUv),t.push(r.specularIntensityMapUv),t.push(r.transmissionMapUv),t.push(r.thicknessMapUv),t.push(r.combine),t.push(r.fogExp2),t.push(r.sizeAttenuation),t.push(r.morphTargetsCount),t.push(r.morphAttributeCount),t.push(r.numDirLights),t.push(r.numPointLights),t.push(r.numSpotLights),t.push(r.numSpotLightMaps),t.push(r.numHemiLights),t.push(r.numRectAreaLights),t.push(r.numDirLightShadows),t.push(r.numPointLightShadows),t.push(r.numSpotLightShadows),t.push(r.numSpotLightShadowsWithMaps),t.push(r.numLightProbes),t.push(r.shadowMapType),t.push(r.toneMapping),t.push(r.numClippingPlanes),t.push(r.numClipIntersection),t.push(r.depthPacking),i=o,a=n,c.disableAll(),a.supportsVertexTextures&&c.enable(0),a.instancing&&c.enable(1),a.instancingColor&&c.enable(2),a.instancingMorph&&c.enable(3),a.matcap&&c.enable(4),a.envMap&&c.enable(5),a.normalMapObjectSpace&&c.enable(6),a.normalMapTangentSpace&&c.enable(7),a.clearcoat&&c.enable(8),a.iridescence&&c.enable(9),a.alphaTest&&c.enable(10),a.vertexColors&&c.enable(11),a.vertexAlphas&&c.enable(12),a.vertexUv1s&&c.enable(13),a.vertexUv2s&&c.enable(14),a.vertexUv3s&&c.enable(15),a.vertexTangents&&c.enable(16),a.anisotropy&&c.enable(17),a.alphaHash&&c.enable(18),a.batching&&c.enable(19),a.dispersion&&c.enable(20),a.batchingColor&&c.enable(21),a.gradientMap&&c.enable(22),i.push(c.mask),c.disableAll(),a.fog&&c.enable(0),a.useFog&&c.enable(1),a.flatShading&&c.enable(2),a.logarithmicDepthBuffer&&c.enable(3),a.reversedDepthBuffer&&c.enable(4),a.skinning&&c.enable(5),a.morphTargets&&c.enable(6),a.morphNormals&&c.enable(7),a.morphColors&&c.enable(8),a.premultipliedAlpha&&c.enable(9),a.shadowMapEnabled&&c.enable(10),a.doubleSided&&c.enable(11),a.flipSided&&c.enable(12),a.useDepthPacking&&c.enable(13),a.dithering&&c.enable(14),a.transmission&&c.enable(15),a.sheen&&c.enable(16),a.opaque&&c.enable(17),a.pointsUvs&&c.enable(18),a.decodeVideoTexture&&c.enable(19),a.decodeVideoTextureEmissive&&c.enable(20),a.alphaToCoverage&&c.enable(21),i.push(c.mask),o.push(e.outputColorSpace)),o.push(n.customProgramCacheKey),o.join()},getUniforms:function(e){let n,t=_[e.type];if(t){let e=s[t];n=r.LlO.clone(e.uniforms)}else n=e.uniforms;return n},acquireProgram:function(n,t){let r;for(let e=0,n=f.length;e0?r.push(d):!0===o.transparent?i.push(d):t.push(d)},unshift:function(e,n,o,l,s,c){let d=a(e,n,o,l,s,c);o.transmission>0?r.unshift(d):!0===o.transparent?i.unshift(d):t.unshift(d)},finish:function(){for(let t=n,r=e.length;t1&&t.sort(e||ni),r.length>1&&r.sort(n||na),i.length>1&&i.sort(n||na)}}}function nl(){let e=new WeakMap;return{get:function(n,t){let r,i=e.get(n);return void 0===i?(r=new no,e.set(n,[r])):t>=i.length?(r=new no,i.push(r)):r=i[t],r},dispose:function(){e=new WeakMap}}}function ns(){let e={};return{get:function(n){let t;if(void 0!==e[n.id])return e[n.id];switch(n.type){case"DirectionalLight":t={direction:new r.Pq0,color:new r.Q1f};break;case"SpotLight":t={position:new r.Pq0,direction:new r.Pq0,color:new r.Q1f,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new r.Pq0,color:new r.Q1f,distance:0,decay:0};break;case"HemisphereLight":t={direction:new r.Pq0,skyColor:new r.Q1f,groundColor:new r.Q1f};break;case"RectAreaLight":t={color:new r.Q1f,position:new r.Pq0,halfWidth:new r.Pq0,halfHeight:new r.Pq0}}return e[n.id]=t,t}}}let nc=0;function nd(e,n){return 2*!!n.castShadow-2*!!e.castShadow+ +!!n.map-!!e.map}function nu(e){let n=new ns,t=function(){let e={};return{get:function(n){let t;if(void 0!==e[n.id])return e[n.id];switch(n.type){case"DirectionalLight":case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new r.I9Y};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new r.I9Y,shadowCameraNear:1,shadowCameraFar:1e3}}return e[n.id]=t,t}}}(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)i.probe.push(new r.Pq0);let a=new r.Pq0,o=new r.kn4,s=new r.kn4;return{setup:function(r){let a=0,o=0,s=0;for(let e=0;e<9;e++)i.probe[e].set(0,0,0);let c=0,d=0,u=0,f=0,p=0,m=0,h=0,_=0,g=0,v=0,E=0;r.sort(nd);for(let e=0,l=r.length;e0&&(!0===e.has("OES_texture_float_linear")?(i.rectAreaLTC1=l.LTC_FLOAT_1,i.rectAreaLTC2=l.LTC_FLOAT_2):(i.rectAreaLTC1=l.LTC_HALF_1,i.rectAreaLTC2=l.LTC_HALF_2)),i.ambient[0]=a,i.ambient[1]=o,i.ambient[2]=s;let S=i.hash;(S.directionalLength!==c||S.pointLength!==d||S.spotLength!==u||S.rectAreaLength!==f||S.hemiLength!==p||S.numDirectionalShadows!==m||S.numPointShadows!==h||S.numSpotShadows!==_||S.numSpotMaps!==g||S.numLightProbes!==E)&&(i.directional.length=c,i.spot.length=u,i.rectArea.length=f,i.point.length=d,i.hemi.length=p,i.directionalShadow.length=m,i.directionalShadowMap.length=m,i.pointShadow.length=h,i.pointShadowMap.length=h,i.spotShadow.length=_,i.spotShadowMap.length=_,i.directionalShadowMatrix.length=m,i.pointShadowMatrix.length=h,i.spotLightMatrix.length=_+g-v,i.spotLightMap.length=g,i.numSpotLightShadowsWithMaps=v,i.numLightProbes=E,S.directionalLength=c,S.pointLength=d,S.spotLength=u,S.rectAreaLength=f,S.hemiLength=p,S.numDirectionalShadows=m,S.numPointShadows=h,S.numSpotShadows=_,S.numSpotMaps=g,S.numLightProbes=E,i.version=nc++)},setupView:function(e,n){let t=0,r=0,l=0,c=0,d=0,u=n.matrixWorldInverse;for(let n=0,f=e.length;n=a.length?(i=new nf(e),a.push(i)):i=a[r],i},dispose:function(){n=new WeakMap}}}function nm(e,n,t){let i=new r.PPD,a=new r.I9Y,o=new r.I9Y,l=new r.IUQ,s=new r.CSG({depthPacking:r.N5j}),c=new r.aVO,d={},u=t.maxTextureSize,f={[r.hB5]:r.hsX,[r.hsX]:r.hB5,[r.$EB]:r.$EB},p=new r.BKk({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new r.I9Y},radius:{value:4}},vertexShader:"void main() {\n gl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n const float samples = float( VSM_SAMPLES );\n float mean = 0.0;\n float squared_mean = 0.0;\n float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n float uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n for ( float i = 0.0; i < samples; i ++ ) {\n float uvOffset = uvStart + i * uvStride;\n #ifdef HORIZONTAL_PASS\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean / samples;\n squared_mean = squared_mean / samples;\n float std_dev = sqrt( squared_mean - mean * mean );\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new r.LoY;h.setAttribute("position",new r.THS(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let _=new r.eaF(h,p),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=r.QP0;let v=this.type;function E(n,t,i,a){let o=null,l=!0===i.isPointLight?n.customDistanceMaterial:n.customDepthMaterial;if(void 0!==l)o=l;else if(o=!0===i.isPointLight?c:s,e.localClippingEnabled&&!0===t.clipShadows&&Array.isArray(t.clippingPlanes)&&0!==t.clippingPlanes.length||t.displacementMap&&0!==t.displacementScale||t.alphaMap&&t.alphaTest>0||t.map&&t.alphaTest>0||!0===t.alphaToCoverage){let e=o.uuid,n=t.uuid,r=d[e];void 0===r&&(r={},d[e]=r);let i=r[n];void 0===i&&(i=o.clone(),r[n]=i,t.addEventListener("dispose",S)),o=i}return o.visible=t.visible,o.wireframe=t.wireframe,a===r.RyA?o.side=null!==t.shadowSide?t.shadowSide:t.side:o.side=null!==t.shadowSide?t.shadowSide:f[t.side],o.alphaMap=t.alphaMap,o.alphaTest=!0===t.alphaToCoverage?.5:t.alphaTest,o.map=t.map,o.clipShadows=t.clipShadows,o.clippingPlanes=t.clippingPlanes,o.clipIntersection=t.clipIntersection,o.displacementMap=t.displacementMap,o.displacementScale=t.displacementScale,o.displacementBias=t.displacementBias,o.wireframeLinewidth=t.wireframeLinewidth,o.linewidth=t.linewidth,!0===i.isPointLight&&!0===o.isMeshDistanceMaterial&&(e.properties.get(o).light=i),o}function S(e){for(let n in e.target.removeEventListener("dispose",S),d){let t=d[n],r=e.target.uuid;r in t&&(t[r].dispose(),delete t[r])}}this.render=function(t,s,c){if(!1===g.enabled||!1===g.autoUpdate&&!1===g.needsUpdate||0===t.length)return;let d=e.getRenderTarget(),f=e.getActiveCubeFace(),h=e.getActiveMipmapLevel(),S=e.state;S.setBlending(r.XIg),!0===S.buffers.depth.getReversed()?S.buffers.color.setClear(0,0,0,0):S.buffers.color.setClear(1,1,1,1),S.buffers.depth.setTest(!0),S.setScissorTest(!1);let T=v!==r.RyA&&this.type===r.RyA,M=v===r.RyA&&this.type!==r.RyA;for(let d=0,f=t.length;du||a.y>u)&&(a.x>u&&(o.x=Math.floor(u/g.x),a.x=o.x*g.x,h.mapSize.x=o.x),a.y>u&&(o.y=Math.floor(u/g.y),a.y=o.y*g.y,h.mapSize.y=o.y)),null===h.map||!0===T||!0===M){let e=this.type!==r.RyA?{minFilter:r.hxR,magFilter:r.hxR}:{};null!==h.map&&h.map.dispose(),h.map=new r.nWS(a.x,a.y,e),h.map.texture.name=f.name+".shadowMap",h.camera.updateProjectionMatrix()}e.setRenderTarget(h.map),e.clear();let v=h.getViewportCount();for(let t=0;t=1:-1!==w.indexOf("OpenGL ES")&&(U=parseFloat(/^OpenGL ES (\d)/.exec(w)[1])>=2);let D=null,I={},y=e.getParameter(e.SCISSOR_BOX),N=e.getParameter(e.VIEWPORT),O=new r.IUQ().fromArray(y),F=new r.IUQ().fromArray(N);function B(n,t,r,i){let a=new Uint8Array(4),o=e.createTexture();e.bindTexture(n,o),e.texParameteri(n,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(n,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let o=0;ot||i.height>t)&&(r=t/Math.max(i.width,i.height)),r<1)if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof VideoFrame&&e instanceof VideoFrame){let t=Math.floor(r*i.width),a=Math.floor(r*i.height);void 0===s&&(s=h(t,a));let o=n?h(t,a):s;return o.width=t,o.height=a,o.getContext("2d").drawImage(e,0,0,t,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+i.width+"x"+i.height+") to ("+t+"x"+a+")."),o}else"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+i.width+"x"+i.height+").");return e}function g(e){return e.generateMipmaps}function v(n){e.generateMipmap(n)}function E(t,i,a,o,l=!1){if(null!==t){if(void 0!==e[t])return e[t];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+t+"'")}let s=i;if(i===e.RED&&(a===e.FLOAT&&(s=e.R32F),a===e.HALF_FLOAT&&(s=e.R16F),a===e.UNSIGNED_BYTE&&(s=e.R8)),i===e.RED_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.R8UI),a===e.UNSIGNED_SHORT&&(s=e.R16UI),a===e.UNSIGNED_INT&&(s=e.R32UI),a===e.BYTE&&(s=e.R8I),a===e.SHORT&&(s=e.R16I),a===e.INT&&(s=e.R32I)),i===e.RG&&(a===e.FLOAT&&(s=e.RG32F),a===e.HALF_FLOAT&&(s=e.RG16F),a===e.UNSIGNED_BYTE&&(s=e.RG8)),i===e.RG_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.RG8UI),a===e.UNSIGNED_SHORT&&(s=e.RG16UI),a===e.UNSIGNED_INT&&(s=e.RG32UI),a===e.BYTE&&(s=e.RG8I),a===e.SHORT&&(s=e.RG16I),a===e.INT&&(s=e.RG32I)),i===e.RGB_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.RGB8UI),a===e.UNSIGNED_SHORT&&(s=e.RGB16UI),a===e.UNSIGNED_INT&&(s=e.RGB32UI),a===e.BYTE&&(s=e.RGB8I),a===e.SHORT&&(s=e.RGB16I),a===e.INT&&(s=e.RGB32I)),i===e.RGBA_INTEGER&&(a===e.UNSIGNED_BYTE&&(s=e.RGBA8UI),a===e.UNSIGNED_SHORT&&(s=e.RGBA16UI),a===e.UNSIGNED_INT&&(s=e.RGBA32UI),a===e.BYTE&&(s=e.RGBA8I),a===e.SHORT&&(s=e.RGBA16I),a===e.INT&&(s=e.RGBA32I)),i===e.RGB&&(a===e.UNSIGNED_INT_5_9_9_9_REV&&(s=e.RGB9_E5),a===e.UNSIGNED_INT_10F_11F_11F_REV&&(s=e.R11F_G11F_B10F)),i===e.RGBA){let n=l?r.VxR:r.ppV.getTransfer(o);a===e.FLOAT&&(s=e.RGBA32F),a===e.HALF_FLOAT&&(s=e.RGBA16F),a===e.UNSIGNED_BYTE&&(s=n===r.KLL?e.SRGB8_ALPHA8:e.RGBA8),a===e.UNSIGNED_SHORT_4_4_4_4&&(s=e.RGBA4),a===e.UNSIGNED_SHORT_5_5_5_1&&(s=e.RGB5_A1)}return(s===e.R16F||s===e.R32F||s===e.RG16F||s===e.RG32F||s===e.RGBA16F||s===e.RGBA32F)&&n.get("EXT_color_buffer_float"),s}function S(n,t){let i;return n?null===t||t===r.bkx||t===r.V3x?i=e.DEPTH24_STENCIL8:t===r.RQf?i=e.DEPTH32F_STENCIL8:t===r.cHt&&(i=e.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):null===t||t===r.bkx||t===r.V3x?i=e.DEPTH_COMPONENT24:t===r.RQf?i=e.DEPTH_COMPONENT32F:t===r.cHt&&(i=e.DEPTH_COMPONENT16),i}function T(e,n){return!0===g(e)||e.isFramebufferTexture&&e.minFilter!==r.hxR&&e.minFilter!==r.k6q?Math.log2(Math.max(n.width,n.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?n.mipmaps.length:1}function M(e){let n=e.target;n.removeEventListener("dispose",M),function(e){let n=i.get(e);if(void 0===n.__webglInit)return;let t=e.source,r=p.get(t);if(r){let i=r[n.__cacheKey];i.usedTimes--,0===i.usedTimes&&R(e),0===Object.keys(r).length&&p.delete(t)}i.remove(e)}(n),n.isVideoTexture&&f.delete(n)}function x(n){let t=n.target;t.removeEventListener("dispose",x),function(n){let t=i.get(n);if(n.depthTexture&&(n.depthTexture.dispose(),i.remove(n.depthTexture)),n.isWebGLCubeRenderTarget)for(let n=0;n<6;n++){if(Array.isArray(t.__webglFramebuffer[n]))for(let r=0;r0&&a.__version!==n.version){let e=n.image;if(null===e)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==e.complete)return void I(a,n,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}else n.isExternalTexture&&(a.__webglTexture=n.sourceTexture?n.sourceTexture:null);t.bindTexture(e.TEXTURE_2D,a.__webglTexture,e.TEXTURE0+r)}let C={[r.GJx]:e.REPEAT,[r.ghU]:e.CLAMP_TO_EDGE,[r.kTW]:e.MIRRORED_REPEAT},L={[r.hxR]:e.NEAREST,[r.pHI]:e.NEAREST_MIPMAP_NEAREST,[r.Cfg]:e.NEAREST_MIPMAP_LINEAR,[r.k6q]:e.LINEAR,[r.kRr]:e.LINEAR_MIPMAP_NEAREST,[r.$_I]:e.LINEAR_MIPMAP_LINEAR},P={[r.amv]:e.NEVER,[r.FFZ]:e.ALWAYS,[r.vim]:e.LESS,[r.TiK]:e.LEQUAL,[r.kO0]:e.EQUAL,[r.gWB]:e.GEQUAL,[r.eoi]:e.GREATER,[r.jzd]:e.NOTEQUAL};function U(t,o){if((o.type===r.RQf&&!1===n.has("OES_texture_float_linear")&&(o.magFilter===r.k6q||o.magFilter===r.kRr||o.magFilter===r.Cfg||o.magFilter===r.$_I||o.minFilter===r.k6q||o.minFilter===r.kRr||o.minFilter===r.Cfg||o.minFilter===r.$_I)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),e.texParameteri(t,e.TEXTURE_WRAP_S,C[o.wrapS]),e.texParameteri(t,e.TEXTURE_WRAP_T,C[o.wrapT]),(t===e.TEXTURE_3D||t===e.TEXTURE_2D_ARRAY)&&e.texParameteri(t,e.TEXTURE_WRAP_R,C[o.wrapR]),e.texParameteri(t,e.TEXTURE_MAG_FILTER,L[o.magFilter]),e.texParameteri(t,e.TEXTURE_MIN_FILTER,L[o.minFilter]),o.compareFunction&&(e.texParameteri(t,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(t,e.TEXTURE_COMPARE_FUNC,P[o.compareFunction])),!0===n.has("EXT_texture_filter_anisotropic"))&&o.magFilter!==r.hxR&&(o.minFilter===r.Cfg||o.minFilter===r.$_I)&&(o.type!==r.RQf||!1!==n.has("OES_texture_float_linear"))&&(o.anisotropy>1||i.get(o).__currentAnisotropy)){let r=n.get("EXT_texture_filter_anisotropic");e.texParameterf(t,r.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,a.getMaxAnisotropy())),i.get(o).__currentAnisotropy=o.anisotropy}}function w(n,t){let r=!1;void 0===n.__webglInit&&(n.__webglInit=!0,t.addEventListener("dispose",M));let i=t.source,a=p.get(i);void 0===a&&(a={},p.set(i,a));let o=function(e){let n=[];return n.push(e.wrapS),n.push(e.wrapT),n.push(e.wrapR||0),n.push(e.magFilter),n.push(e.minFilter),n.push(e.anisotropy),n.push(e.internalFormat),n.push(e.format),n.push(e.type),n.push(e.generateMipmaps),n.push(e.premultiplyAlpha),n.push(e.flipY),n.push(e.unpackAlignment),n.push(e.colorSpace),n.join()}(t);if(o!==n.__cacheKey){void 0===a[o]&&(a[o]={texture:e.createTexture(),usedTimes:0},l.memory.textures++,r=!0),a[o].usedTimes++;let i=a[n.__cacheKey];void 0!==i&&(a[n.__cacheKey].usedTimes--,0===i.usedTimes&&R(t)),n.__cacheKey=o,n.__webglTexture=a[o].texture}return r}function D(e,n,t){return Math.floor(Math.floor(e/t)/n)}function I(n,l,s){let c=e.TEXTURE_2D;(l.isDataArrayTexture||l.isCompressedArrayTexture)&&(c=e.TEXTURE_2D_ARRAY),l.isData3DTexture&&(c=e.TEXTURE_3D);let d=w(n,l),u=l.source;t.bindTexture(c,n.__webglTexture,e.TEXTURE0+s);let f=i.get(u);if(u.version!==f.__version||!0===d){let n;t.activeTexture(e.TEXTURE0+s);let i=r.ppV.getPrimaries(r.ppV.workingColorSpace),p=l.colorSpace===r.jf0?null:r.ppV.getPrimaries(l.colorSpace),m=l.colorSpace===r.jf0||i===p?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,l.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,l.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,l.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,m);let h=_(l.image,!1,a.maxTextureSize);h=k(l,h);let M=o.convert(l.format,l.colorSpace),x=o.convert(l.type),R=E(l.internalFormat,M,x,l.colorSpace,l.isVideoTexture);U(c,l);let A=l.mipmaps,b=!0!==l.isVideoTexture,C=void 0===f.__version||!0===d,L=u.dataReady,P=T(l,h);if(l.isDepthTexture)R=S(l.format===r.dcC,l.type),C&&(b?t.texStorage2D(e.TEXTURE_2D,1,R,h.width,h.height):t.texImage2D(e.TEXTURE_2D,0,R,h.width,h.height,0,M,x,null));else if(l.isDataTexture)if(A.length>0){b&&C&&t.texStorage2D(e.TEXTURE_2D,P,R,A[0].width,A[0].height);for(let r=0,i=A.length;re.start-n.start);let l=0;for(let e=1;e0){let a=(0,r.Nex)(n.width,n.height,l.format,l.type);for(let r of l.layerUpdates){let o=n.data.subarray(r*a/n.data.BYTES_PER_ELEMENT,(r+1)*a/n.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,r,n.width,n.height,1,M,o)}l.clearLayerUpdates()}else t.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,n.width,n.height,h.depth,M,n.data)}else t.compressedTexImage3D(e.TEXTURE_2D_ARRAY,i,R,n.width,n.height,h.depth,0,n.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else b?L&&t.texSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,n.width,n.height,h.depth,M,x,n.data):t.texImage3D(e.TEXTURE_2D_ARRAY,i,R,n.width,n.height,h.depth,0,M,x,n.data)}else{b&&C&&t.texStorage2D(e.TEXTURE_2D,P,R,A[0].width,A[0].height);for(let i=0,a=A.length;i0){let n=(0,r.Nex)(h.width,h.height,l.format,l.type);for(let r of l.layerUpdates){let i=h.data.subarray(r*n/h.data.BYTES_PER_ELEMENT,(r+1)*n/h.data.BYTES_PER_ELEMENT);t.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,r,h.width,h.height,1,M,x,i)}l.clearLayerUpdates()}else t.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,h.width,h.height,h.depth,M,x,h.data)}else t.texImage3D(e.TEXTURE_2D_ARRAY,0,R,h.width,h.height,h.depth,0,M,x,h.data);else if(l.isData3DTexture)b?(C&&t.texStorage3D(e.TEXTURE_3D,P,R,h.width,h.height,h.depth),L&&t.texSubImage3D(e.TEXTURE_3D,0,0,0,0,h.width,h.height,h.depth,M,x,h.data)):t.texImage3D(e.TEXTURE_3D,0,R,h.width,h.height,h.depth,0,M,x,h.data);else if(l.isFramebufferTexture){if(C)if(b)t.texStorage2D(e.TEXTURE_2D,P,R,h.width,h.height);else{let n=h.width,r=h.height;for(let i=0;i>=1,r>>=1}}else if(A.length>0){if(b&&C){let n=W(A[0]);t.texStorage2D(e.TEXTURE_2D,P,R,n.width,n.height)}for(let r=0,i=A.length;r>d),i=Math.max(1,r.height>>d);s===e.TEXTURE_3D||s===e.TEXTURE_2D_ARRAY?t.texImage3D(s,d,p,n,i,r.depth,0,u,f,null):t.texImage2D(s,d,p,n,i,0,u,f,null)}t.bindFramebuffer(e.FRAMEBUFFER,n),V(r)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,l,s,h.__webglTexture,0,G(r)):(s===e.TEXTURE_2D||s>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&s<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,l,s,h.__webglTexture,d),t.bindFramebuffer(e.FRAMEBUFFER,null)}function N(n,t,r){if(e.bindRenderbuffer(e.RENDERBUFFER,n),t.depthBuffer){let i=t.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=S(t.stencilBuffer,a),l=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,s=G(t);V(t)?c.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,s,o,t.width,t.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,s,o,t.width,t.height):e.renderbufferStorage(e.RENDERBUFFER,o,t.width,t.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,l,e.RENDERBUFFER,n)}else{let n=t.textures;for(let i=0;i{delete r.__boundDepthTexture,delete r.__depthDisposeCallback,e.removeEventListener("dispose",n)};e.addEventListener("dispose",n),r.__depthDisposeCallback=n}r.__boundDepthTexture=e}if(n.depthTexture&&!r.__autoAllocateDepthBuffer){if(a)throw Error("target.depthTexture not supported in Cube render targets");let e=n.texture.mipmaps;e&&e.length>0?O(r.__webglFramebuffer[0],n):O(r.__webglFramebuffer,n)}else if(a){r.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(t.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[i]),void 0===r.__webglDepthbuffer[i])r.__webglDepthbuffer[i]=e.createRenderbuffer(),N(r.__webglDepthbuffer[i],n,!1);else{let t=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=r.__webglDepthbuffer[i];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,t,e.RENDERBUFFER,a)}}else{let i=n.texture.mipmaps;if(i&&i.length>0?t.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[0]):t.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer),void 0===r.__webglDepthbuffer)r.__webglDepthbuffer=e.createRenderbuffer(),N(r.__webglDepthbuffer,n,!1);else{let t=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,i=r.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,t,e.RENDERBUFFER,i)}}t.bindFramebuffer(e.FRAMEBUFFER,null)}let B=[],H=[];function G(e){return Math.min(a.maxSamples,e.samples)}function V(e){let t=i.get(e);return e.samples>0&&!0===n.has("WEBGL_multisampled_render_to_texture")&&!1!==t.__useRenderToTexture}function k(e,n){let t=e.colorSpace,i=e.format,a=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||t!==r.Zr2&&t!==r.jf0&&(r.ppV.getTransfer(t)===r.KLL?(i!==r.GWd||a!==r.OUM)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",t)),n}function W(e){return"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement?(u.width=e.naturalWidth||e.width,u.height=e.naturalHeight||e.height):"undefined"!=typeof VideoFrame&&e instanceof VideoFrame?(u.width=e.displayWidth,u.height=e.displayHeight):(u.width=e.width,u.height=e.height),u}this.allocateTextureUnit=function(){let e=A;return e>=a.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+a.maxTextures),A+=1,e},this.resetTextureUnits=function(){A=0},this.setTexture2D=b,this.setTexture2DArray=function(n,r){let a=i.get(n);if(!1===n.isRenderTargetTexture&&n.version>0&&a.__version!==n.version)return void I(a,n,r);t.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+r)},this.setTexture3D=function(n,r){let a=i.get(n);if(!1===n.isRenderTargetTexture&&n.version>0&&a.__version!==n.version)return void I(a,n,r);t.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+r)},this.setTextureCube=function(n,l){let s=i.get(n);if(n.version>0&&s.__version!==n.version)return void function(n,l,s){if(6!==l.image.length)return;let c=w(n,l),d=l.source;t.bindTexture(e.TEXTURE_CUBE_MAP,n.__webglTexture,e.TEXTURE0+s);let u=i.get(d);if(d.version!==u.__version||!0===c){let n;t.activeTexture(e.TEXTURE0+s);let i=r.ppV.getPrimaries(r.ppV.workingColorSpace),f=l.colorSpace===r.jf0?null:r.ppV.getPrimaries(l.colorSpace),p=l.colorSpace===r.jf0||i===f?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,l.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,l.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,l.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);let m=l.isCompressedTexture||l.image[0].isCompressedTexture,h=l.image[0]&&l.image[0].isDataTexture,S=[];for(let e=0;e<6;e++)m||h?S[e]=h?l.image[e].image:l.image[e]:S[e]=_(l.image[e],!0,a.maxCubemapSize),S[e]=k(l,S[e]);let M=S[0],x=o.convert(l.format,l.colorSpace),R=o.convert(l.type),A=E(l.internalFormat,x,R,l.colorSpace),b=!0!==l.isVideoTexture,C=void 0===u.__version||!0===c,L=d.dataReady,P=T(l,M);if(U(e.TEXTURE_CUBE_MAP,l),m){b&&C&&t.texStorage2D(e.TEXTURE_CUBE_MAP,P,A,M.width,M.height);for(let i=0;i<6;i++){n=S[i].mipmaps;for(let a=0;a0&&P++;let r=W(S[0]);t.texStorage2D(e.TEXTURE_CUBE_MAP,P,A,r.width,r.height)}for(let r=0;r<6;r++)if(h){b?L&&t.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,0,0,S[r].width,S[r].height,x,R,S[r].data):t.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,A,S[r].width,S[r].height,0,x,R,S[r].data);for(let i=0;i1;if(!u&&(void 0===s.__webglTexture&&(s.__webglTexture=e.createTexture()),s.__version=r.version,l.memory.textures++),d){a.__webglFramebuffer=[];for(let n=0;n<6;n++)if(r.mipmaps&&r.mipmaps.length>0){a.__webglFramebuffer[n]=[];for(let t=0;t0){a.__webglFramebuffer=[];for(let n=0;n0&&!1===V(n)){a.__webglMultisampledFramebuffer=e.createFramebuffer(),a.__webglColorRenderbuffer=[],t.bindFramebuffer(e.FRAMEBUFFER,a.__webglMultisampledFramebuffer);for(let t=0;t0)for(let i=0;i0)for(let t=0;t0){if(!1===V(n)){let r=n.textures,a=n.width,o=n.height,l=e.COLOR_BUFFER_BIT,s=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,c=i.get(n),u=r.length>1;if(u)for(let n=0;n0?t.bindFramebuffer(e.DRAW_FRAMEBUFFER,c.__webglFramebuffer[0]):t.bindFramebuffer(e.DRAW_FRAMEBUFFER,c.__webglFramebuffer);for(let t=0;t= 1.0 ) { - - gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; - - } else { - - gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; - - } - -}`;class nT{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,n){if(null===this.texture){let t=new r.rjZ(e.texture);(e.depthNear!==n.depthNear||e.depthFar!==n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=t}}getMesh(e){if(null!==this.texture&&null===this.mesh){let n=e.cameras[0].viewport,t=new r.BKk({vertexShader:nE,fragmentShader:nS,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new r.eaF(new r.bdM(20,20),t)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class nM extends r.Qev{constructor(e,n){super();let t=this,a=null,o=1,l=null,s="local-floor",c=1,d=null,u=null,f=null,p=null,m=null,h=null,_="undefined"!=typeof XRWebGLBinding,g=new nT,v={},E=n.getContextAttributes(),S=null,T=null,M=[],x=[],R=new r.I9Y,A=null,b=new r.ubm;b.viewport=new r.IUQ;let C=new r.ubm;C.viewport=new r.IUQ;let L=[b,C],P=new r.nZQ,U=null,w=null;function D(e){let n=x.indexOf(e.inputSource);if(-1===n)return;let t=M[n];void 0!==t&&(t.update(e.inputSource,e.frame,d||l),t.dispatchEvent({type:e.type,data:e.inputSource}))}function I(){a.removeEventListener("select",D),a.removeEventListener("selectstart",D),a.removeEventListener("selectend",D),a.removeEventListener("squeeze",D),a.removeEventListener("squeezestart",D),a.removeEventListener("squeezeend",D),a.removeEventListener("end",I),a.removeEventListener("inputsourceschange",y);for(let e=0;e=0&&(x[r]=null,M[r].disconnect(t))}for(let n=0;n=x.length){x.push(t),r=e;break}else if(null===x[e]){x[e]=t,r=e;break}if(-1===r)break}let i=M[r];i&&i.connect(t)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let n=M[e];return void 0===n&&(n=new r.R3r,M[e]=n),n.getTargetRaySpace()},this.getControllerGrip=function(e){let n=M[e];return void 0===n&&(n=new r.R3r,M[e]=n),n.getGripSpace()},this.getHand=function(e){let n=M[e];return void 0===n&&(n=new r.R3r,M[e]=n),n.getHandSpace()},this.setFramebufferScaleFactor=function(e){o=e,!0===t.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){s=e,!0===t.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return d||l},this.setReferenceSpace=function(e){d=e},this.getBaseLayer=function(){return null!==p?p:m},this.getBinding=function(){return null===f&&_&&(f=new XRWebGLBinding(a,n)),f},this.getFrame=function(){return h},this.getSession=function(){return a},this.setSession=async function(i){if(null!==(a=i)){if(S=e.getRenderTarget(),a.addEventListener("select",D),a.addEventListener("selectstart",D),a.addEventListener("selectend",D),a.addEventListener("squeeze",D),a.addEventListener("squeezestart",D),a.addEventListener("squeezeend",D),a.addEventListener("end",I),a.addEventListener("inputsourceschange",y),!0!==E.xrCompatible&&await n.makeXRCompatible(),A=e.getPixelRatio(),e.getSize(R),_&&"createProjectionLayer"in XRWebGLBinding.prototype){let t=null,i=null,l=null;E.depth&&(l=E.stencil?n.DEPTH24_STENCIL8:n.DEPTH_COMPONENT24,t=E.stencil?r.dcC:r.zdS,i=E.stencil?r.V3x:r.bkx);let s={colorFormat:n.RGBA8,depthFormat:l,scaleFactor:o};p=(f=this.getBinding()).createProjectionLayer(s),a.updateRenderState({layers:[p]}),e.setPixelRatio(1),e.setSize(p.textureWidth,p.textureHeight,!1),T=new r.nWS(p.textureWidth,p.textureHeight,{format:r.GWd,type:r.OUM,depthTexture:new r.VCu(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,t),stencilBuffer:E.stencil,colorSpace:e.outputColorSpace,samples:4*!!E.antialias,resolveDepthBuffer:!1===p.ignoreDepthValues,resolveStencilBuffer:!1===p.ignoreDepthValues})}else{let t={antialias:E.antialias,alpha:!0,depth:E.depth,stencil:E.stencil,framebufferScaleFactor:o};m=new XRWebGLLayer(a,n,t),a.updateRenderState({baseLayer:m}),e.setPixelRatio(1),e.setSize(m.framebufferWidth,m.framebufferHeight,!1),T=new r.nWS(m.framebufferWidth,m.framebufferHeight,{format:r.GWd,type:r.OUM,colorSpace:e.outputColorSpace,stencilBuffer:E.stencil,resolveDepthBuffer:!1===m.ignoreDepthValues,resolveStencilBuffer:!1===m.ignoreDepthValues})}T.isXRRenderTarget=!0,this.setFoveation(c),d=null,l=await a.requestReferenceSpace(s),H.setContext(a),H.start(),t.isPresenting=!0,t.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==a)return a.environmentBlendMode},this.getDepthTexture=function(){return g.getDepthTexture()};let N=new r.Pq0,O=new r.Pq0;function F(e,n){null===n?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(n.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){var n,t,i;if(null===a)return;let o=e.near,l=e.far;null!==g.texture&&(g.depthNear>0&&(o=g.depthNear),g.depthFar>0&&(l=g.depthFar)),P.near=C.near=b.near=o,P.far=C.far=b.far=l,(U!==P.near||w!==P.far)&&(a.updateRenderState({depthNear:P.near,depthFar:P.far}),U=P.near,w=P.far),P.layers.mask=6|e.layers.mask,b.layers.mask=3&P.layers.mask,C.layers.mask=5&P.layers.mask;let s=e.parent,c=P.cameras;F(P,s);for(let e=0;e0&&(e.alphaTest.value=i.alphaTest);let a=n.get(i),o=a.envMap,l=a.envMapRotation;o&&(e.envMap.value=o,nx.copy(l),nx.x*=-1,nx.y*=-1,nx.z*=-1,o.isCubeTexture&&!1===o.isRenderTargetTexture&&(nx.y*=-1,nx.z*=-1),e.envMapRotation.value.setFromMatrix4(nR.makeRotationFromEuler(nx)),e.flipEnvMap.value=o.isCubeTexture&&!1===o.isRenderTargetTexture?-1:1,e.reflectivity.value=i.reflectivity,e.ior.value=i.ior,e.refractionRatio.value=i.refractionRatio),i.lightMap&&(e.lightMap.value=i.lightMap,e.lightMapIntensity.value=i.lightMapIntensity,t(i.lightMap,e.lightMapTransform)),i.aoMap&&(e.aoMap.value=i.aoMap,e.aoMapIntensity.value=i.aoMapIntensity,t(i.aoMap,e.aoMapTransform))}return{refreshFogUniforms:function(n,t){t.color.getRGB(n.fogColor.value,(0,r._Ut)(e)),t.isFog?(n.fogNear.value=t.near,n.fogFar.value=t.far):t.isFogExp2&&(n.fogDensity.value=t.density)},refreshMaterialUniforms:function(e,a,o,l,s){var c,d,u,f,p,m,h,_,g,v,E,S,T,M,x,R,A,b,C,L,P;a.isMeshBasicMaterial||a.isMeshLambertMaterial?i(e,a):a.isMeshToonMaterial?(i(e,a),c=e,(d=a).gradientMap&&(c.gradientMap.value=d.gradientMap)):a.isMeshPhongMaterial?(i(e,a),u=e,f=a,u.specular.value.copy(f.specular),u.shininess.value=Math.max(f.shininess,1e-4)):a.isMeshStandardMaterial?(i(e,a),p=e,m=a,p.metalness.value=m.metalness,m.metalnessMap&&(p.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,p.metalnessMapTransform)),p.roughness.value=m.roughness,m.roughnessMap&&(p.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,p.roughnessMapTransform)),m.envMap&&(p.envMapIntensity.value=m.envMapIntensity),a.isMeshPhysicalMaterial&&(h=e,_=a,g=s,h.ior.value=_.ior,_.sheen>0&&(h.sheenColor.value.copy(_.sheenColor).multiplyScalar(_.sheen),h.sheenRoughness.value=_.sheenRoughness,_.sheenColorMap&&(h.sheenColorMap.value=_.sheenColorMap,t(_.sheenColorMap,h.sheenColorMapTransform)),_.sheenRoughnessMap&&(h.sheenRoughnessMap.value=_.sheenRoughnessMap,t(_.sheenRoughnessMap,h.sheenRoughnessMapTransform))),_.clearcoat>0&&(h.clearcoat.value=_.clearcoat,h.clearcoatRoughness.value=_.clearcoatRoughness,_.clearcoatMap&&(h.clearcoatMap.value=_.clearcoatMap,t(_.clearcoatMap,h.clearcoatMapTransform)),_.clearcoatRoughnessMap&&(h.clearcoatRoughnessMap.value=_.clearcoatRoughnessMap,t(_.clearcoatRoughnessMap,h.clearcoatRoughnessMapTransform)),_.clearcoatNormalMap&&(h.clearcoatNormalMap.value=_.clearcoatNormalMap,t(_.clearcoatNormalMap,h.clearcoatNormalMapTransform),h.clearcoatNormalScale.value.copy(_.clearcoatNormalScale),_.side===r.hsX&&h.clearcoatNormalScale.value.negate())),_.dispersion>0&&(h.dispersion.value=_.dispersion),_.iridescence>0&&(h.iridescence.value=_.iridescence,h.iridescenceIOR.value=_.iridescenceIOR,h.iridescenceThicknessMinimum.value=_.iridescenceThicknessRange[0],h.iridescenceThicknessMaximum.value=_.iridescenceThicknessRange[1],_.iridescenceMap&&(h.iridescenceMap.value=_.iridescenceMap,t(_.iridescenceMap,h.iridescenceMapTransform)),_.iridescenceThicknessMap&&(h.iridescenceThicknessMap.value=_.iridescenceThicknessMap,t(_.iridescenceThicknessMap,h.iridescenceThicknessMapTransform))),_.transmission>0&&(h.transmission.value=_.transmission,h.transmissionSamplerMap.value=g.texture,h.transmissionSamplerSize.value.set(g.width,g.height),_.transmissionMap&&(h.transmissionMap.value=_.transmissionMap,t(_.transmissionMap,h.transmissionMapTransform)),h.thickness.value=_.thickness,_.thicknessMap&&(h.thicknessMap.value=_.thicknessMap,t(_.thicknessMap,h.thicknessMapTransform)),h.attenuationDistance.value=_.attenuationDistance,h.attenuationColor.value.copy(_.attenuationColor)),_.anisotropy>0&&(h.anisotropyVector.value.set(_.anisotropy*Math.cos(_.anisotropyRotation),_.anisotropy*Math.sin(_.anisotropyRotation)),_.anisotropyMap&&(h.anisotropyMap.value=_.anisotropyMap,t(_.anisotropyMap,h.anisotropyMapTransform))),h.specularIntensity.value=_.specularIntensity,h.specularColor.value.copy(_.specularColor),_.specularColorMap&&(h.specularColorMap.value=_.specularColorMap,t(_.specularColorMap,h.specularColorMapTransform)),_.specularIntensityMap&&(h.specularIntensityMap.value=_.specularIntensityMap,t(_.specularIntensityMap,h.specularIntensityMapTransform)))):a.isMeshMatcapMaterial?(i(e,a),v=e,(E=a).matcap&&(v.matcap.value=E.matcap)):a.isMeshDepthMaterial?i(e,a):a.isMeshDistanceMaterial?(i(e,a),function(e,t){let r=n.get(t).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}(e,a)):a.isMeshNormalMaterial?i(e,a):a.isLineBasicMaterial?(S=e,T=a,S.diffuse.value.copy(T.color),S.opacity.value=T.opacity,T.map&&(S.map.value=T.map,t(T.map,S.mapTransform)),a.isLineDashedMaterial&&(M=e,x=a,M.dashSize.value=x.dashSize,M.totalSize.value=x.dashSize+x.gapSize,M.scale.value=x.scale)):a.isPointsMaterial?(R=e,A=a,b=o,C=l,R.diffuse.value.copy(A.color),R.opacity.value=A.opacity,R.size.value=A.size*b,R.scale.value=.5*C,A.map&&(R.map.value=A.map,t(A.map,R.uvTransform)),A.alphaMap&&(R.alphaMap.value=A.alphaMap,t(A.alphaMap,R.alphaMapTransform)),A.alphaTest>0&&(R.alphaTest.value=A.alphaTest)):a.isSpriteMaterial?(L=e,P=a,L.diffuse.value.copy(P.color),L.opacity.value=P.opacity,L.rotation.value=P.rotation,P.map&&(L.map.value=P.map,t(P.map,L.mapTransform)),P.alphaMap&&(L.alphaMap.value=P.alphaMap,t(P.alphaMap,L.alphaMapTransform)),P.alphaTest>0&&(L.alphaTest.value=P.alphaTest)):a.isShadowMaterial?(e.color.value.copy(a.color),e.opacity.value=a.opacity):a.isShaderMaterial&&(a.uniformsNeedUpdate=!1)}}}function nb(e,n,t,r){let i={},a={},o=[],l=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function s(e){let n={boundary:0,storage:0};return"number"==typeof e||"boolean"==typeof e?(n.boundary=4,n.storage=4):e.isVector2?(n.boundary=8,n.storage=8):e.isVector3||e.isColor?(n.boundary=16,n.storage=12):e.isVector4?(n.boundary=16,n.storage=16):e.isMatrix3?(n.boundary=48,n.storage=48):e.isMatrix4?(n.boundary=64,n.storage=64):e.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",e),n}function c(n){let t=n.target;t.removeEventListener("dispose",c);let r=o.indexOf(t.__bindingPointIndex);o.splice(r,1),e.deleteBuffer(i[t.id]),delete i[t.id],delete a[t.id]}return{bind:function(e,n){let t=n.program;r.uniformBlockBinding(e,t)},update:function(t,d){let u=i[t.id];void 0===u&&(function(e){let n=e.uniforms,t=0;for(let e=0,r=n.length;e0&&(t+=16-r),e.__size=t,e.__cache={}}(t),u=function(n){let t=function(){for(let e=0;es.matrixWorld.determinant(),h=function(e,n,t,i,a){var s,f;!0!==n.isScene&&(n=ew),d.resetTextureUnits();let p=n.fog,m=i.isMeshStandardMaterial?n.environment:null,h=null===ec?ea.outputColorSpace:!0===ec.isXRRenderTarget?ec.texture.colorSpace:r.Zr2,_=(i.isMeshStandardMaterial?v:u).get(i.envMap||m),g=!0===i.vertexColors&&!!t.attributes.color&&4===t.attributes.color.itemSize,E=!!t.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),S=!!t.morphAttributes.position,T=!!t.morphAttributes.normal,M=!!t.morphAttributes.color,R=r.y_p;i.toneMapped&&(null===ec||!0===ec.isXRRenderTarget)&&(R=ea.toneMapping);let A=t.morphAttributes.position||t.morphAttributes.normal||t.morphAttributes.color,C=void 0!==A?A.length:0,L=c.get(i),U=et.state.lights;if(!0===eb&&(!0===eC||e!==eu)){let n=e===eu&&i.id===ed;b.setState(i,e,n)}let w=!1;i.version===L.__version?L.needsLights&&L.lightsStateVersion!==U.state.version||L.outputColorSpace!==h||a.isBatchedMesh&&!1===L.batching?w=!0:a.isBatchedMesh||!0!==L.batching?a.isBatchedMesh&&!0===L.batchingColor&&null===a.colorTexture||a.isBatchedMesh&&!1===L.batchingColor&&null!==a.colorTexture||a.isInstancedMesh&&!1===L.instancing?w=!0:a.isInstancedMesh||!0!==L.instancing?a.isSkinnedMesh&&!1===L.skinning?w=!0:a.isSkinnedMesh||!0!==L.skinning?a.isInstancedMesh&&!0===L.instancingColor&&null===a.instanceColor||a.isInstancedMesh&&!1===L.instancingColor&&null!==a.instanceColor||a.isInstancedMesh&&!0===L.instancingMorph&&null===a.morphTexture||a.isInstancedMesh&&!1===L.instancingMorph&&null!==a.morphTexture||L.envMap!==_||!0===i.fog&&L.fog!==p||void 0!==L.numClippingPlanes&&(L.numClippingPlanes!==b.numPlanes||L.numIntersection!==b.numIntersection)||L.vertexAlphas!==g||L.vertexTangents!==E||L.morphTargets!==S||L.morphNormals!==T||L.morphColors!==M||L.toneMapping!==R?w=!0:L.morphTargetsCount!==C&&(w=!0):w=!0:w=!0:w=!0:(w=!0,L.__version=i.version);let D=L.currentProgram;!0===w&&(D=eJ(i,n,a));let I=!1,N=!1,O=!1,F=D.getUniforms(),B=L.uniforms;if(l.useProgram(D.program)&&(I=!0,N=!0,O=!0),i.id!==ed&&(ed=i.id,N=!0),I||eu!==e){l.buffers.depth.getReversed()&&!0!==e.reversedDepth&&(e._reversedDepth=!0,e.updateProjectionMatrix()),F.setValue(ey,"projectionMatrix",e.projectionMatrix),F.setValue(ey,"viewMatrix",e.matrixWorldInverse);let n=F.map.cameraPosition;void 0!==n&&n.setValue(ey,eP.setFromMatrixPosition(e.matrixWorld)),o.logarithmicDepthBuffer&&F.setValue(ey,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&F.setValue(ey,"isOrthographic",!0===e.isOrthographicCamera),eu!==e&&(eu=e,N=!0,O=!0)}if(a.isSkinnedMesh){F.setOptional(ey,a,"bindMatrix"),F.setOptional(ey,a,"bindMatrixInverse");let e=a.skeleton;e&&(null===e.boneTexture&&e.computeBoneTexture(),F.setValue(ey,"boneTexture",e.boneTexture,d))}a.isBatchedMesh&&(F.setOptional(ey,a,"batchingTexture"),F.setValue(ey,"batchingTexture",a._matricesTexture,d),F.setOptional(ey,a,"batchingIdTexture"),F.setValue(ey,"batchingIdTexture",a._indirectTexture,d),F.setOptional(ey,a,"batchingColorTexture"),null!==a._colorsTexture&&F.setValue(ey,"batchingColorTexture",a._colorsTexture,d));let H=t.morphAttributes;if((void 0!==H.position||void 0!==H.normal||void 0!==H.color)&&P.update(a,t,D),(N||L.receiveShadow!==a.receiveShadow)&&(L.receiveShadow=a.receiveShadow,F.setValue(ey,"receiveShadow",a.receiveShadow)),i.isMeshGouraudMaterial&&null!==i.envMap&&(B.envMap.value=_,B.flipEnvMap.value=_.isCubeTexture&&!1===_.isRenderTargetTexture?-1:1),i.isMeshStandardMaterial&&null===i.envMap&&null!==n.environment&&(B.envMapIntensity.value=n.environmentIntensity),N&&(F.setValue(ey,"toneMappingExposure",ea.toneMappingExposure),L.needsLights&&(s=B,f=O,s.ambientLightColor.needsUpdate=f,s.lightProbe.needsUpdate=f,s.directionalLights.needsUpdate=f,s.directionalLightShadows.needsUpdate=f,s.pointLights.needsUpdate=f,s.pointLightShadows.needsUpdate=f,s.spotLights.needsUpdate=f,s.spotLightShadows.needsUpdate=f,s.rectAreaLights.needsUpdate=f,s.hemisphereLights.needsUpdate=f),p&&!0===i.fog&&x.refreshFogUniforms(B,p),x.refreshMaterialUniforms(B,i,eE,ev,et.state.transmissionRenderTarget[e.id]),eX.upload(ey,e0(L),B,d)),i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(eX.upload(ey,e0(L),B,d),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&F.setValue(ey,"center",a.center),F.setValue(ey,"modelViewMatrix",a.modelViewMatrix),F.setValue(ey,"normalMatrix",a.normalMatrix),F.setValue(ey,"modelMatrix",a.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){let e=i.uniformsGroups;for(let n=0,t=e.length;n{function r(){if(i.forEach(function(e){c.get(e).currentProgram.isReady()&&i.delete(e)}),0===i.size)return void n(e);setTimeout(r,10)}null!==t.get("KHR_parallel_shader_compile")?r():setTimeout(r,10)})};let eW=null;function ez(){eY.stop()}function eK(){eY.start()}let eY=new i;function eq(e,n,t,r){if(!1===e.visible)return;if(e.layers.test(n.layers)){if(e.isGroup)t=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(n);else if(e.isLight)et.pushLight(e),e.castShadow&&et.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||eA.intersectsSprite(e)){r&&eU.setFromMatrixPosition(e.matrixWorld).applyMatrix4(eL);let n=T.update(e),i=e.material;i.visible&&en.push(e,n,i,t,eU.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||eA.intersectsObject(e))){let n=T.update(e),i=e.material;if(r&&(void 0!==e.boundingSphere?(null===e.boundingSphere&&e.computeBoundingSphere(),eU.copy(e.boundingSphere.center)):(null===n.boundingSphere&&n.computeBoundingSphere(),eU.copy(n.boundingSphere.center)),eU.applyMatrix4(e.matrixWorld).applyMatrix4(eL)),Array.isArray(i)){let r=n.groups;for(let a=0,o=r.length;a0&&eZ(i,n,t),a.length>0&&eZ(a,n,t),o.length>0&&eZ(o,n,t),l.buffers.depth.setTest(!0),l.buffers.depth.setMask(!0),l.buffers.color.setMask(!0),l.setPolygonOffset(!1)}function eQ(e,n,i,a){if(null!==(!0===i.isScene?i.overrideMaterial:null))return;void 0===et.state.transmissionRenderTarget[a.id]&&(et.state.transmissionRenderTarget[a.id]=new r.nWS(1,1,{generateMipmaps:!0,type:t.has("EXT_color_buffer_half_float")||t.has("EXT_color_buffer_float")?r.ix0:r.OUM,minFilter:r.$_I,samples:4,stencilBuffer:X,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:r.ppV.workingColorSpace}));let o=et.state.transmissionRenderTarget[a.id],l=a.viewport||ef;o.setSize(l.z*ea.transmissionResolutionScale,l.w*ea.transmissionResolutionScale);let s=ea.getRenderTarget(),c=ea.getActiveCubeFace(),u=ea.getActiveMipmapLevel();ea.setRenderTarget(o),ea.getClearColor(eh),(e_=ea.getClearAlpha())<1&&ea.setClearColor(0xffffff,.5),ea.clear(),eD&&L.render(i);let f=ea.toneMapping;ea.toneMapping=r.y_p;let p=a.viewport;if(void 0!==a.viewport&&(a.viewport=void 0),et.setupLightsView(a),!0===eb&&b.setGlobalState(ea.clippingPlanes,a),eZ(e,i,a),d.updateMultisampleRenderTarget(o),d.updateRenderTargetMipmap(o),!1===t.has("WEBGL_multisampled_render_to_texture")){let e=!1;for(let t=0,o=n.length;t0)for(let n=0,r=t.length;n0&&eQ(i,a,e,n),eD&&L.render(e),ej(en,e,n);null!==ec&&0===es&&(d.updateMultisampleRenderTarget(ec),d.updateRenderTargetMipmap(ec)),!0===e.isScene&&e.onAfterRender(ea,e,n),I.resetDefaultState(),ed=-1,eu=null,ei.pop(),ei.length>0?(et=ei[ei.length-1],!0===eb&&b.setGlobalState(ea.clippingPlanes,et.state.camera)):et=null,er.pop(),en=er.length>0?er[er.length-1]:null},this.getActiveCubeFace=function(){return el},this.getActiveMipmapLevel=function(){return es},this.getRenderTarget=function(){return ec},this.setRenderTargetTextures=function(e,n,t){let r=c.get(e);r.__autoAllocateDepthBuffer=!1===e.resolveDepthBuffer,!1===r.__autoAllocateDepthBuffer&&(r.__useRenderToTexture=!1),c.get(e.texture).__webglTexture=n,c.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:t,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,n){let t=c.get(e);t.__webglFramebuffer=n,t.__useDefaultFramebuffer=void 0===n};let e3=ey.createFramebuffer();this.setRenderTarget=function(e,n=0,t=0){ec=e,el=n,es=t;let r=!0,i=null,a=!1,o=!1;if(e){let s=c.get(e);if(void 0!==s.__useDefaultFramebuffer)l.bindFramebuffer(ey.FRAMEBUFFER,null),r=!1;else if(void 0===s.__webglFramebuffer)d.setupRenderTarget(e);else if(s.__hasExternalTextures)d.rebindTextures(e,c.get(e.texture).__webglTexture,c.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let n=e.depthTexture;if(s.__boundDepthTexture!==n){if(null!==n&&c.has(n)&&(e.width!==n.image.width||e.height!==n.image.height))throw Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");d.setupDepthRenderbuffer(e)}}let u=e.texture;(u.isData3DTexture||u.isDataArrayTexture||u.isCompressedArrayTexture)&&(o=!0);let f=c.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(i=Array.isArray(f[n])?f[n][t]:f[n],a=!0):i=e.samples>0&&!1===d.useMultisampledRTT(e)?c.get(e).__webglMultisampledFramebuffer:Array.isArray(f)?f[t]:f,ef.copy(e.viewport),ep.copy(e.scissor),em=e.scissorTest}else ef.copy(eM).multiplyScalar(eE).floor(),ep.copy(ex).multiplyScalar(eE).floor(),em=eR;if(0!==t&&(i=e3),l.bindFramebuffer(ey.FRAMEBUFFER,i)&&r&&l.drawBuffers(e,i),l.viewport(ef),l.scissor(ep),l.setScissorTest(em),a){let r=c.get(e.texture);ey.framebufferTexture2D(ey.FRAMEBUFFER,ey.COLOR_ATTACHMENT0,ey.TEXTURE_CUBE_MAP_POSITIVE_X+n,r.__webglTexture,t)}else if(o)for(let r=0;r=0&&n<=e.width-r&&t>=0&&t<=e.height-i&&(e.textures.length>1&&ey.readBuffer(ey.COLOR_ATTACHMENT0+d),ey.readPixels(n,t,r,i,D.convert(s),D.convert(c),a))}finally{let e=null!==ec?c.get(ec).__webglFramebuffer:null;l.bindFramebuffer(ey.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,n,t,i,a,s,d,u=0){if(!(e&&e.isWebGLRenderTarget))throw Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let f=c.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==d&&(f=f[d]),f)if(n>=0&&n<=e.width-i&&t>=0&&t<=e.height-a){l.bindFramebuffer(ey.FRAMEBUFFER,f);let d=e.textures[u],p=d.format,m=d.type;if(!o.textureFormatReadable(p))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!o.textureTypeReadable(m))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let h=ey.createBuffer();ey.bindBuffer(ey.PIXEL_PACK_BUFFER,h),ey.bufferData(ey.PIXEL_PACK_BUFFER,s.byteLength,ey.STREAM_READ),e.textures.length>1&&ey.readBuffer(ey.COLOR_ATTACHMENT0+u),ey.readPixels(n,t,i,a,D.convert(p),D.convert(m),0);let _=null!==ec?c.get(ec).__webglFramebuffer:null;l.bindFramebuffer(ey.FRAMEBUFFER,_);let g=ey.fenceSync(ey.SYNC_GPU_COMMANDS_COMPLETE,0);return ey.flush(),await (0,r.jej)(ey,g,4),ey.bindBuffer(ey.PIXEL_PACK_BUFFER,h),ey.getBufferSubData(ey.PIXEL_PACK_BUFFER,0,s),ey.deleteBuffer(h),ey.deleteSync(g),s}else throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(e,n=null,t=0){let r=Math.pow(2,-t),i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=null!==n?n.x:0,s=null!==n?n.y:0;d.setTexture2D(e,0),ey.copyTexSubImage2D(ey.TEXTURE_2D,t,0,0,o,s,i,a),l.unbindTexture()};let e2=ey.createFramebuffer(),e4=ey.createFramebuffer();this.copyTextureToTexture=function(e,n,t=null,i=null,a=0,o=null){let s,u,f,p,m,h,_,g,v,E;null===o&&(0!==a?((0,r.mcG)("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),o=a,a=0):o=0);let S=e.isCompressedTexture?e.mipmaps[o]:e.image;if(null!==t)s=t.max.x-t.min.x,u=t.max.y-t.min.y,f=t.isBox3?t.max.z-t.min.z:1,p=t.min.x,m=t.min.y,h=t.isBox3?t.min.z:0;else{let n=Math.pow(2,-a);s=Math.floor(S.width*n),u=Math.floor(S.height*n),f=e.isDataArrayTexture?S.depth:e.isData3DTexture?Math.floor(S.depth*n):1,p=0,m=0,h=0}null!==i?(_=i.x,g=i.y,v=i.z):(_=0,g=0,v=0);let T=D.convert(n.format),M=D.convert(n.type);n.isData3DTexture?(d.setTexture3D(n,0),E=ey.TEXTURE_3D):n.isDataArrayTexture||n.isCompressedArrayTexture?(d.setTexture2DArray(n,0),E=ey.TEXTURE_2D_ARRAY):(d.setTexture2D(n,0),E=ey.TEXTURE_2D),ey.pixelStorei(ey.UNPACK_FLIP_Y_WEBGL,n.flipY),ey.pixelStorei(ey.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),ey.pixelStorei(ey.UNPACK_ALIGNMENT,n.unpackAlignment);let x=ey.getParameter(ey.UNPACK_ROW_LENGTH),R=ey.getParameter(ey.UNPACK_IMAGE_HEIGHT),A=ey.getParameter(ey.UNPACK_SKIP_PIXELS),b=ey.getParameter(ey.UNPACK_SKIP_ROWS),C=ey.getParameter(ey.UNPACK_SKIP_IMAGES);ey.pixelStorei(ey.UNPACK_ROW_LENGTH,S.width),ey.pixelStorei(ey.UNPACK_IMAGE_HEIGHT,S.height),ey.pixelStorei(ey.UNPACK_SKIP_PIXELS,p),ey.pixelStorei(ey.UNPACK_SKIP_ROWS,m),ey.pixelStorei(ey.UNPACK_SKIP_IMAGES,h);let L=e.isDataArrayTexture||e.isData3DTexture,P=n.isDataArrayTexture||n.isData3DTexture;if(e.isDepthTexture){let t=c.get(e),r=c.get(n),i=c.get(t.__renderTarget),d=c.get(r.__renderTarget);l.bindFramebuffer(ey.READ_FRAMEBUFFER,i.__webglFramebuffer),l.bindFramebuffer(ey.DRAW_FRAMEBUFFER,d.__webglFramebuffer);for(let t=0;t{let s,r,n,a,o;i.d(e,{$EB:()=>w,$Ed:()=>aI,$Kf:()=>nG,$NF:()=>hU,$O9:()=>tT,$Yl:()=>q,$_I:()=>tR,$ei:()=>R,$p8:()=>h9,A$4:()=>rV,AKb:()=>hx,ALV:()=>su,AQS:()=>iZ,Am1:()=>lp,B69:()=>re,B6O:()=>om,BER:()=>tp,BH$:()=>aD,BKk:()=>nr,BND:()=>uR,BRH:()=>hH,BXX:()=>t8,B_h:()=>ea,CR7:()=>e9,CSG:()=>hl,CV9:()=>oS,CVz:()=>ei,CWW:()=>eA,Cfg:()=>tz,CmU:()=>lr,CwR:()=>lR,D$Q:()=>hi,DAe:()=>eN,DXC:()=>aW,Df:()=>ha,Dmk:()=>tq,E0M:()=>uP,EAD:()=>n0,EQC:()=>eB,EZo:()=>_,EdD:()=>T,F1T:()=>nu,F1l:()=>uy,FCc:()=>aU,FFZ:()=>ic,FNr:()=>hc,FV:()=>tl,FXf:()=>C,FZo:()=>le,Fn:()=>ev,Fpm:()=>uu,FvD:()=>a$,Fvi:()=>tm,Fvt:()=>hd,G3T:()=>eT,G4u:()=>iz,GBG:()=>hz,GJx:()=>tw,GOR:()=>a2,GWd:()=>tY,GYF:()=>nQ,GZZ:()=>ob,G_z:()=>hh,Gu$:()=>o3,Gwm:()=>$,GxU:()=>rI,H23:()=>eb,H2z:()=>uF,HIg:()=>tZ,HLH:()=>e0,HO_:()=>e_,HPb:()=>e4,HXV:()=>et,HgN:()=>i8,HiM:()=>h5,Hit:()=>hT,Ho_:()=>a8,Hrb:()=>rN,Hrq:()=>iv,I46:()=>nY,I9Y:()=>iW,IE4:()=>t5,IUQ:()=>sr,IWo:()=>uB,Iit:()=>ne,Ipv:()=>oa,Iw4:()=>lX,IzY:()=>uN,Jnc:()=>p,K52:()=>tt,KDk:()=>er,KLL:()=>eG,KPJ:()=>hE,KRh:()=>ts,Ke9:()=>eP,Kef:()=>eM,Ktl:()=>im,Kwu:()=>A,Kzg:()=>lc,LAk:()=>tc,Ld9:()=>uV,LiQ:()=>N,LlO:()=>ns,LoY:()=>rY,LuO:()=>lK,M4G:()=>l5,MBL:()=>hI,MOq:()=>ib,MSw:()=>o2,MW4:()=>rL,Mjd:()=>to,N1A:()=>aV,N2s:()=>lE,N5j:()=>eW,NRn:()=>sc,NTi:()=>S,NZq:()=>tE,Nex:()=>uL,Nt7:()=>j,Nv2:()=>aG,Nwf:()=>lD,Nz6:()=>t4,O0B:()=>sn,O3Y:()=>o4,O49:()=>eF,O9p:()=>sZ,ONl:()=>aZ,OUM:()=>tO,Oax:()=>rj,Om:()=>tb,OuU:()=>F,P5j:()=>lH,PFK:()=>uA,PJ3:()=>ek,PPD:()=>ao,PTz:()=>iU,Pdi:()=>hb,Pem:()=>aK,Pf$:()=>lA,Pq0:()=>iD,Q1f:()=>rb,QCA:()=>oY,QP0:()=>f,Qev:()=>iC,Qrf:()=>el,R1W:()=>uv,R3r:()=>ny,RJ4:()=>eV,ROr:()=>e1,RQf:()=>tj,RcT:()=>e7,RiT:()=>hk,Riy:()=>es,Rkk:()=>ej,RlV:()=>sV,RoJ:()=>nM,RrE:()=>H,Ru$:()=>e2,RyA:()=>x,S$4:()=>ex,S20:()=>oo,SUR:()=>ln,SYV:()=>aQ,ScU:()=>hD,T6I:()=>hA,TDQ:()=>on,THS:()=>rR,TM5:()=>iI,TMh:()=>ie,Tap:()=>hq,TdN:()=>i_,TiK:()=>io,TkQ:()=>t1,U3G:()=>K,UJ6:()=>hS,UPV:()=>o6,UTZ:()=>ty,Ufg:()=>o$,UpK:()=>nL,UtB:()=>ut,UtX:()=>ld,V3x:()=>tH,V9B:()=>r_,VCu:()=>a3,VGF:()=>t2,VT0:()=>tK,VVr:()=>eK,Vb5:()=>d,VnP:()=>ow,Vnu:()=>ip,Vwu:()=>uj,VxR:()=>eY,W9U:()=>ew,WBB:()=>oQ,WNZ:()=>c,WTh:()=>uI,Wdf:()=>iS,Wew:()=>tU,Wk7:()=>g,Wyr:()=>iM,XG_:()=>eS,XIg:()=>M,XJ7:()=>o9,XMJ:()=>lZ,XTe:()=>la,XrR:()=>tr,Y9S:()=>hF,YHV:()=>l6,YJl:()=>np,YOZ:()=>h_,YRT:()=>hj,Yhb:()=>hM,Yuy:()=>tF,Z0B:()=>ox,Z58:()=>nx,ZLX:()=>n7,ZM4:()=>uE,ZQM:()=>t$,Zcv:()=>as,Zpd:()=>o5,Zr2:()=>eZ,ZyN:()=>h8,_4j:()=>hs,_QJ:()=>ed,_Ut:()=>ni,_xc:()=>um,a$r:()=>tI,a55:()=>iE,a5J:()=>ec,aEY:()=>U,aHM:()=>hP,aJ8:()=>td,aMy:()=>ez,aVO:()=>hu,agE:()=>id,amv:()=>is,b4q:()=>nc,bC7:()=>ey,bCz:()=>z,bI3:()=>eH,bTm:()=>y,baL:()=>rO,bdM:()=>o0,bkx:()=>tL,brA:()=>G,bw0:()=>te,c5h:()=>a1,c90:()=>t3,cHt:()=>tV,cRK:()=>nf,cZY:()=>uh,caT:()=>ti,cj9:()=>ij,czI:()=>eo,dAo:()=>oM,dYF:()=>sl,dcC:()=>tQ,dhZ:()=>eO,dth:()=>hX,dwI:()=>iJ,dzP:()=>lQ,e0p:()=>J,eB$:()=>nv,eHc:()=>Z,eHs:()=>nw,eaF:()=>r8,eoi:()=>ih,er$:()=>eX,ezk:()=>hw,f4X:()=>P,fBL:()=>tN,fJr:()=>e3,fP5:()=>lT,fTw:()=>ub,fc6:()=>rP,g7M:()=>tu,gJ2:()=>tD,gO9:()=>I,gPd:()=>ss,gWB:()=>iu,ghU:()=>tM,h2z:()=>eE,hB5:()=>v,hIf:()=>ig,hZF:()=>hC,h_9:()=>hO,hdd:()=>L,hgQ:()=>D,hjs:()=>l8,hsX:()=>b,hxR:()=>t_,hy7:()=>tf,hzE:()=>uw,i7d:()=>nn,i7u:()=>iA,iNn:()=>r7,iOZ:()=>a0,iUH:()=>tB,ibB:()=>oh,ie2:()=>V,imn:()=>rS,ix0:()=>tW,iyt:()=>sC,j6:()=>o8,jGm:()=>oT,jR7:()=>t6,jUj:()=>ng,jej:()=>i1,jf0:()=>eJ,jsO:()=>e8,jut:()=>li,jzd:()=>il,k6Q:()=>t9,k6q:()=>tC,k8v:()=>eD,kBv:()=>l,kEx:()=>hL,kG0:()=>e$,kLi:()=>i7,kO0:()=>ia,kRr:()=>tk,kTW:()=>tS,kTp:()=>t7,kYr:()=>e6,k_V:()=>l9,keZ:()=>lg,klZ:()=>it,kn4:()=>sF,kqe:()=>eQ,kxk:()=>nP,kyO:()=>ta,l2R:()=>hR,lGu:()=>Y,lGw:()=>hv,lMl:()=>ry,lPF:()=>iK,lc7:()=>eI,ljd:()=>eC,lxW:()=>nt,lyL:()=>em,mcG:()=>i0,mrM:()=>aC,nCl:()=>h$,nEu:()=>ot,nNL:()=>th,nST:()=>k,nWS:()=>sa,nZQ:()=>lx,nc$:()=>lY,nzx:()=>oK,o6l:()=>nd,oVO:()=>e5,oh6:()=>l$,ojh:()=>E,ojs:()=>eg,ov9:()=>X,pBf:()=>ee,pFK:()=>a7,pHI:()=>tA,pPE:()=>lq,paN:()=>t0,ppV:()=>i5,psI:()=>eu,q2:()=>he,qBx:()=>ho,qFE:()=>a9,qU7:()=>a4,qUd:()=>h4,qa3:()=>en,qad:()=>O,qq$:()=>iQ,qtW:()=>rW,r6x:()=>ls,rFo:()=>so,rKP:()=>o1,rOG:()=>iw,rQf:()=>eR,rSH:()=>eh,rYR:()=>eL,rjZ:()=>a5,s0K:()=>ov,sKt:()=>ii,sPf:()=>h,tBo:()=>l1,tJf:()=>tP,tXL:()=>hn,tcD:()=>a6,tz3:()=>hB,uB5:()=>ep,uSd:()=>hr,uV5:()=>tv,uWO:()=>n1,uXQ:()=>iy,ubm:()=>nl,uf3:()=>au,uov:()=>ix,ure:()=>h7,v9J:()=>iT,veJ:()=>hJ,vim:()=>ir,vmz:()=>rF,vyJ:()=>eq,wAk:()=>oz,wTz:()=>eU,wfO:()=>tx,wn6:()=>W,wrO:()=>tX,wtR:()=>u,wvS:()=>rE,xFO:()=>tg,xJ6:()=>oJ,xOk:()=>lt,xSv:()=>Q,xZx:()=>lB,xfg:()=>o_,y3Z:()=>ef,y9J:()=>sh,yT7:()=>tJ,y_p:()=>tn,ypk:()=>oI,ywQ:()=>m,zD7:()=>lv,zdS:()=>tG,zgK:()=>sY,znC:()=>B});let h="180",l={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},u={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},c=0,d=1,p=2,m=3,y=0,f=1,g=2,x=3,v=0,b=1,w=2,M=0,S=1,_=2,A=3,T=4,z=5,I=100,C=101,k=102,B=103,R=104,E=200,O=201,P=202,N=203,V=204,F=205,L=206,j=207,W=208,U=209,D=210,H=211,q=212,J=213,X=214,Z=0,Y=1,G=2,Q=3,K=4,$=5,tt=6,te=7,ti=0,ts=1,tr=2,tn=0,ta=1,to=2,th=3,tl=4,tu=5,tc=6,td=7,tp="attached",tm="detached",ty=300,tf=301,tg=302,tx=303,tv=304,tb=306,tw=1e3,tM=1001,tS=1002,t_=1003,tA=1004,tT=1004,tz=1005,tI=1005,tC=1006,tk=1007,tB=1007,tR=1008,tE=1008,tO=1009,tP=1010,tN=1011,tV=1012,tF=1013,tL=1014,tj=1015,tW=1016,tU=1017,tD=1018,tH=1020,tq=35902,tJ=35899,tX=1021,tZ=1022,tY=1023,tG=1026,tQ=1027,tK=1028,t$=1029,t0=1030,t1=1031,t2=1032,t3=1033,t5=33776,t4=33777,t6=33778,t8=33779,t9=35840,t7=35841,et=35842,ee=35843,ei=36196,es=37492,er=37496,en=37808,ea=37809,eo=37810,eh=37811,el=37812,eu=37813,ec=37814,ed=37815,ep=37816,em=37817,ey=37818,ef=37819,eg=37820,ex=37821,ev=36492,eb=36494,ew=36495,eM=36283,eS=36284,e_=36285,eA=36286,eT=2200,ez=2201,eI=2202,eC=2300,ek=2301,eB=2302,eR=2400,eE=2401,eO=2402,eP=2500,eN=2501,eV=0,eF=1,eL=2,ej=3200,eW=3201,eU=3202,eD=3203,eH=0,eq=1,eJ="",eX="srgb",eZ="srgb-linear",eY="linear",eG="srgb",eQ=0,eK=7680,e$=7681,e0=7682,e1=7683,e2=34055,e3=34056,e5=5386,e4=512,e6=513,e8=514,e9=515,e7=516,it=517,ie=518,ii=519,is=512,ir=513,ia=514,io=515,ih=516,il=517,iu=518,ic=519,id=35044,ip=35048,im=35040,iy=35045,ig=35049,ix=35041,iv=35046,ib=35050,iw=35042,iM="100",iS="300 es",i_=2e3,iA=2001,iT={COMPUTE:"compute",RENDER:"render"},iz={PERSPECTIVE:"perspective",LINEAR:"linear",FLAT:"flat"},iI={NORMAL:"normal",CENTROID:"centroid",SAMPLE:"sample",FIRST:"first",EITHER:"either"};class iC{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});let i=this._listeners;void 0===i[t]&&(i[t]=[]),-1===i[t].indexOf(e)&&i[t].push(e)}hasEventListener(t,e){let i=this._listeners;return void 0!==i&&void 0!==i[t]&&-1!==i[t].indexOf(e)}removeEventListener(t,e){let i=this._listeners;if(void 0===i)return;let s=i[t];if(void 0!==s){let t=s.indexOf(e);-1!==t&&s.splice(t,1)}}dispatchEvent(t){let e=this._listeners;if(void 0===e)return;let i=e[t.type];if(void 0!==i){t.target=this;let e=i.slice(0);for(let i=0,s=e.length;i>8&255]+ik[t>>16&255]+ik[t>>24&255]+"-"+ik[255&e]+ik[e>>8&255]+"-"+ik[e>>16&15|64]+ik[e>>24&255]+"-"+ik[63&i|128]+ik[i>>8&255]+"-"+ik[i>>16&255]+ik[i>>24&255]+ik[255&s]+ik[s>>8&255]+ik[s>>16&255]+ik[s>>24&255]).toLowerCase()}function iP(t,e,i){return Math.max(e,Math.min(i,t))}function iN(t,e){return(t%e+e)%e}function iV(t,e,i){return(1-i)*t+i*e}function iF(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/0xffffffff;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/0x7fffffff,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw Error("Invalid component type.")}}function iL(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(0xffffffff*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(0x7fffffff*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw Error("Invalid component type.")}}let ij={DEG2RAD:iR,RAD2DEG:iE,generateUUID:iO,clamp:iP,euclideanModulo:iN,mapLinear:function(t,e,i,s,r){return s+(t-e)*(r-s)/(i-e)},inverseLerp:function(t,e,i){return t!==e?(i-t)/(e-t):0},lerp:iV,damp:function(t,e,i,s){return iV(t,e,1-Math.exp(-i*s))},pingpong:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return e-Math.abs(iN(t,2*e)-e)},smoothstep:function(t,e,i){return t<=e?0:t>=i?1:(t=(t-e)/(i-e))*t*(3-2*t)},smootherstep:function(t,e,i){return t<=e?0:t>=i?1:(t=(t-e)/(i-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){void 0!==t&&(iB=t);let e=iB+=0x6d2b79f5;return e=Math.imul(e^e>>>15,1|e),(((e^=e+Math.imul(e^e>>>7,61|e))^e>>>14)>>>0)/0x100000000},degToRad:function(t){return t*iR},radToDeg:function(t){return t*iE},isPowerOfTwo:function(t){return(t&t-1)==0&&0!==t},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,e,i,s,r){let n=Math.cos,a=Math.sin,o=n(i/2),h=a(i/2),l=n((e+s)/2),u=a((e+s)/2),c=n((e-s)/2),d=a((e-s)/2),p=n((s-e)/2),m=a((s-e)/2);switch(r){case"XYX":t.set(o*u,h*c,h*d,o*l);break;case"YZY":t.set(h*d,o*u,h*c,o*l);break;case"ZXZ":t.set(h*c,h*d,o*u,o*l);break;case"XZX":t.set(o*u,h*m,h*p,o*l);break;case"YXY":t.set(h*p,o*u,h*m,o*l);break;case"ZYZ":t.set(h*m,h*p,o*u,o*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:iL,denormalize:iF};class iW{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 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 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){return 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){return 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){let e=this.x,i=this.y,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6],this.y=s[1]*e+s[4]*i+s[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=iP(this.x,t.x,e.x),this.y=iP(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=iP(this.x,t,e),this.y=iP(this.y,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(iP(i,t,e))}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=Math.trunc(this.x),this.y=Math.trunc(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}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());return 0===e?Math.PI/2:Math.acos(iP(this.dot(t)/e,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,i=this.y-t.y;return e*e+i*i}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,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[e],this.y=t[e+1],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let i=Math.cos(e),s=Math.sin(e),r=this.x-t.x,n=this.y-t.y;return this.x=r*i-n*s+t.x,this.y=r*s+n*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}constructor(t=0,e=0){iW.prototype.isVector2=!0,this.x=t,this.y=e}}class iU{static slerpFlat(t,e,i,s,r,n,a){let o=i[s+0],h=i[s+1],l=i[s+2],u=i[s+3],c=r[n+0],d=r[n+1],p=r[n+2],m=r[n+3];if(0===a){t[e+0]=o,t[e+1]=h,t[e+2]=l,t[e+3]=u;return}if(1===a){t[e+0]=c,t[e+1]=d,t[e+2]=p,t[e+3]=m;return}if(u!==m||o!==c||h!==d||l!==p){let t=1-a,e=o*c+h*d+l*p+u*m,i=e>=0?1:-1,s=1-e*e;if(s>Number.EPSILON){let r=Math.sqrt(s),n=Math.atan2(r,e*i);t=Math.sin(t*n)/r,a=Math.sin(a*n)/r}let r=a*i;if(o=o*t+c*r,h=h*t+d*r,l=l*t+p*r,u=u*t+m*r,t===1-a){let t=1/Math.sqrt(o*o+h*h+l*l+u*u);o*=t,h*=t,l*=t,u*=t}}t[e]=o,t[e+1]=h,t[e+2]=l,t[e+3]=u}static multiplyQuaternionsFlat(t,e,i,s,r,n){let a=i[s],o=i[s+1],h=i[s+2],l=i[s+3],u=r[n],c=r[n+1],d=r[n+2],p=r[n+3];return t[e]=a*p+l*u+o*d-h*c,t[e+1]=o*p+l*c+h*u-a*d,t[e+2]=h*p+l*d+a*c-o*u,t[e+3]=l*p-a*u-o*c-h*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,i,s){return this._x=t,this._y=e,this._z=i,this._w=s,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){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1],i=t._x,s=t._y,r=t._z,n=t._order,a=Math.cos,o=Math.sin,h=a(i/2),l=a(s/2),u=a(r/2),c=o(i/2),d=o(s/2),p=o(r/2);switch(n){case"XYZ":this._x=c*l*u+h*d*p,this._y=h*d*u-c*l*p,this._z=h*l*p+c*d*u,this._w=h*l*u-c*d*p;break;case"YXZ":this._x=c*l*u+h*d*p,this._y=h*d*u-c*l*p,this._z=h*l*p-c*d*u,this._w=h*l*u+c*d*p;break;case"ZXY":this._x=c*l*u-h*d*p,this._y=h*d*u+c*l*p,this._z=h*l*p+c*d*u,this._w=h*l*u-c*d*p;break;case"ZYX":this._x=c*l*u-h*d*p,this._y=h*d*u+c*l*p,this._z=h*l*p-c*d*u,this._w=h*l*u+c*d*p;break;case"YZX":this._x=c*l*u+h*d*p,this._y=h*d*u+c*l*p,this._z=h*l*p-c*d*u,this._w=h*l*u-c*d*p;break;case"XZY":this._x=c*l*u-h*d*p,this._y=h*d*u-c*l*p,this._z=h*l*p+c*d*u,this._w=h*l*u+c*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+n)}return!0===e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let i=e/2,s=Math.sin(i);return this._x=t.x*s,this._y=t.y*s,this._z=t.z*s,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,i=e[0],s=e[4],r=e[8],n=e[1],a=e[5],o=e[9],h=e[2],l=e[6],u=e[10],c=i+a+u;if(c>0){let t=.5/Math.sqrt(c+1);this._w=.25/t,this._x=(l-o)*t,this._y=(r-h)*t,this._z=(n-s)*t}else if(i>a&&i>u){let t=2*Math.sqrt(1+i-a-u);this._w=(l-o)/t,this._x=.25*t,this._y=(s+n)/t,this._z=(r+h)/t}else if(a>u){let t=2*Math.sqrt(1+a-i-u);this._w=(r-h)/t,this._x=(s+n)/t,this._y=.25*t,this._z=(o+l)/t}else{let t=2*Math.sqrt(1+u-i-a);this._w=(n-s)/t,this._x=(r+h)/t,this._y=(o+l)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return i<1e-8?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0):(this._x=0,this._y=-t.z,this._z=t.y)):(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=i,this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(iP(this.dot(t),-1,1)))}rotateTowards(t,e){let i=this.angleTo(t);if(0===i)return this;let s=Math.min(1,e/i);return this.slerp(t,s),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){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let i=t._x,s=t._y,r=t._z,n=t._w,a=e._x,o=e._y,h=e._z,l=e._w;return this._x=i*l+n*a+s*h-r*o,this._y=s*l+n*o+r*a-i*h,this._z=r*l+n*h+i*o-s*a,this._w=n*l-i*a-s*o-r*h,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);let i=this._x,s=this._y,r=this._z,n=this._w,a=n*t._w+i*t._x+s*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=n,this._x=i,this._y=s,this._z=r,this;let o=1-a*a;if(o<=Number.EPSILON){let t=1-e;return this._w=t*n+e*this._w,this._x=t*i+e*this._x,this._y=t*s+e*this._y,this._z=t*r+e*this._z,this.normalize(),this}let h=Math.sqrt(o),l=Math.atan2(h,a),u=Math.sin((1-e)*l)/h,c=Math.sin(e*l)/h;return this._w=n*u+this._w*c,this._x=i*u+this._x*c,this._y=s*u+this._y*c,this._z=r*u+this._z*c,this._onChangeCallback(),this}slerpQuaternions(t,e,i){return this.copy(t).slerp(e,i)}random(){let t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),i=Math.random(),s=Math.sqrt(1-i),r=Math.sqrt(i);return this.set(s*Math.sin(t),s*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}constructor(t=0,e=0,i=0,s=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=i,this._w=s}}class iD{set(t,e,i){return void 0===i&&(i=this.z),this.x=t,this.y=e,this.z=i,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 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 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){return 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){return 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){return 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 this.applyQuaternion(iq.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(iq.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,i=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[3]*i+r[6]*s,this.y=r[1]*e+r[4]*i+r[7]*s,this.z=r[2]*e+r[5]*i+r[8]*s,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,i=this.y,s=this.z,r=t.elements,n=1/(r[3]*e+r[7]*i+r[11]*s+r[15]);return this.x=(r[0]*e+r[4]*i+r[8]*s+r[12])*n,this.y=(r[1]*e+r[5]*i+r[9]*s+r[13])*n,this.z=(r[2]*e+r[6]*i+r[10]*s+r[14])*n,this}applyQuaternion(t){let e=this.x,i=this.y,s=this.z,r=t.x,n=t.y,a=t.z,o=t.w,h=2*(n*s-a*i),l=2*(a*e-r*s),u=2*(r*i-n*e);return this.x=e+o*h+n*u-a*l,this.y=i+o*l+a*h-r*u,this.z=s+o*u+r*l-n*h,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,i=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[4]*i+r[8]*s,this.y=r[1]*e+r[5]*i+r[9]*s,this.z=r[2]*e+r[6]*i+r[10]*s,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=iP(this.x,t.x,e.x),this.y=iP(this.y,t.y,e.y),this.z=iP(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=iP(this.x,t,e),this.y=iP(this.y,t,e),this.z=iP(this.z,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(iP(i,t,e))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(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,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let i=t.x,s=t.y,r=t.z,n=e.x,a=e.y,o=e.z;return this.x=s*o-r*a,this.y=r*n-i*o,this.z=i*a-s*n,this}projectOnVector(t){let e=t.lengthSq();if(0===e)return this.set(0,0,0);let i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return iH.copy(this).projectOnVector(t),this.sub(iH)}reflect(t){return this.sub(iH.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());return 0===e?Math.PI/2:Math.acos(iP(this.dot(t)/e,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,i=this.y-t.y,s=this.z-t.z;return e*e+i*i+s*s}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,i){let s=Math.sin(e)*t;return this.x=s*Math.sin(i),this.y=Math.cos(e)*t,this.z=s*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=s,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return 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(){let t=Math.random()*Math.PI*2,e=2*Math.random()-1,i=Math.sqrt(1-e*e);return this.x=i*Math.cos(t),this.y=e,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}constructor(t=0,e=0,i=0){iD.prototype.isVector3=!0,this.x=t,this.y=e,this.z=i}}let iH=new iD,iq=new iU;class iJ{set(t,e,i,s,r,n,a,o,h){let l=this.elements;return l[0]=t,l[1]=s,l[2]=a,l[3]=e,l[4]=r,l[5]=o,l[6]=i,l[7]=n,l[8]=h,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let 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){let i=t.elements,s=e.elements,r=this.elements,n=i[0],a=i[3],o=i[6],h=i[1],l=i[4],u=i[7],c=i[2],d=i[5],p=i[8],m=s[0],y=s[3],f=s[6],g=s[1],x=s[4],v=s[7],b=s[2],w=s[5],M=s[8];return r[0]=n*m+a*g+o*b,r[3]=n*y+a*x+o*w,r[6]=n*f+a*v+o*M,r[1]=h*m+l*g+u*b,r[4]=h*y+l*x+u*w,r[7]=h*f+l*v+u*M,r[2]=c*m+d*g+p*b,r[5]=c*y+d*x+p*w,r[8]=c*f+d*v+p*M,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],i=t[1],s=t[2],r=t[3],n=t[4],a=t[5],o=t[6],h=t[7],l=t[8];return e*n*l-e*a*h-i*r*l+i*a*o+s*r*h-s*n*o}invert(){let t=this.elements,e=t[0],i=t[1],s=t[2],r=t[3],n=t[4],a=t[5],o=t[6],h=t[7],l=t[8],u=l*n-a*h,c=a*o-l*r,d=h*r-n*o,p=e*u+i*c+s*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);let m=1/p;return t[0]=u*m,t[1]=(s*h-l*i)*m,t[2]=(a*i-s*n)*m,t[3]=c*m,t[4]=(l*e-s*o)*m,t[5]=(s*r-a*e)*m,t[6]=d*m,t[7]=(i*o-h*e)*m,t[8]=(n*e-i*r)*m,this}transpose(){let t,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){let 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,i,s,r,n,a){let o=Math.cos(r),h=Math.sin(r);return this.set(i*o,i*h,-i*(o*n+h*a)+n+t,-s*h,s*o,-s*(-h*n+o*a)+a+e,0,0,1),this}scale(t,e){return this.premultiply(iX.makeScale(t,e)),this}rotate(t){return this.premultiply(iX.makeRotation(-t)),this}translate(t,e){return this.premultiply(iX.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,i=t.elements;for(let t=0;t<9;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}constructor(t,e,i,s,r,n,a,o,h){iJ.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,e,i,s,r,n,a,o,h)}}let iX=new iJ;function iZ(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}let iY={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function iG(t,e){return new iY[t](e)}function iQ(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function iK(){let t=iQ("canvas");return t.style.display="block",t}let i$={};function i0(t){t in i$||(i$[t]=!0,console.warn(t))}function i1(t,e,i){return new Promise(function(s,r){setTimeout(function n(){switch(t.clientWaitSync(e,t.SYNC_FLUSH_COMMANDS_BIT,0)){case t.WAIT_FAILED:r();break;case t.TIMEOUT_EXPIRED:setTimeout(n,i);break;default:s()}},i)})}let i2=new iJ().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),i3=new iJ().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715),i5=function(){let t={enabled:!0,workingColorSpace:eZ,spaces:{},convert:function(t,e,i){return!1!==this.enabled&&e!==i&&e&&i&&(this.spaces[e].transfer===eG&&(t.r=i4(t.r),t.g=i4(t.g),t.b=i4(t.b)),this.spaces[e].primaries!==this.spaces[i].primaries&&(t.applyMatrix3(this.spaces[e].toXYZ),t.applyMatrix3(this.spaces[i].fromXYZ)),this.spaces[i].transfer===eG&&(t.r=i6(t.r),t.g=i6(t.g),t.b=i6(t.b))),t},workingToColorSpace:function(t,e){return this.convert(t,this.workingColorSpace,e)},colorSpaceToWorking:function(t,e){return this.convert(t,e,this.workingColorSpace)},getPrimaries:function(t){return this.spaces[t].primaries},getTransfer:function(t){return t===eJ?eY:this.spaces[t].transfer},getToneMappingMode:function(t){return this.spaces[t].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.workingColorSpace;return t.fromArray(this.spaces[e].luminanceCoefficients)},define:function(t){Object.assign(this.spaces,t)},_getMatrix:function(t,e,i){return t.copy(this.spaces[e].toXYZ).multiply(this.spaces[i].fromXYZ)},_getDrawingBufferColorSpace:function(t){return this.spaces[t].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.workingColorSpace;return this.spaces[t].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(e,i){return i0("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),t.workingToColorSpace(e,i)},toWorkingColorSpace:function(e,i){return i0("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),t.colorSpaceToWorking(e,i)}},e=[.64,.33,.3,.6,.15,.06],i=[.2126,.7152,.0722],s=[.3127,.329];return t.define({[eZ]:{primaries:e,whitePoint:s,transfer:eY,toXYZ:i2,fromXYZ:i3,luminanceCoefficients:i,workingColorSpaceConfig:{unpackColorSpace:eX},outputColorSpaceConfig:{drawingBufferColorSpace:eX}},[eX]:{primaries:e,whitePoint:s,transfer:eG,toXYZ:i2,fromXYZ:i3,luminanceCoefficients:i,outputColorSpaceConfig:{drawingBufferColorSpace:eX}}}),t}();function i4(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function i6(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}class i8{static getDataURL(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"image/png";if(/^data:/i.test(t.src)||"undefined"==typeof HTMLCanvasElement)return t.src;if(t instanceof HTMLCanvasElement)e=t;else{void 0===s&&(s=iQ("canvas")),s.width=t.width,s.height=t.height;let i=s.getContext("2d");t instanceof ImageData?i.putImageData(t,0,0):i.drawImage(t,0,0,t.width,t.height),e=s}return e.toDataURL(i)}static sRGBToLinear(t){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){let e=iQ("canvas");e.width=t.width,e.height=t.height;let i=e.getContext("2d");i.drawImage(t,0,0,t.width,t.height);let s=i.getImageData(0,0,t.width,t.height),r=s.data;for(let t=0;t0&&(i.userData=this.userData),e||(t.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==ty)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case tw:t.x=t.x-Math.floor(t.x);break;case tM:t.x=t.x<0?0:1;break;case tS: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 tw:t.y=t.y-Math.floor(t.y);break;case tM:t.y=t.y<0?0:1;break;case tS: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++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){!0===t&&this.pmremVersion++}constructor(t=ss.DEFAULT_IMAGE,e=ss.DEFAULT_MAPPING,i=tM,s=tM,r=tC,n=tR,a=tY,o=tO,h=ss.DEFAULT_ANISOTROPY,l=eJ){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:se++}),this.uuid=iO(),this.name="",this.source=new i7(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=i,this.wrapT=s,this.magFilter=r,this.minFilter=n,this.anisotropy=h,this.format=a,this.internalFormat=null,this.type=o,this.offset=new iW(0,0),this.repeat=new iW(1,1),this.center=new iW(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new iJ,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=l,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!t&&!!t.depth&&t.depth>1,this.pmremVersion=0}}ss.DEFAULT_IMAGE=null,ss.DEFAULT_MAPPING=ty,ss.DEFAULT_ANISOTROPY=1;class sr{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,i,s){return this.x=t,this.y=e,this.z=i,this.w=s,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 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 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){return 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){return 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){let e=this.x,i=this.y,s=this.z,r=this.w,n=t.elements;return this.x=n[0]*e+n[4]*i+n[8]*s+n[12]*r,this.y=n[1]*e+n[5]*i+n[9]*s+n[13]*r,this.z=n[2]*e+n[6]*i+n[10]*s+n[14]*r,this.w=n[3]*e+n[7]*i+n[11]*s+n[15]*r,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let 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,i,s,r,n=t.elements,a=n[0],o=n[4],h=n[8],l=n[1],u=n[5],c=n[9],d=n[2],p=n[6],m=n[10];if(.01>Math.abs(o-l)&&.01>Math.abs(h-d)&&.01>Math.abs(c-p)){if(.1>Math.abs(o+l)&&.1>Math.abs(h+d)&&.1>Math.abs(c+p)&&.1>Math.abs(a+u+m-3))return this.set(1,0,0,0),this;e=Math.PI;let t=(a+1)/2,n=(u+1)/2,y=(m+1)/2,f=(o+l)/4,g=(h+d)/4,x=(c+p)/4;return t>n&&t>y?t<.01?(i=0,s=.707106781,r=.707106781):(s=f/(i=Math.sqrt(t)),r=g/i):n>y?n<.01?(i=.707106781,s=0,r=.707106781):(i=f/(s=Math.sqrt(n)),r=x/s):y<.01?(i=.707106781,s=.707106781,r=0):(i=g/(r=Math.sqrt(y)),s=x/r),this.set(i,s,r,e),this}let y=Math.sqrt((p-c)*(p-c)+(h-d)*(h-d)+(l-o)*(l-o));return .001>Math.abs(y)&&(y=1),this.x=(p-c)/y,this.y=(h-d)/y,this.z=(l-o)/y,this.w=Math.acos((a+u+m-1)/2),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}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.w=Math.min(this.w,t.w),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.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=iP(this.x,t.x,e.x),this.y=iP(this.y,t.y,e.y),this.z=iP(this.z,t.z,e.z),this.w=iP(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=iP(this.x,t,e),this.y=iP(this.y,t,e),this.z=iP(this.z,t,e),this.w=iP(this.w,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(iP(i,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,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)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}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.w+=(t.w-this.w)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this.w=t.w+(e.w-t.w)*i,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}constructor(t=0,e=0,i=0,s=1){sr.prototype.isVector4=!0,this.x=t,this.y=e,this.z=i,this.w=s}}class sn extends iC{_setTextureOptions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e={minFilter:tC,generateMipmaps:!1,flipY:!1,internalFormat:null};void 0!==t.mapping&&(e.mapping=t.mapping),void 0!==t.wrapS&&(e.wrapS=t.wrapS),void 0!==t.wrapT&&(e.wrapT=t.wrapT),void 0!==t.wrapR&&(e.wrapR=t.wrapR),void 0!==t.magFilter&&(e.magFilter=t.magFilter),void 0!==t.minFilter&&(e.minFilter=t.minFilter),void 0!==t.format&&(e.format=t.format),void 0!==t.type&&(e.type=t.type),void 0!==t.anisotropy&&(e.anisotropy=t.anisotropy),void 0!==t.colorSpace&&(e.colorSpace=t.colorSpace),void 0!==t.flipY&&(e.flipY=t.flipY),void 0!==t.generateMipmaps&&(e.generateMipmaps=t.generateMipmaps),void 0!==t.internalFormat&&(e.internalFormat=t.internalFormat);for(let t=0;t2&&void 0!==arguments[2]?arguments[2]:1;if(this.width!==t||this.height!==e||this.depth!==i){this.width=t,this.height=e,this.depth=i;for(let s=0,r=this.textures.length;s1;this.dispose()}this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.scissor.copy(t.scissor),this.scissorTest=t.scissorTest,this.viewport.copy(t.viewport),this.textures.length=0;for(let e=0,i=t.textures.length;e1&&void 0!==arguments[1]&&arguments[1];return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=Infinity,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x1&&void 0!==arguments[1]&&arguments[1];t.updateWorldMatrix(!1,!1);let i=t.geometry;if(void 0!==i){let s=i.getAttribute("position");if(!0===e&&void 0!==s&&!0!==t.isInstancedMesh)for(let e=0,i=s.count;e=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.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.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,sp),sp.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(sw),sM.subVectors(this.max,sw),sy.subVectors(t.a,sw),sf.subVectors(t.b,sw),sg.subVectors(t.c,sw),sx.subVectors(sf,sy),sv.subVectors(sg,sf),sb.subVectors(sy,sg);let e=[0,-sx.z,sx.y,0,-sv.z,sv.y,0,-sb.z,sb.y,sx.z,0,-sx.x,sv.z,0,-sv.x,sb.z,0,-sb.x,-sx.y,sx.x,0,-sv.y,sv.x,0,-sb.y,sb.x,0];return!!sA(e,sy,sf,sg,sM)&&!!sA(e=[1,0,0,0,1,0,0,0,1],sy,sf,sg,sM)&&(sS.crossVectors(sx,sv),sA(e=[sS.x,sS.y,sS.z],sy,sf,sg,sM))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,sp).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=.5*this.getSize(sp).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()||(sd[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),sd[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),sd[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),sd[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),sd[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),sd[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),sd[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),sd[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(sd)),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)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}constructor(t=new iD(Infinity,Infinity,Infinity),e=new iD(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}}let sd=[new iD,new iD,new iD,new iD,new iD,new iD,new iD,new iD],sp=new iD,sm=new sc,sy=new iD,sf=new iD,sg=new iD,sx=new iD,sv=new iD,sb=new iD,sw=new iD,sM=new iD,sS=new iD,s_=new iD;function sA(t,e,i,s,r){for(let n=0,a=t.length-3;n<=a;n+=3){s_.fromArray(t,n);let a=r.x*Math.abs(s_.x)+r.y*Math.abs(s_.y)+r.z*Math.abs(s_.z),o=e.dot(s_),h=i.dot(s_),l=s.dot(s_);if(Math.max(-Math.max(o,h,l),Math.min(o,h,l))>a)return!1}return!0}let sT=new sc,sz=new iD,sI=new iD;class sC{set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let i=this.center;void 0!==e?i.copy(e):sT.setFromPoints(t).getCenter(i);let s=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.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){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;sz.subVectors(t,this.center);let e=sz.lengthSq();if(e>this.radius*this.radius){let t=Math.sqrt(e),i=(t-this.radius)*.5;this.center.addScaledVector(sz,i/t),this.radius+=i}return this}union(t){return t.isEmpty()||(this.isEmpty()?this.copy(t):!0===this.center.equals(t.center)?this.radius=Math.max(this.radius,t.radius):(sI.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(sz.copy(t.center).add(sI)),this.expandByPoint(sz.copy(t.center).sub(sI)))),this}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}constructor(t=new iD,e=-1){this.isSphere=!0,this.center=t,this.radius=e}}let sk=new iD,sB=new iD,sR=new iD,sE=new iD,sO=new iD,sP=new iD,sN=new iD;class sV{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.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,sk)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=sk.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(sk.copy(this.origin).addScaledVector(this.direction,e),sk.distanceToSquared(t))}distanceSqToSegment(t,e,i,s){let r,n,a,o;sB.copy(t).add(e).multiplyScalar(.5),sR.copy(e).sub(t).normalize(),sE.copy(this.origin).sub(sB);let h=.5*t.distanceTo(e),l=-this.direction.dot(sR),u=sE.dot(this.direction),c=-sE.dot(sR),d=sE.lengthSq(),p=Math.abs(1-l*l);if(p>0)if(r=l*c-u,n=l*u-c,o=h*p,r>=0)if(n>=-o)if(n<=o){let t=1/p;r*=t,n*=t,a=r*(r+l*n+2*u)+n*(l*r+n+2*c)+d}else a=-(r=Math.max(0,-(l*(n=h)+u)))*r+n*(n+2*c)+d;else a=-(r=Math.max(0,-(l*(n=-h)+u)))*r+n*(n+2*c)+d;else n<=-o?(n=(r=Math.max(0,-(-l*h+u)))>0?-h:Math.min(Math.max(-h,-c),h),a=-r*r+n*(n+2*c)+d):n<=o?(r=0,a=(n=Math.min(Math.max(-h,-c),h))*(n+2*c)+d):(n=(r=Math.max(0,-(l*h+u)))>0?h:Math.min(Math.max(-h,-c),h),a=-r*r+n*(n+2*c)+d);else n=l>0?-h:h,a=-(r=Math.max(0,-(l*n+u)))*r+n*(n+2*c)+d;return i&&i.copy(this.origin).addScaledVector(this.direction,r),s&&s.copy(sB).addScaledVector(sR,n),a}intersectSphere(t,e){sk.subVectors(t.center,this.origin);let i=sk.dot(this.direction),s=sk.dot(sk)-i*i,r=t.radius*t.radius;if(s>r)return null;let n=Math.sqrt(r-s),a=i-n,o=i+n;return o<0?null:a<0?this.at(o,e):this.at(a,e)}intersectsSphere(t){return!(t.radius<0)&&this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;let i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){let i=this.distanceToPlane(t);return null===i?null:this.at(i,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return!!(0===e||t.normal.dot(this.direction)*e<0)}intersectBox(t,e){let i,s,r,n,a,o,h=1/this.direction.x,l=1/this.direction.y,u=1/this.direction.z,c=this.origin;return(h>=0?(i=(t.min.x-c.x)*h,s=(t.max.x-c.x)*h):(i=(t.max.x-c.x)*h,s=(t.min.x-c.x)*h),l>=0?(r=(t.min.y-c.y)*l,n=(t.max.y-c.y)*l):(r=(t.max.y-c.y)*l,n=(t.min.y-c.y)*l),i>n||r>s||((r>i||isNaN(i))&&(i=r),(n=0?(a=(t.min.z-c.z)*u,o=(t.max.z-c.z)*u):(a=(t.max.z-c.z)*u,o=(t.min.z-c.z)*u),i>o||a>s||((a>i||i!=i)&&(i=a),(o=0?i:s,e)}intersectsBox(t){return null!==this.intersectBox(t,sk)}intersectTriangle(t,e,i,s,r){let n;sO.subVectors(e,t),sP.subVectors(i,t),sN.crossVectors(sO,sP);let a=this.direction.dot(sN);if(a>0){if(s)return null;n=1}else{if(!(a<0))return null;n=-1,a=-a}sE.subVectors(this.origin,t);let o=n*this.direction.dot(sP.crossVectors(sE,sP));if(o<0)return null;let h=n*this.direction.dot(sO.cross(sE));if(h<0||o+h>a)return null;let l=-n*sE.dot(sN);return l<0?null:this.at(l/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)}constructor(t=new iD,e=new iD(0,0,-1)){this.origin=t,this.direction=e}}class sF{set(t,e,i,s,r,n,a,o,h,l,u,c,d,p,m,y){let f=this.elements;return f[0]=t,f[4]=e,f[8]=i,f[12]=s,f[1]=r,f[5]=n,f[9]=a,f[13]=o,f[2]=h,f[6]=l,f[10]=u,f[14]=c,f[3]=d,f[7]=p,f[11]=m,f[15]=y,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 sF().fromArray(this.elements)}copy(t){let e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){let e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){let 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,i){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,i=t.elements,s=1/sL.setFromMatrixColumn(t,0).length(),r=1/sL.setFromMatrixColumn(t,1).length(),n=1/sL.setFromMatrixColumn(t,2).length();return e[0]=i[0]*s,e[1]=i[1]*s,e[2]=i[2]*s,e[3]=0,e[4]=i[4]*r,e[5]=i[5]*r,e[6]=i[6]*r,e[7]=0,e[8]=i[8]*n,e[9]=i[9]*n,e[10]=i[10]*n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,i=t.x,s=t.y,r=t.z,n=Math.cos(i),a=Math.sin(i),o=Math.cos(s),h=Math.sin(s),l=Math.cos(r),u=Math.sin(r);if("XYZ"===t.order){let t=n*l,i=n*u,s=a*l,r=a*u;e[0]=o*l,e[4]=-o*u,e[8]=h,e[1]=i+s*h,e[5]=t-r*h,e[9]=-a*o,e[2]=r-t*h,e[6]=s+i*h,e[10]=n*o}else if("YXZ"===t.order){let t=o*l,i=o*u,s=h*l,r=h*u;e[0]=t+r*a,e[4]=s*a-i,e[8]=n*h,e[1]=n*u,e[5]=n*l,e[9]=-a,e[2]=i*a-s,e[6]=r+t*a,e[10]=n*o}else if("ZXY"===t.order){let t=o*l,i=o*u,s=h*l,r=h*u;e[0]=t-r*a,e[4]=-n*u,e[8]=s+i*a,e[1]=i+s*a,e[5]=n*l,e[9]=r-t*a,e[2]=-n*h,e[6]=a,e[10]=n*o}else if("ZYX"===t.order){let t=n*l,i=n*u,s=a*l,r=a*u;e[0]=o*l,e[4]=s*h-i,e[8]=t*h+r,e[1]=o*u,e[5]=r*h+t,e[9]=i*h-s,e[2]=-h,e[6]=a*o,e[10]=n*o}else if("YZX"===t.order){let t=n*o,i=n*h,s=a*o,r=a*h;e[0]=o*l,e[4]=r-t*u,e[8]=s*u+i,e[1]=u,e[5]=n*l,e[9]=-a*l,e[2]=-h*l,e[6]=i*u+s,e[10]=t-r*u}else if("XZY"===t.order){let t=n*o,i=n*h,s=a*o,r=a*h;e[0]=o*l,e[4]=-u,e[8]=h*l,e[1]=t*u+r,e[5]=n*l,e[9]=i*u-s,e[2]=s*u-i,e[6]=a*l,e[10]=r*u+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(sW,t,sU)}lookAt(t,e,i){let s=this.elements;return sq.subVectors(t,e),0===sq.lengthSq()&&(sq.z=1),sq.normalize(),sD.crossVectors(i,sq),0===sD.lengthSq()&&(1===Math.abs(i.z)?sq.x+=1e-4:sq.z+=1e-4,sq.normalize(),sD.crossVectors(i,sq)),sD.normalize(),sH.crossVectors(sq,sD),s[0]=sD.x,s[4]=sH.x,s[8]=sq.x,s[1]=sD.y,s[5]=sH.y,s[9]=sq.y,s[2]=sD.z,s[6]=sH.z,s[10]=sq.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let i=t.elements,s=e.elements,r=this.elements,n=i[0],a=i[4],o=i[8],h=i[12],l=i[1],u=i[5],c=i[9],d=i[13],p=i[2],m=i[6],y=i[10],f=i[14],g=i[3],x=i[7],v=i[11],b=i[15],w=s[0],M=s[4],S=s[8],_=s[12],A=s[1],T=s[5],z=s[9],I=s[13],C=s[2],k=s[6],B=s[10],R=s[14],E=s[3],O=s[7],P=s[11],N=s[15];return r[0]=n*w+a*A+o*C+h*E,r[4]=n*M+a*T+o*k+h*O,r[8]=n*S+a*z+o*B+h*P,r[12]=n*_+a*I+o*R+h*N,r[1]=l*w+u*A+c*C+d*E,r[5]=l*M+u*T+c*k+d*O,r[9]=l*S+u*z+c*B+d*P,r[13]=l*_+u*I+c*R+d*N,r[2]=p*w+m*A+y*C+f*E,r[6]=p*M+m*T+y*k+f*O,r[10]=p*S+m*z+y*B+f*P,r[14]=p*_+m*I+y*R+f*N,r[3]=g*w+x*A+v*C+b*E,r[7]=g*M+x*T+v*k+b*O,r[11]=g*S+x*z+v*B+b*P,r[15]=g*_+x*I+v*R+b*N,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],i=t[4],s=t[8],r=t[12],n=t[1],a=t[5],o=t[9],h=t[13],l=t[2],u=t[6],c=t[10],d=t[14],p=t[3],m=t[7];return p*(r*o*u-s*h*u-r*a*c+i*h*c+s*a*d-i*o*d)+m*(e*o*d-e*h*c+r*n*c-s*n*d+s*h*l-r*o*l)+t[11]*(e*h*u-e*a*d-r*n*u+i*n*d+r*a*l-i*h*l)+t[15]*(-s*a*l-e*o*u+e*a*c+s*n*u-i*n*c+i*o*l)}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(t,e,i){let s=this.elements;return t.isVector3?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=e,s[14]=i),this}invert(){let t=this.elements,e=t[0],i=t[1],s=t[2],r=t[3],n=t[4],a=t[5],o=t[6],h=t[7],l=t[8],u=t[9],c=t[10],d=t[11],p=t[12],m=t[13],y=t[14],f=t[15],g=u*y*h-m*c*h+m*o*d-a*y*d-u*o*f+a*c*f,x=p*c*h-l*y*h-p*o*d+n*y*d+l*o*f-n*c*f,v=l*m*h-p*u*h+p*a*d-n*m*d-l*a*f+n*u*f,b=p*u*o-l*m*o-p*a*c+n*m*c+l*a*y-n*u*y,w=e*g+i*x+s*v+r*b;if(0===w)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let M=1/w;return t[0]=g*M,t[1]=(m*c*r-u*y*r-m*s*d+i*y*d+u*s*f-i*c*f)*M,t[2]=(a*y*r-m*o*r+m*s*h-i*y*h-a*s*f+i*o*f)*M,t[3]=(u*o*r-a*c*r-u*s*h+i*c*h+a*s*d-i*o*d)*M,t[4]=x*M,t[5]=(l*y*r-p*c*r+p*s*d-e*y*d-l*s*f+e*c*f)*M,t[6]=(p*o*r-n*y*r-p*s*h+e*y*h+n*s*f-e*o*f)*M,t[7]=(n*c*r-l*o*r+l*s*h-e*c*h-n*s*d+e*o*d)*M,t[8]=v*M,t[9]=(p*u*r-l*m*r-p*i*d+e*m*d+l*i*f-e*u*f)*M,t[10]=(n*m*r-p*a*r+p*i*h-e*m*h-n*i*f+e*a*f)*M,t[11]=(l*a*r-n*u*r-l*i*h+e*u*h+n*i*d-e*a*d)*M,t[12]=b*M,t[13]=(l*m*s-p*u*s+p*i*c-e*m*c-l*i*y+e*u*y)*M,t[14]=(p*a*s-n*m*s-p*i*o+e*m*o+n*i*y-e*a*y)*M,t[15]=(n*u*s-l*a*s+l*i*o-e*u*o-n*i*c+e*a*c)*M,this}scale(t){let e=this.elements,i=t.x,s=t.y,r=t.z;return e[0]*=i,e[4]*=s,e[8]*=r,e[1]*=i,e[5]*=s,e[9]*=r,e[2]*=i,e[6]*=s,e[10]*=r,e[3]*=i,e[7]*=s,e[11]*=r,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];return Math.sqrt(Math.max(e,t[4]*t[4]+t[5]*t[5]+t[6]*t[6],t[8]*t[8]+t[9]*t[9]+t[10]*t[10]))}makeTranslation(t,e,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let i=Math.cos(e),s=Math.sin(e),r=1-i,n=t.x,a=t.y,o=t.z,h=r*n,l=r*a;return this.set(h*n+i,h*a-s*o,h*o+s*a,0,h*a+s*o,l*a+i,l*o-s*n,0,h*o-s*a,l*o+s*n,r*o*o+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,s,r,n){return this.set(1,i,r,0,t,1,n,0,e,s,1,0,0,0,0,1),this}compose(t,e,i){let s=this.elements,r=e._x,n=e._y,a=e._z,o=e._w,h=r+r,l=n+n,u=a+a,c=r*h,d=r*l,p=r*u,m=n*l,y=n*u,f=a*u,g=o*h,x=o*l,v=o*u,b=i.x,w=i.y,M=i.z;return s[0]=(1-(m+f))*b,s[1]=(d+v)*b,s[2]=(p-x)*b,s[3]=0,s[4]=(d-v)*w,s[5]=(1-(c+f))*w,s[6]=(y+g)*w,s[7]=0,s[8]=(p+x)*M,s[9]=(y-g)*M,s[10]=(1-(c+m))*M,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this}decompose(t,e,i){let s=this.elements,r=sL.set(s[0],s[1],s[2]).length(),n=sL.set(s[4],s[5],s[6]).length(),a=sL.set(s[8],s[9],s[10]).length();0>this.determinant()&&(r=-r),t.x=s[12],t.y=s[13],t.z=s[14],sj.copy(this);let o=1/r,h=1/n,l=1/a;return sj.elements[0]*=o,sj.elements[1]*=o,sj.elements[2]*=o,sj.elements[4]*=h,sj.elements[5]*=h,sj.elements[6]*=h,sj.elements[8]*=l,sj.elements[9]*=l,sj.elements[10]*=l,e.setFromRotationMatrix(sj),i.x=r,i.y=n,i.z=a,this}makePerspective(t,e,i,s,r,n){let a,o,h=arguments.length>6&&void 0!==arguments[6]?arguments[6]:i_,l=arguments.length>7&&void 0!==arguments[7]&&arguments[7],u=this.elements;if(l)a=r/(n-r),o=n*r/(n-r);else if(h===i_)a=-(n+r)/(n-r),o=-2*n*r/(n-r);else if(h===iA)a=-n/(n-r),o=-n*r/(n-r);else throw Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+h);return u[0]=2*r/(e-t),u[4]=0,u[8]=(e+t)/(e-t),u[12]=0,u[1]=0,u[5]=2*r/(i-s),u[9]=(i+s)/(i-s),u[13]=0,u[2]=0,u[6]=0,u[10]=a,u[14]=o,u[3]=0,u[7]=0,u[11]=-1,u[15]=0,this}makeOrthographic(t,e,i,s,r,n){let a,o,h=arguments.length>6&&void 0!==arguments[6]?arguments[6]:i_,l=arguments.length>7&&void 0!==arguments[7]&&arguments[7],u=this.elements;if(l)a=1/(n-r),o=n/(n-r);else if(h===i_)a=-2/(n-r),o=-(n+r)/(n-r);else if(h===iA)a=-1/(n-r),o=-r/(n-r);else throw Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+h);return u[0]=2/(e-t),u[4]=0,u[8]=0,u[12]=-(e+t)/(e-t),u[1]=0,u[5]=2/(i-s),u[9]=0,u[13]=-(i+s)/(i-s),u[2]=0,u[6]=0,u[10]=a,u[14]=o,u[3]=0,u[7]=0,u[11]=0,u[15]=1,this}equals(t){let e=this.elements,i=t.elements;for(let t=0;t<16;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}constructor(t,e,i,s,r,n,a,o,h,l,u,c,d,p,m,y){sF.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,i,s,r,n,a,o,h,l,u,c,d,p,m,y)}}let sL=new iD,sj=new sF,sW=new iD(0,0,0),sU=new iD(1,1,1),sD=new iD,sH=new iD,sq=new iD,sJ=new sF,sX=new iU;class sZ{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,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._order;return this._x=t,this._y=e,this._z=i,this._order=s,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){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._order,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],s=t.elements,r=s[0],n=s[4],a=s[8],o=s[1],h=s[5],l=s[9],u=s[2],c=s[6],d=s[10];switch(e){case"XYZ":this._y=Math.asin(iP(a,-1,1)),.9999999>Math.abs(a)?(this._x=Math.atan2(-l,d),this._z=Math.atan2(-n,r)):(this._x=Math.atan2(c,h),this._z=0);break;case"YXZ":this._x=Math.asin(-iP(l,-1,1)),.9999999>Math.abs(l)?(this._y=Math.atan2(a,d),this._z=Math.atan2(o,h)):(this._y=Math.atan2(-u,r),this._z=0);break;case"ZXY":this._x=Math.asin(iP(c,-1,1)),.9999999>Math.abs(c)?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-n,h)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-iP(u,-1,1)),.9999999>Math.abs(u)?(this._x=Math.atan2(c,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-n,h));break;case"YZX":this._z=Math.asin(iP(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(-l,h),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-iP(n,-1,1)),.9999999>Math.abs(n)?(this._x=Math.atan2(c,h),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-l,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===i&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return sJ.makeRotationFromQuaternion(t),this.setFromRotationMatrix(sJ,e,i)}setFromVector3(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._order;return this.set(t.x,t.y,t.z,e)}reorder(t){return sX.setFromEuler(this),this.setFromQuaternion(sX,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(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}constructor(t=0,e=0,i=0,s=sZ.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=i,this._order=s}}sZ.DEFAULT_ORDER="XYZ";class sY{set(t){this.mask=1<>>0}enable(t){this.mask|=1<1){for(let t=0;t1){for(let t=0;t2&&void 0!==arguments[2]?arguments[2]:[];this[t]===e&&i.push(this);let s=this.children;for(let r=0,n=s.length;r0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.geometryInfo=this._geometryInfo.map(t=>({...t,boundingBox:t.boundingBox?t.boundingBox.toJSON():void 0,boundingSphere:t.boundingSphere?t.boundingSphere.toJSON():void 0})),s.instanceInfo=this._instanceInfo.map(t=>({...t})),s.availableInstanceIds=this._availableInstanceIds.slice(),s.availableGeometryIds=this._availableGeometryIds.slice(),s.nextIndexStart=this._nextIndexStart,s.nextVertexStart=this._nextVertexStart,s.geometryCount=this._geometryCount,s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.matricesTexture=this._matricesTexture.toJSON(t),s.indirectTexture=this._indirectTexture.toJSON(t),null!==this._colorsTexture&&(s.colorsTexture=this._colorsTexture.toJSON(t)),null!==this.boundingSphere&&(s.boundingSphere=this.boundingSphere.toJSON()),null!==this.boundingBox&&(s.boundingBox=this.boundingBox.toJSON())),this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(s.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=r(t.geometries,this.geometry);let e=this.geometry.parameters;if(void 0!==e&&void 0!==e.shapes){let i=e.shapes;if(Array.isArray(i))for(let e=0,s=i.length;e0){s.children=[];for(let e=0;e0){s.animations=[];for(let e=0;e0&&(i.geometries=e),s.length>0&&(i.materials=s),r.length>0&&(i.textures=r),a.length>0&&(i.images=a),o.length>0&&(i.shapes=o),h.length>0&&(i.skeletons=h),l.length>0&&(i.animations=l),u.length>0&&(i.nodes=u)}return i.object=s,i;function n(t){let e=[];for(let i in t){let s=t[i];delete s.metadata,e.push(s)}return e}}clone(t){return new this.constructor().copy(this,t)}copy(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1];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.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,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.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?s.multiplyScalar(1/Math.sqrt(r)):s.set(0,0,0)}static getBarycoord(t,e,i,s,r){ri.subVectors(s,e),rs.subVectors(i,e),rr.subVectors(t,e);let n=ri.dot(ri),a=ri.dot(rs),o=ri.dot(rr),h=rs.dot(rs),l=rs.dot(rr),u=n*h-a*a;if(0===u)return r.set(0,0,0),null;let c=1/u,d=(h*o-a*l)*c,p=(n*l-a*o)*c;return r.set(1-d-p,p,d)}static containsPoint(t,e,i,s){return null!==this.getBarycoord(t,e,i,s,rn)&&rn.x>=0&&rn.y>=0&&rn.x+rn.y<=1}static getInterpolation(t,e,i,s,r,n,a,o){return null===this.getBarycoord(t,e,i,s,rn)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(r,rn.x),o.addScaledVector(n,rn.y),o.addScaledVector(a,rn.z),o)}static getInterpolatedAttribute(t,e,i,s,r,n){return rd.setScalar(0),rp.setScalar(0),rm.setScalar(0),rd.fromBufferAttribute(t,e),rp.fromBufferAttribute(t,i),rm.fromBufferAttribute(t,s),n.setScalar(0),n.addScaledVector(rd,r.x),n.addScaledVector(rp,r.y),n.addScaledVector(rm,r.z),n}static isFrontFacing(t,e,i,s){return ri.subVectors(i,e),rs.subVectors(t,e),0>ri.cross(rs).dot(s)}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,s){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[s]),this}setFromAttributeAndIndices(t,e,i,s){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,i),this.c.fromBufferAttribute(t,s),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 ri.subVectors(this.c,this.b),rs.subVectors(this.a,this.b),.5*ri.cross(rs).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return ry.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return ry.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,i,s,r){return ry.getInterpolation(t,this.a,this.b,this.c,e,i,s,r)}containsPoint(t){return ry.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return ry.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let i,s,r=this.a,n=this.b,a=this.c;ra.subVectors(n,r),ro.subVectors(a,r),rl.subVectors(t,r);let o=ra.dot(rl),h=ro.dot(rl);if(o<=0&&h<=0)return e.copy(r);ru.subVectors(t,n);let l=ra.dot(ru),u=ro.dot(ru);if(l>=0&&u<=l)return e.copy(n);let c=o*u-l*h;if(c<=0&&o>=0&&l<=0)return i=o/(o-l),e.copy(r).addScaledVector(ra,i);rc.subVectors(t,a);let d=ra.dot(rc),p=ro.dot(rc);if(p>=0&&d<=p)return e.copy(a);let m=d*h-o*p;if(m<=0&&h>=0&&p<=0)return s=h/(h-p),e.copy(r).addScaledVector(ro,s);let y=l*p-d*u;if(y<=0&&u-l>=0&&d-p>=0)return rh.subVectors(a,n),s=(u-l)/(u-l+(d-p)),e.copy(n).addScaledVector(rh,s);let f=1/(y+m+c);return i=m*f,s=c*f,e.copy(r).addScaledVector(ra,i).addScaledVector(ro,s)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}constructor(t=new iD,e=new iD,i=new iD){this.a=t,this.b=e,this.c=i}}let rf={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},rg={h:0,s:0,l:0},rx={h:0,s:0,l:0};function rv(t,e,i){return(i<0&&(i+=1),i>1&&(i-=1),i<1/6)?t+(e-t)*6*i:i<.5?e:i<2/3?t+(e-t)*6*(2/3-i):t}class rb{set(t,e,i){return void 0===e&&void 0===i?t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t):this.setRGB(t,e,i),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eX;return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,i5.colorSpaceToWorking(this,e),this}setRGB(t,e,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i5.workingColorSpace;return this.r=t,this.g=e,this.b=i,i5.colorSpaceToWorking(this,s),this}setHSL(t,e,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i5.workingColorSpace;if(t=iN(t,1),e=iP(e,0,1),i=iP(i,0,1),0===e)this.r=this.g=this.b=i;else{let s=i<=.5?i*(1+e):i+e-i*e,r=2*i-s;this.r=rv(r,s,t+1/3),this.g=rv(r,s,t),this.b=rv(r,s,t-1/3)}return i5.colorSpaceToWorking(this,s),this}setStyle(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eX;function s(e){void 0!==e&&1>parseFloat(e)&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}if(e=/^(\w+)\(([^\)]*)\)/.exec(t)){let r,n=e[1],a=e[2];switch(n){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,i);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,i);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,i);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(e=/^\#([A-Fa-f\d]+)$/.exec(t)){let s=e[1],r=s.length;if(3===r)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,i);if(6===r)return this.setHex(parseInt(s,16),i);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,i);return this}setColorName(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eX,i=rf[t.toLowerCase()];return void 0!==i?this.setHex(i,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}copySRGBToLinear(t){return this.r=i4(t.r),this.g=i4(t.g),this.b=i4(t.b),this}copyLinearToSRGB(t){return this.r=i6(t.r),this.g=i6(t.g),this.b=i6(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:eX;return i5.workingToColorSpace(rw.copy(this),t),65536*Math.round(iP(255*rw.r,0,255))+256*Math.round(iP(255*rw.g,0,255))+Math.round(iP(255*rw.b,0,255))}getHexString(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:eX;return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t){let e,i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i5.workingColorSpace;i5.workingToColorSpace(rw.copy(this),s);let r=rw.r,n=rw.g,a=rw.b,o=Math.max(r,n,a),h=Math.min(r,n,a),l=(h+o)/2;if(h===o)e=0,i=0;else{let t=o-h;switch(i=l<=.5?t/(o+h):t/(2-o-h),o){case r:e=(n-a)/t+6*(n1&&void 0!==arguments[1]?arguments[1]:i5.workingColorSpace;return i5.workingToColorSpace(rw.copy(this),e),t.r=rw.r,t.g=rw.g,t.b=rw.b,t}getStyle(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:eX;i5.workingToColorSpace(rw.copy(this),t);let e=rw.r,i=rw.g,s=rw.b;return t!==eX?"color(".concat(t," ").concat(e.toFixed(3)," ").concat(i.toFixed(3)," ").concat(s.toFixed(3),")"):"rgb(".concat(Math.round(255*e),",").concat(Math.round(255*i),",").concat(Math.round(255*s),")")}offsetHSL(t,e,i){return this.getHSL(rg),this.setHSL(rg.h+t,rg.s+e,rg.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(rg),t.getHSL(rx);let i=iV(rg.h,rx.h,e),s=iV(rg.s,rx.s,e),r=iV(rg.l,rx.l,e);return this.setHSL(i,s,r),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){let e=this.r,i=this.g,s=this.b,r=t.elements;return this.r=r[0]*e+r[3]*i+r[6]*s,this.g=r[1]*e+r[4]*i+r[7]*s,this.b=r[2]*e+r[5]*i+r[8]*s,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}}let rw=new rb;rb.NAMES=rf;let rM=0;class rS extends iC{get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(let e in t){let i=t[e];if(void 0===i){console.warn("THREE.Material: parameter '".concat(e,"' has value of undefined."));continue}let s=this[e];if(void 0===s){console.warn("THREE.Material: '".concat(e,"' is not a property of THREE.").concat(this.type,"."));continue}s&&s.isColor?s.set(i):s&&s.isVector3&&i&&i.isVector3?s.copy(i):this[e]=i}}toJSON(t){let e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});let i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};function s(t){let e=[];for(let i in t){let s=t[i];delete s.metadata,e.push(s)}return e}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(t).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(t).uuid),void 0!==this.dispersion&&(i.dispersion=this.dispersion),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(i.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapRotation&&(i.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==S&&(i.blending=this.blending),this.side!==v&&(i.side=this.side),!0===this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=!0),this.blendSrc!==V&&(i.blendSrc=this.blendSrc),this.blendDst!==F&&(i.blendDst=this.blendDst),this.blendEquation!==I&&(i.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(i.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(i.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==Q&&(i.depthFunc=this.depthFunc),!1===this.depthTest&&(i.depthTest=this.depthTest),!1===this.depthWrite&&(i.depthWrite=this.depthWrite),!1===this.colorWrite&&(i.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==ii&&(i.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(i.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==eK&&(i.stencilFail=this.stencilFail),this.stencilZFail!==eK&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==eK&&(i.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(i.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaHash&&(i.alphaHash=!0),!0===this.alphaToCoverage&&(i.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=!0),!0===this.forceSinglePass&&(i.forceSinglePass=!0),!0===this.wireframe&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=!0),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),e){let e=s(t.textures),r=s(t.images);e.length>0&&(i.textures=e),r.length>0&&(i.images=r)}return i}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,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.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,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;let e=t.clippingPlanes,i=null;if(null!==e){let t=e.length;i=Array(t);for(let s=0;s!==t;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,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.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,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++}constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:rM++}),this.uuid=iO(),this.name="",this.type="Material",this.blending=S,this.side=v,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=V,this.blendDst=F,this.blendEquation=I,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new rb(0,0,0),this.blendAlpha=0,this.depthFunc=Q,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=ii,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=eK,this.stencilZFail=eK,this.stencilZPass=eK,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.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}}class r_ extends rS{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.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),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.fog=t.fog,this}constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new rb(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new sZ,this.combine=ti,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}}let rA=function(){let t=new ArrayBuffer(4),e=new Float32Array(t),i=new Uint32Array(t),s=new Uint32Array(512),r=new Uint32Array(512);for(let t=0;t<256;++t){let e=t-127;e<-27?(s[t]=0,s[256|t]=32768,r[t]=24,r[256|t]=24):e<-14?(s[t]=1024>>-e-14,s[256|t]=1024>>-e-14|32768,r[t]=-e-1,r[256|t]=-e-1):e<=15?(s[t]=e+15<<10,s[256|t]=e+15<<10|32768,r[t]=13,r[256|t]=13):e<128?(s[t]=31744,s[256|t]=64512,r[t]=24,r[256|t]=24):(s[t]=31744,s[256|t]=64512,r[t]=13,r[256|t]=13)}let n=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let t=1;t<1024;++t){let e=t<<13,i=0;for(;(8388608&e)==0;)e<<=1,i-=8388608;e&=-8388609,i+=0x38800000,n[t]=e|i}for(let t=1024;t<2048;++t)n[t]=0x38000000+(t-1024<<13);for(let t=1;t<31;++t)a[t]=t<<23;a[31]=0x47800000,a[32]=0x80000000;for(let t=33;t<63;++t)a[t]=0x80000000+(t-32<<23);a[63]=0xc7800000;for(let t=1;t<64;++t)32!==t&&(o[t]=1024);return{floatView:e,uint32View:i,baseTable:s,shiftTable:r,mantissaTable:n,exponentTable:a,offsetTable:o}}();function rT(t){Math.abs(t)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),t=iP(t,-65504,65504),rA.floatView[0]=t;let e=rA.uint32View[0],i=e>>23&511;return rA.baseTable[i]+((8388607&e)>>rA.shiftTable[i])}function rz(t){let e=t>>10;return rA.uint32View[0]=rA.mantissaTable[rA.offsetTable[e]+(1023&t)]+rA.exponentTable[e],rA.floatView[0]}class rI{static toHalfFloat(t){return rT(t)}static fromHalfFloat(t){return rz(t)}}let rC=new iD,rk=new iW,rB=0;class rR{onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let s=0,r=this.itemSize;s1&&void 0!==arguments[1]?arguments[1]:0;return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&&(i=iF(i,this.array)),i}setComponent(t,e,i){return this.normalized&&(i=iL(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=iF(e,this.array)),e}setX(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=iF(e,this.array)),e}setY(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=iF(e,this.array)),e}setZ(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=iF(e,this.array)),e}setW(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=iL(e,this.array),i=iL(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,s){return t*=this.itemSize,this.normalized&&(e=iL(e,this.array),i=iL(i,this.array),s=iL(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=s,this}setXYZW(t,e,i,s,r){return t*=this.itemSize,this.normalized&&(e=iL(e,this.array),i=iL(i,this.array),s=iL(s,this.array),r=iL(r,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=s,this.array[t+3]=r,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(t.name=this.name),this.usage!==id&&(t.usage=this.usage),t}constructor(t,e,i=!1){if(Array.isArray(t))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:rB++}),this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=i,this.usage=id,this.updateRanges=[],this.gpuType=tj,this.version=0}}class rE extends rR{constructor(t,e,i){super(new Int8Array(t),e,i)}}class rO extends rR{constructor(t,e,i){super(new Uint8Array(t),e,i)}}class rP extends rR{constructor(t,e,i){super(new Uint8ClampedArray(t),e,i)}}class rN extends rR{constructor(t,e,i){super(new Int16Array(t),e,i)}}class rV extends rR{constructor(t,e,i){super(new Uint16Array(t),e,i)}}class rF extends rR{constructor(t,e,i){super(new Int32Array(t),e,i)}}class rL extends rR{constructor(t,e,i){super(new Uint32Array(t),e,i)}}class rj extends rR{getX(t){let e=rz(this.array[t*this.itemSize]);return this.normalized&&(e=iF(e,this.array)),e}setX(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize]=rT(e),this}getY(t){let e=rz(this.array[t*this.itemSize+1]);return this.normalized&&(e=iF(e,this.array)),e}setY(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize+1]=rT(e),this}getZ(t){let e=rz(this.array[t*this.itemSize+2]);return this.normalized&&(e=iF(e,this.array)),e}setZ(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize+2]=rT(e),this}getW(t){let e=rz(this.array[t*this.itemSize+3]);return this.normalized&&(e=iF(e,this.array)),e}setW(t,e){return this.normalized&&(e=iL(e,this.array)),this.array[t*this.itemSize+3]=rT(e),this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=iL(e,this.array),i=iL(i,this.array)),this.array[t+0]=rT(e),this.array[t+1]=rT(i),this}setXYZ(t,e,i,s){return t*=this.itemSize,this.normalized&&(e=iL(e,this.array),i=iL(i,this.array),s=iL(s,this.array)),this.array[t+0]=rT(e),this.array[t+1]=rT(i),this.array[t+2]=rT(s),this}setXYZW(t,e,i,s,r){return t*=this.itemSize,this.normalized&&(e=iL(e,this.array),i=iL(i,this.array),s=iL(s,this.array),r=iL(r,this.array)),this.array[t+0]=rT(e),this.array[t+1]=rT(i),this.array[t+2]=rT(s),this.array[t+3]=rT(r),this}constructor(t,e,i){super(new Uint16Array(t),e,i),this.isFloat16BufferAttribute=!0}}class rW extends rR{constructor(t,e,i){super(new Float32Array(t),e,i)}}let rU=0,rD=new sF,rH=new re,rq=new iD,rJ=new sc,rX=new sc,rZ=new iD;class rY extends iC{getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(iZ(t)?rL:rV)(t,1):this.index=t,this}setIndirect(t){return this.indirect=t,this}getIndirect(){return this.indirect}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){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){let e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);let i=this.attributes.normal;if(void 0!==i){let e=new iJ().getNormalMatrix(t);i.applyNormalMatrix(e),i.needsUpdate=!0}let s=this.attributes.tangent;return void 0!==s&&(s.transformDirection(t),s.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(t){return rD.makeRotationFromQuaternion(t),this.applyMatrix4(rD),this}rotateX(t){return rD.makeRotationX(t),this.applyMatrix4(rD),this}rotateY(t){return rD.makeRotationY(t),this.applyMatrix4(rD),this}rotateZ(t){return rD.makeRotationZ(t),this.applyMatrix4(rD),this}translate(t,e,i){return rD.makeTranslation(t,e,i),this.applyMatrix4(rD),this}scale(t,e,i){return rD.makeScale(t,e,i),this.applyMatrix4(rD),this}lookAt(t){return rH.lookAt(t),rH.updateMatrix(),this.applyMatrix4(rH.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(rq).negate(),this.translate(rq.x,rq.y,rq.z),this}setFromPoints(t){let e=this.getAttribute("position");if(void 0===e){let e=[];for(let i=0,s=t.length;ie.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new sc);let t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new iD(-1/0,-1/0,-1/0),new iD(Infinity,Infinity,Infinity));return}if(void 0!==t){if(this.boundingBox.setFromBufferAttribute(t),e)for(let t=0,i=e.length;t0&&(t.userData=this.userData),void 0!==this.parameters){let e=this.parameters;for(let i in e)void 0!==e[i]&&(t[i]=e[i]);return t}t.data={attributes:{}};let e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let i=this.attributes;for(let e in i){let s=i[e];t.data.attributes[e]=s.toJSON(t.data)}let s={},r=!1;for(let e in this.morphAttributes){let i=this.morphAttributes[e],n=[];for(let e=0,s=i.length;e0&&(s[e]=n,r=!0)}r&&(t.data.morphAttributes=s,t.data.morphTargetsRelative=this.morphTargetsRelative);let n=this.groups;n.length>0&&(t.data.groups=JSON.parse(JSON.stringify(n)));let a=this.boundingSphere;return null!==a&&(t.data.boundingSphere=a.toJSON()),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;let e={};this.name=t.name;let i=t.index;null!==i&&this.setIndex(i.clone());let s=t.attributes;for(let t in s){let i=s[t];this.setAttribute(t,i.clone(e))}let r=t.morphAttributes;for(let t in r){let i=[],s=r[t];for(let t=0,r=s.length;t0){let i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=i.length;t(t.far-t.near)**2)||(rG.copy(r).invert(),rQ.copy(t.ray).applyMatrix4(rG),(null===i.boundingBox||!1!==rQ.intersectsBox(i.boundingBox))&&this._computeIntersections(t,e,rQ))}_computeIntersections(t,e,i){let s,r=this.geometry,n=this.material,a=r.index,o=r.attributes.position,h=r.attributes.uv,l=r.attributes.uv1,u=r.attributes.normal,c=r.groups,d=r.drawRange;if(null!==a)if(Array.isArray(n))for(let r=0,o=c.length;ri.far?null:{distance:h,point:r6.clone(),object:t}}(t,e,i,s,r0,r1,r2,r4);if(u){let t=new iD;ry.getBarycoord(r4,r0,r1,r2,t),r&&(u.uv=ry.getInterpolatedAttribute(r,o,h,l,t,new iW)),n&&(u.uv1=ry.getInterpolatedAttribute(n,o,h,l,t,new iW)),a&&(u.normal=ry.getInterpolatedAttribute(a,o,h,l,t,new iD),u.normal.dot(s.direction)>0&&u.normal.multiplyScalar(-1));let e={a:o,b:h,c:l,normal:new iD,materialIndex:0};ry.getNormal(r0,r1,r2,e.normal),u.face=e,u.barycoord=t}return u}class r7 extends rY{copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new r7(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}constructor(t=1,e=1,i=1,s=1,r=1,n=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:i,widthSegments:s,heightSegments:r,depthSegments:n};let a=this;s=Math.floor(s),r=Math.floor(r);let o=[],h=[],l=[],u=[],c=0,d=0;function p(t,e,i,s,r,n,p,m,y,f,g){let x=n/y,v=p/f,b=n/2,w=p/2,M=m/2,S=y+1,_=f+1,A=0,T=0,z=new iD;for(let n=0;n<_;n++){let a=n*v-w;for(let o=0;o0?1:-1,l.push(z.x,z.y,z.z),u.push(o/y),u.push(1-n/f),A+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;let i={};for(let t in this.extensions)!0===this.extensions[t]&&(i[t]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==t&&this.setValues(t)}}class nn extends re{get reversedDepth(){return this._reversedDepth}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}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)}constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new sF,this.projectionMatrix=new sF,this.projectionMatrixInverse=new sF,this.coordinateSystem=i_,this._reversedDepth=!1}}let na=new iD,no=new iW,nh=new iW;class nl extends nn{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){let e=.5*this.getFilmHeight()/t;this.fov=2*iE*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(.5*iR*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*iE*Math.atan(Math.tan(.5*iR*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,i){na.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(na.x,na.y).multiplyScalar(-t/na.z),na.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(na.x,na.y).multiplyScalar(-t/na.z)}getViewSize(t,e){return this.getViewBounds(t,no,nh),e.subVectors(nh,no)}setViewOffset(t,e,i,s,r,n){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=i,this.view.offsetY=s,this.view.width=r,this.view.height=n,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(.5*iR*this.fov)/this.zoom,i=2*e,s=this.aspect*i,r=-.5*s,n=this.view;if(null!==this.view&&this.view.enabled){let t=n.fullWidth,a=n.fullHeight;r+=n.offsetX*s/t,e-=n.offsetY*i/a,s*=n.width/t,i*=n.height/a}let a=this.filmOffset;0!==a&&(r+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+s,e,e-i,t,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let 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}constructor(t=50,e=1,i=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=i,this.far=s,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}}class nu extends re{updateCoordinateSystem(){let t=this.coordinateSystem,e=this.children.concat(),[i,s,r,n,a,o]=e;for(let t of e)this.remove(t);if(t===i_)i.up.set(0,1,0),i.lookAt(1,0,0),s.up.set(0,1,0),s.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),n.up.set(0,0,1),n.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else if(t===iA)i.up.set(0,-1,0),i.lookAt(-1,0,0),s.up.set(0,-1,0),s.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),n.up.set(0,0,-1),n.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1);else throw Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);for(let t of e)this.add(t),t.updateMatrixWorld()}update(t,e){null===this.parent&&this.updateMatrixWorld();let{renderTarget:i,activeMipmapLevel:s}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());let[r,n,a,o,h,l]=this.children,u=t.getRenderTarget(),c=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;let m=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,t.setRenderTarget(i,0,s),t.render(e,r),t.setRenderTarget(i,1,s),t.render(e,n),t.setRenderTarget(i,2,s),t.render(e,a),t.setRenderTarget(i,3,s),t.render(e,o),t.setRenderTarget(i,4,s),t.render(e,h),i.texture.generateMipmaps=m,t.setRenderTarget(i,5,s),t.render(e,l),t.setRenderTarget(u,c,d),t.xr.enabled=p,i.texture.needsPMREMUpdate=!0}constructor(t,e,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let s=new nl(-90,1,t,e);s.layers=this.layers,this.add(s);let r=new nl(-90,1,t,e);r.layers=this.layers,this.add(r);let n=new nl(-90,1,t,e);n.layers=this.layers,this.add(n);let a=new nl(-90,1,t,e);a.layers=this.layers,this.add(a);let o=new nl(-90,1,t,e);o.layers=this.layers,this.add(o);let h=new nl(-90,1,t,e);h.layers=this.layers,this.add(h)}}class nc extends ss{get images(){return this.image}set images(t){this.image=t}constructor(t=[],e=tf,i,s,r,n,a,o,h,l){super(t,e,i,s,r,n,a,o,h,l),this.isCubeTexture=!0,this.flipY=!1}}class nd extends sa{fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let i=new r7(5,5,5),s=new nr({name:"CubemapFromEquirect",uniforms:nt({tEquirect:{value:null}}),vertexShader:"\n\n varying vec3 vWorldDirection;\n\n vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n }\n\n void main() {\n\n vWorldDirection = transformDirection( position, modelMatrix );\n\n #include \n #include \n\n }\n ",fragmentShader:"\n\n uniform sampler2D tEquirect;\n\n varying vec3 vWorldDirection;\n\n #include \n\n void main() {\n\n vec3 direction = normalize( vWorldDirection );\n\n vec2 sampleUV = equirectUv( direction );\n\n gl_FragColor = texture2D( tEquirect, sampleUV );\n\n }\n ",side:b,blending:M});s.uniforms.tEquirect.value=e;let r=new r8(i,s),n=e.minFilter;return e.minFilter===tR&&(e.minFilter=tC),new nu(1,10,this).update(t,r),e.minFilter=n,r.geometry.dispose(),r.material.dispose(),this}clear(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1],i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],s=!(arguments.length>3)||void 0===arguments[3]||arguments[3],r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,i,s);t.setRenderTarget(r)}constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let i={width:t,height:t,depth:1};this.texture=new nc([i,i,i,i,i,i]),this._setTextureOptions(e),this.texture.isRenderTargetTexture=!0}}class np extends re{constructor(){super(),this.isGroup=!0,this.type="Group"}}let nm={type:"move"};class ny{getHandSpace(){return null===this._hand&&(this._hand=new np,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new np,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new iD,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new iD),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new np,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new iD,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new iD),this._grip}dispatchEvent(t){return null!==this._targetRay&&this._targetRay.dispatchEvent(t),null!==this._grip&&this._grip.dispatchEvent(t),null!==this._hand&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let i of t.hand.values())this._getHandJoint(e,i)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(t,e,i){let s=null,r=null,n=null,a=this._targetRay,o=this._grip,h=this._hand;if(t&&"visible-blurred"!==e.session.visibilityState){if(h&&t.hand){for(let s of(n=!0,t.hand.values())){let t=e.getJointPose(s,i),r=this._getHandJoint(h,s);null!==t&&(r.matrix.fromArray(t.transform.matrix),r.matrix.decompose(r.position,r.rotation,r.scale),r.matrixWorldNeedsUpdate=!0,r.jointRadius=t.radius),r.visible=null!==t}let s=h.joints["index-finger-tip"],r=h.joints["thumb-tip"],a=s.position.distanceTo(r.position);h.inputState.pinching&&a>.025?(h.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!h.inputState.pinching&&a<=.015&&(h.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&null!==(r=e.getPose(t.gripSpace,i))&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,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);null!==a&&(null===(s=e.getPose(t.targetRaySpace,i))&&null!==r&&(s=r),null!==s&&(a.matrix.fromArray(s.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,s.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(s.linearVelocity)):a.hasLinearVelocity=!1,s.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(s.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(nm)))}return null!==a&&(a.visible=null!==s),null!==o&&(o.visible=null!==r),null!==h&&(h.visible=null!==n),this}_getHandJoint(t,e){if(void 0===t.joints[e.jointName]){let i=new np;i.matrixAutoUpdate=!1,i.visible=!1,t.joints[e.jointName]=i,t.add(i)}return t.joints[e.jointName]}constructor(){this._targetRay=null,this._grip=null,this._hand=null}}class nf{clone(){return new nf(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}constructor(t,e=25e-5){this.isFogExp2=!0,this.name="",this.color=new rb(t),this.density=e}}class ng{clone(){return new ng(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}constructor(t,e=1,i=1e3){this.isFog=!0,this.name="",this.color=new rb(t),this.near=e,this.far=i}}class nx extends re{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()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),null!==t.overrideMaterial&&(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){let e=super.toJSON(t);return null!==this.fog&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),1!==this.environmentIntensity&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new sZ,this.environmentIntensity=1,this.environmentRotation=new sZ,this.overrideMaterial=null,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}}class nv{onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}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,i){t*=this.stride,i*=e.stride;for(let s=0,r=this.stride;s1&&void 0!==arguments[1]?arguments[1]:0;return this.array.set(t,e),this}clone(t){void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=iO()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let e=new this.array.constructor(t.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(e,this.stride);return i.setUsage(this.usage),i}onUpload(t){return this.onUploadCallback=t,this}toJSON(t){return void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=iO()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=id,this.updateRanges=[],this.version=0,this.uuid=iO()}}let nb=new iD;class nw{get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(t){this.data.needsUpdate=t}applyMatrix4(t){for(let e=0,i=this.data.count;et.far||e.push({distance:o,point:nS.clone(),uv:ry.getInterpolation(nS,nC,nk,nB,nR,nE,nO,new iW),face:null,object:this})}copy(t,e){return super.copy(t,e),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}constructor(t=new nM){if(super(),this.isSprite=!0,this.type="Sprite",void 0===r){r=new rY;let t=new nv(new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),5);r.setIndex([0,1,2,0,2,3]),r.setAttribute("position",new nw(t,3,0,!1)),r.setAttribute("uv",new nw(t,2,3,!1))}this.geometry=r,this.material=t,this.center=new iW(.5,.5),this.count=1}}function nN(t,e,i,s,r,n){nT.subVectors(t,i).addScalar(.5).multiply(s),void 0!==r?(nz.x=n*nT.x-r*nT.y,nz.y=r*nT.x+n*nT.y):nz.copy(nT),t.copy(e),t.x+=nz.x,t.y+=nz.y,t.applyMatrix4(nI)}let nV=new iD,nF=new iD;class nL extends re{copy(t){super.copy(t,!1);let e=t.levels;for(let t=0,i=e.length;t1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;i=Math.abs(i);let r=this.levels;for(e=0;e0){let i,s;for(i=1,s=e.length;i0){nV.setFromMatrixPosition(this.matrixWorld);let i=t.ray.origin.distanceTo(nV);this.getObjectForDistance(i).raycast(t,e)}}update(t){let e=this.levels;if(e.length>1){let i,s;nV.setFromMatrixPosition(t.matrixWorld),nF.setFromMatrixPosition(this.matrixWorld);let r=nV.distanceTo(nF)/t.zoom;for(i=1,e[0].object.visible=!0,s=e.length;i=t)e[i-1].object.visible=!1,e[i].object.visible=!0;else break}for(this._currentLevel=i-1;i1?null:e.copy(t.start).addScaledVector(i,r)}intersectsLine(t){let e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<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){let i=e||ai.getNormalMatrix(t),s=this.coplanarPoint(at).applyMatrix4(t),r=this.normal.applyMatrix3(i).normalize();return this.constant=-s.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)}constructor(t=new iD(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}}let ar=new sC,an=new iW(.5,.5),aa=new iD;class ao{set(t,e,i,s,r,n){let a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(i),a[3].copy(s),a[4].copy(r),a[5].copy(n),this}copy(t){let e=this.planes;for(let i=0;i<6;i++)e[i].copy(t.planes[i]);return this}setFromProjectionMatrix(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i_,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=this.planes,r=t.elements,n=r[0],a=r[1],o=r[2],h=r[3],l=r[4],u=r[5],c=r[6],d=r[7],p=r[8],m=r[9],y=r[10],f=r[11],g=r[12],x=r[13],v=r[14],b=r[15];if(s[0].setComponents(h-n,d-l,f-p,b-g).normalize(),s[1].setComponents(h+n,d+l,f+p,b+g).normalize(),s[2].setComponents(h+a,d+u,f+m,b+x).normalize(),s[3].setComponents(h-a,d-u,f-m,b-x).normalize(),i)s[4].setComponents(o,c,y,v).normalize(),s[5].setComponents(h-o,d-c,f-y,b-v).normalize();else if(s[4].setComponents(h-o,d-c,f-y,b-v).normalize(),e===i_)s[5].setComponents(h+o,d+c,f+y,b+v).normalize();else if(e===iA)s[5].setComponents(o,c,y,v).normalize();else throw Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(t){if(void 0!==t.boundingSphere)null===t.boundingSphere&&t.computeBoundingSphere(),ar.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{let e=t.geometry;null===e.boundingSphere&&e.computeBoundingSphere(),ar.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(ar)}intersectsSprite(t){return ar.center.set(0,0,0),ar.radius=.7071067811865476+an.distanceTo(t.center),ar.applyMatrix4(t.matrixWorld),this.intersectsSphere(ar)}intersectsSphere(t){let e=this.planes,i=t.center,s=-t.radius;for(let t=0;t<6;t++)if(e[t].distanceToPoint(i)0?t.max.x:t.min.x,aa.y=s.normal.y>0?t.max.y:t.min.y,aa.z=s.normal.z>0?t.max.z:t.min.z,0>s.distanceToPoint(aa))return!1}return!0}containsPoint(t){let e=this.planes;for(let i=0;i<6;i++)if(0>e[i].distanceToPoint(t))return!1;return!0}clone(){return new this.constructor().copy(this)}constructor(t=new as,e=new as,i=new as,s=new as,r=new as,n=new as){this.planes=[t,e,i,s,r,n]}}let ah=new sF,al=new ao;class au{intersectsObject(t,e){if(!e.isArrayCamera||0===e.cameras.length)return!1;for(let i=0;i=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});let a=r[this.index];n.push(a),this.index++,a.start=t,a.count=e,a.z=i,a.index=s}reset(){this.list.length=0,this.index=0}constructor(){this.index=0,this.pool=[],this.list=[]}}let ay=new sF,af=new rb(1,1,1),ag=new ao,ax=new au,av=new sc,ab=new sC,aw=new iD,aM=new iD,aS=new iD,a_=new am,aA=new r8,aT=[];function az(t,e){if(t.constructor!==e.constructor){let i=Math.min(t.length,e.length);for(let s=0;s65535?new Uint32Array(s):new Uint16Array(s);e.setIndex(new rR(t,1))}this._geometryInitialized=!0}}_validateGeometry(t){let e=this.geometry;if(!!t.getIndex()!=!!e.getIndex())throw Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(let i in e.attributes){if(!t.hasAttribute(i))throw Error('THREE.BatchedMesh: Added geometry missing "'.concat(i,'". All geometries must have consistent attributes.'));let s=t.getAttribute(i),r=e.getAttribute(i);if(s.itemSize!==r.itemSize||s.normalized!==r.normalized)throw Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(t){let e=this._instanceInfo;if(t<0||t>=e.length||!1===e[t].active)throw Error("THREE.BatchedMesh: Invalid instanceId ".concat(t,". Instance is either out of range or has been deleted."))}validateGeometryId(t){let e=this._geometryInfo;if(t<0||t>=e.length||!1===e[t].active)throw Error("THREE.BatchedMesh: Invalid geometryId ".concat(t,". Geometry is either out of range or has been deleted."))}setCustomSort(t){return this.customSort=t,this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new sc);let t=this.boundingBox,e=this._instanceInfo;t.makeEmpty();for(let i=0,s=e.length;i=this.maxInstanceCount&&0===this._availableInstanceIds.length)throw Error("THREE.BatchedMesh: Maximum item count reached.");let e={visible:!0,active:!0,geometryIndex:t},i=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(ac),i=this._availableInstanceIds.shift(),this._instanceInfo[i]=e):(i=this._instanceInfo.length,this._instanceInfo.push(e));let s=this._matricesTexture;ay.identity().toArray(s.image.data,16*i),s.needsUpdate=!0;let r=this._colorsTexture;return r&&(af.toArray(r.image.data,4*i),r.needsUpdate=!0),this._visibilityChanged=!0,i}addGeometry(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1;this._initializeGeometry(t),this._validateGeometry(t);let r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},n=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=-1===i?t.getAttribute("position").count:i;let a=t.getIndex();if(null!==a&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=-1===s?a.count:s),-1!==r.indexStart&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(ac),n[e=this._availableGeometryIds.shift()]=r):(e=this._geometryCount,this._geometryCount++,n.push(r)),this.setGeometryAt(e,t),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,e}setGeometryAt(t,e){if(t>=this._geometryCount)throw Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(e);let i=this.geometry,s=null!==i.getIndex(),r=i.getIndex(),n=e.getIndex(),a=this._geometryInfo[t];if(s&&n.count>a.reservedIndexCount||e.attributes.position.count>a.reservedVertexCount)throw Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");let o=a.vertexStart,h=a.reservedVertexCount;for(let t in a.vertexCount=e.getAttribute("position").count,i.attributes){let s=e.getAttribute(t),r=i.getAttribute(t);!function(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=e.itemSize;if(t.isInterleavedBufferAttribute||t.array.constructor!==e.array.constructor){let r=t.count;for(let n=0;n=e.length||!1===e[t].active)return this;let i=this._instanceInfo;for(let e=0,s=i.length;ee).sort((t,e)=>i[t].vertexStart-i[e].vertexStart),r=this.geometry;for(let n=0,a=i.length;n=this._geometryCount)return null;let i=this.geometry,s=this._geometryInfo[t];if(null===s.boundingBox){let t=new sc,e=i.index,r=i.attributes.position;for(let i=s.start,n=s.start+s.count;i=this._geometryCount)return null;let i=this.geometry,s=this._geometryInfo[t];if(null===s.boundingSphere){let e=new sC;this.getBoundingBoxAt(t,av),av.getCenter(e.center);let r=i.index,n=i.attributes.position,a=0;for(let t=s.start,i=s.start+s.count;t1&&void 0!==arguments[1]?arguments[1]:{};this.validateGeometryId(t);let i=this._geometryInfo[t];return e.vertexStart=i.vertexStart,e.vertexCount=i.vertexCount,e.reservedVertexCount=i.reservedVertexCount,e.indexStart=i.indexStart,e.indexCount=i.indexCount,e.reservedIndexCount=i.reservedIndexCount,e.start=i.start,e.count=i.count,e}setInstanceCount(t){let e=this._availableInstanceIds,i=this._instanceInfo;for(e.sort(ac);e[e.length-1]===i.length-1;)i.pop(),e.pop();if(tt.active);if(Math.max(...i.map(t=>t.vertexStart+t.reservedVertexCount))>t)throw Error("BatchedMesh: Geometry vertex values are being used outside the range ".concat(e,". Cannot shrink further."));if(this.geometry.index&&Math.max(...i.map(t=>t.indexStart+t.reservedIndexCount))>e)throw Error("BatchedMesh: Geometry index values are being used outside the range ".concat(e,". Cannot shrink further."));let s=this.geometry;s.dispose(),this._maxVertexCount=t,this._maxIndexCount=e,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new rY,this._initializeGeometry(s));let r=this.geometry;for(let t in s.index&&az(s.index.array,r.index.array),s.attributes)az(s.attributes[t].array,r.attributes[t].array)}raycast(t,e){let i=this._instanceInfo,s=this._geometryInfo,r=this.matrixWorld,n=this.geometry;aA.material=this.material,aA.geometry.index=n.index,aA.geometry.attributes=n.attributes,null===aA.geometry.boundingBox&&(aA.geometry.boundingBox=new sc),null===aA.geometry.boundingSphere&&(aA.geometry.boundingSphere=new sC);for(let n=0,a=i.length;n({...t,boundingBox:null!==t.boundingBox?t.boundingBox.clone():null,boundingSphere:null!==t.boundingSphere?t.boundingSphere.clone():null})),this._instanceInfo=t._instanceInfo.map(t=>({...t})),this._availableInstanceIds=t._availableInstanceIds.slice(),this._availableGeometryIds=t._availableGeometryIds.slice(),this._nextIndexStart=t._nextIndexStart,this._nextVertexStart=t._nextVertexStart,this._geometryCount=t._geometryCount,this._maxInstanceCount=t._maxInstanceCount,this._maxVertexCount=t._maxVertexCount,this._maxIndexCount=t._maxIndexCount,this._geometryInitialized=t._geometryInitialized,this._multiDrawCounts=t._multiDrawCounts.slice(),this._multiDrawStarts=t._multiDrawStarts.slice(),this._indirectTexture=t._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=t._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),null!==this._colorsTexture&&(this._colorsTexture=t._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,null!==this._colorsTexture&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(t,e,i,s,r){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;let n=s.getIndex(),a=null===n?1:n.array.BYTES_PER_ELEMENT,o=this._instanceInfo,h=this._multiDrawStarts,l=this._multiDrawCounts,u=this._geometryInfo,c=this.perObjectFrustumCulled,d=this._indirectTexture,p=d.image.data,m=i.isArrayCamera?ax:ag;c&&!i.isArrayCamera&&(ay.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse).multiply(this.matrixWorld),ag.setFromProjectionMatrix(ay,i.coordinateSystem,i.reversedDepth));let y=0;if(this.sortObjects){ay.copy(this.matrixWorld).invert(),aw.setFromMatrixPosition(i.matrixWorld).applyMatrix4(ay),aM.set(0,0,-1).transformDirection(i.matrixWorld).transformDirection(ay);for(let t=0,e=o.length;t0){let i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=i.length;ts)return;aP.applyMatrix4(t.matrixWorld);let h=e.ray.origin.distanceTo(aP);if(!(he.far))return{distance:h,point:aN.clone().applyMatrix4(t.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:t}}let aL=new iD,aj=new iD;class aW extends aV{computeLineDistances(){let t=this.geometry;if(null===t.index){let e=t.attributes.position,i=[];for(let t=0,s=e.count;t0){let i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=i.length;tr.far)return;n.push({distance:h,distanceToRay:Math.sqrt(o),point:i,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}class aG extends ss{clone(){return new this.constructor(this.image).copy(this)}update(){let t=this.image;!1=="requestVideoFrameCallback"in t&&t.readyState>=t.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){0!==this._requestVideoFrameCallbackId&&this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),super.dispose()}constructor(t,e,i,s,r=tC,n=tC,a,o,h){super(t,e,i,s,r,n,a,o,h),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;let l=this;"requestVideoFrameCallback"in t&&(this._requestVideoFrameCallbackId=t.requestVideoFrameCallback(function e(){l.needsUpdate=!0,l._requestVideoFrameCallbackId=t.requestVideoFrameCallback(e)}))}}class aQ extends aG{update(){}clone(){return new this.constructor().copy(this)}setFrame(t){this.image=t,this.needsUpdate=!0}constructor(t,e,i,s,r,n,a,o){super({},t,e,i,s,r,n,a,o),this.isVideoFrameTexture=!0}}class aK extends ss{constructor(t,e){super({width:t,height:e}),this.isFramebufferTexture=!0,this.magFilter=t_,this.minFilter=t_,this.generateMipmaps=!1,this.needsUpdate=!0}}class a$ extends ss{constructor(t,e,i,s,r,n,a,o,h,l,u,c){super(null,n,a,o,h,l,s,r,u,c),this.isCompressedTexture=!0,this.image={width:e,height:i},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}}class a0 extends a${addLayerUpdate(t){this.layerUpdates.add(t)}clearLayerUpdates(){this.layerUpdates.clear()}constructor(t,e,i,s,r,n){super(t,e,i,r,n),this.isCompressedArrayTexture=!0,this.image.depth=s,this.wrapR=tM,this.layerUpdates=new Set}}class a1 extends a${constructor(t,e,i){super(void 0,t[0].width,t[0].height,e,i,tf),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=t}}class a2 extends ss{constructor(t,e,i,s,r,n,a,o,h){super(t,e,i,s,r,n,a,o,h),this.isCanvasTexture=!0,this.needsUpdate=!0}}class a3 extends ss{copy(t){return super.copy(t),this.source=new i7(Object.assign({},t.image)),this.compareFunction=t.compareFunction,this}toJSON(t){let e=super.toJSON(t);return null!==this.compareFunction&&(e.compareFunction=this.compareFunction),e}constructor(t,e,i=tL,s,r,n,a=t_,o=t_,h,l=tG,u=1){if(l!==tG&&l!==tQ)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");super({width:t,height:e,depth:u},s,r,n,a,o,l,i,h),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}}class a5 extends ss{copy(t){return super.copy(t),this.sourceTexture=t.sourceTexture,this}constructor(t=null){super(),this.sourceTexture=t,this.isExternalTexture=!0}}class a4 extends rY{copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new a4(t.radius,t.height,t.capSegments,t.radialSegments,t.heightSegments)}constructor(t=1,e=1,i=4,s=8,r=1){super(),this.type="CapsuleGeometry",this.parameters={radius:t,height:e,capSegments:i,radialSegments:s,heightSegments:r},e=Math.max(0,e),i=Math.max(1,Math.floor(i)),s=Math.max(3,Math.floor(s));let n=[],a=[],o=[],h=[],l=e/2,u=Math.PI/2*t,c=e,d=2*u+c,p=2*i+(r=Math.max(1,Math.floor(r))),m=s+1,y=new iD,f=new iD;for(let g=0;g<=p;g++){let x=0,v=0,b=0,w=0;if(g<=i){let e=g/i,s=e*Math.PI/2;v=-l-t*Math.cos(s),b=t*Math.sin(s),w=-t*Math.cos(s),x=e*u}else if(g<=i+r){let s=(g-i)/r;v=-l+s*e,b=t,w=0,x=u+s*c}else{let e=(g-i-r)/i,s=e*Math.PI/2;v=l+t*Math.sin(s),b=t*Math.cos(s),w=t*Math.sin(s),x=u+c+e*u}let M=Math.max(0,Math.min(1,x/d)),S=0;0===g?S=.5/s:g===p&&(S=-.5/s);for(let t=0;t<=s;t++){let e=t/s,i=e*Math.PI*2,r=Math.sin(i),n=Math.cos(i);f.x=-b*n,f.y=v,f.z=b*r,a.push(f.x,f.y,f.z),y.set(-b*n,w,b*r),y.normalize(),o.push(y.x,y.y,y.z),h.push(e+S,M)}if(g>0){let t=(g-1)*m;for(let e=0;e0||0!==s)&&(l.push(n,a,h),x+=3),(e>0||s!==r-1)&&(l.push(a,o,h),x+=3)}h.addGroup(f,x,0),f+=x})(),!1===n&&(t>0&&g(!0),e>0&&g(!1)),this.setIndex(l),this.setAttribute("position",new rW(u,3)),this.setAttribute("normal",new rW(c,3)),this.setAttribute("uv",new rW(d,2))}}class a9 extends a8{static fromJSON(t){return new a9(t.radius,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}constructor(t=1,e=1,i=32,s=1,r=!1,n=0,a=2*Math.PI){super(0,t,e,i,s,r,n,a),this.type="ConeGeometry",this.parameters={radius:t,height:e,radialSegments:i,heightSegments:s,openEnded:r,thetaStart:n,thetaLength:a}}}class a7 extends rY{copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new a7(t.vertices,t.indices,t.radius,t.details)}constructor(t=[],e=[],i=1,s=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:t,indices:e,radius:i,detail:s};let r=[],n=[];function a(t){r.push(t.x,t.y,t.z)}function o(e,i){let s=3*e;i.x=t[s+0],i.y=t[s+1],i.z=t[s+2]}function h(t,e,i,s){s<0&&1===t.x&&(n[e]=t.x-1),0===i.x&&0===i.z&&(n[e]=s/2/Math.PI+.5)}function l(t){return Math.atan2(t.z,-t.x)}(function(t){let i=new iD,s=new iD,r=new iD;for(let n=0;n.9&&a<.1&&(e<.2&&(n[t+0]+=1),i<.2&&(n[t+2]+=1),s<.2&&(n[t+4]+=1))}}()}(),this.setAttribute("position",new rW(r,3)),this.setAttribute("normal",new rW(r.slice(),3)),this.setAttribute("uv",new rW(n,2)),0===s?this.computeVertexNormals():this.normalizeNormals()}}class ot extends a7{static fromJSON(t){return new ot(t.radius,t.detail)}constructor(t=1,e=0){let i=(1+Math.sqrt(5))/2,s=1/i;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,-s,-i,0,-s,i,0,s,-i,0,s,i,-s,-i,0,-s,i,0,s,-i,0,s,i,0,-i,0,-s,i,0,-s,-i,0,s,i,0,s],[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}}}let oe=new iD,oi=new iD,os=new iD,or=new ry;class on extends rY{copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}constructor(t=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:t,thresholdAngle:e},null!==t){let i=Math.cos(iR*e),s=t.getIndex(),r=t.getAttribute("position"),n=s?s.count:r.count,a=[0,0,0],o=["a","b","c"],h=[,,,],l={},u=[];for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:5,e=[];for(let i=0;i<=t;i++)e.push(this.getPoint(i/t));return e}getSpacedPoints(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,e=[];for(let i=0;i<=t;i++)e.push(this.getPointAt(i/t));return e}getLength(){let t=this.getLengths();return t[t.length-1]}getLengths(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.arcLengthDivisions;if(this.cacheArcLengths&&this.cacheArcLengths.length===t+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let e=[],i,s=this.getPoint(0),r=0;e.push(0);for(let n=1;n<=t;n++)e.push(r+=(i=this.getPoint(n/t)).distanceTo(s)),s=i;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=this.getLengths(),r=0,n=s.length;e=i||t*s[n-1];let a=0,o=n-1,h;for(;a<=o;)if((h=s[r=Math.floor(a+(o-a)/2)]-e)<0)a=r+1;else if(h>0)o=r-1;else{o=r;break}if(s[r=o]===e)return r/(n-1);let l=s[r],u=s[r+1];return(r+(e-l)/(u-l))/(n-1)}getTangent(t,e){let i=t-1e-4,s=t+1e-4;i<0&&(i=0),s>1&&(s=1);let r=this.getPoint(i),n=this.getPoint(s),a=e||(r.isVector2?new iW:new iD);return a.copy(n).sub(r).normalize(),a}getTangentAt(t,e){let i=this.getUtoTmapping(t);return this.getTangent(i,e)}computeFrenetFrames(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=new iD,s=[],r=[],n=[],a=new iD,o=new sF;for(let e=0;e<=t;e++){let i=e/t;s[e]=this.getTangentAt(i,new iD)}r[0]=new iD,n[0]=new iD;let h=Number.MAX_VALUE,l=Math.abs(s[0].x),u=Math.abs(s[0].y),c=Math.abs(s[0].z);l<=h&&(h=l,i.set(1,0,0)),u<=h&&(h=u,i.set(0,1,0)),c<=h&&i.set(0,0,1),a.crossVectors(s[0],i).normalize(),r[0].crossVectors(s[0],a),n[0].crossVectors(s[0],r[0]);for(let e=1;e<=t;e++){if(r[e]=r[e-1].clone(),n[e]=n[e-1].clone(),a.crossVectors(s[e-1],s[e]),a.length()>Number.EPSILON){a.normalize();let t=Math.acos(iP(s[e-1].dot(s[e]),-1,1));r[e].applyMatrix4(o.makeRotationAxis(a,t))}n[e].crossVectors(s[e],r[e])}if(!0===e){let e=Math.acos(iP(r[0].dot(r[t]),-1,1));e/=t,s[0].dot(a.crossVectors(r[0],r[t]))>0&&(e=-e);for(let i=1;i<=t;i++)r[i].applyMatrix4(o.makeRotationAxis(s[i],e*i)),n[i].crossVectors(s[i],r[i])}return{tangents:s,normals:r,binormals:n}}clone(){return new this.constructor().copy(this)}copy(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}toJSON(){let t={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t}fromJSON(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}constructor(){this.type="Curve",this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}}class oo extends oa{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iW,i=2*Math.PI,s=this.aEndAngle-this.aStartAngle,r=Math.abs(s)i;)s-=i;s1&&void 0!==arguments[1]?arguments[1]:new iD,r=this.points,n=r.length,a=(n-!this.closed)*t,o=Math.floor(a),h=a-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/n)+1)*n:0===h&&o===n-1&&(o=n-2,h=1),this.closed||o>0?e=r[(o-1)%n]:(ou.subVectors(r[0],r[1]).add(r[0]),e=ou);let l=r[o%n],u=r[(o+1)%n];if(this.closed||o+21&&void 0!==arguments[1]?arguments[1]:new iW,i=this.v0,s=this.v1,r=this.v2,n=this.v3;return e.set(og(t,i.x,s.x,r.x,n.x),og(t,i.y,s.y,r.y,n.y)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}constructor(t=new iW,e=new iW,i=new iW,s=new iW){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=t,this.v1=e,this.v2=i,this.v3=s}}class ov extends oa{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iD,i=this.v0,s=this.v1,r=this.v2,n=this.v3;return e.set(og(t,i.x,s.x,r.x,n.x),og(t,i.y,s.y,r.y,n.y),og(t,i.z,s.z,r.z,n.z)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}constructor(t=new iD,e=new iD,i=new iD,s=new iD){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=t,this.v1=e,this.v2=i,this.v3=s}}class ob extends oa{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iW;return 1===t?e.copy(this.v2):(e.copy(this.v2).sub(this.v1),e.multiplyScalar(t).add(this.v1)),e}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iW;return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new iW,e=new iW){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=t,this.v2=e}}class ow extends oa{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iD;return 1===t?e.copy(this.v2):(e.copy(this.v2).sub(this.v1),e.multiplyScalar(t).add(this.v1)),e}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iD;return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new iD,e=new iD){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=t,this.v2=e}}class oM extends oa{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iW,i=this.v0,s=this.v1,r=this.v2;return e.set(of(t,i.x,s.x,r.x),of(t,i.y,s.y,r.y)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new iW,e=new iW,i=new iW){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=t,this.v1=e,this.v2=i}}class oS extends oa{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iD,i=this.v0,s=this.v1,r=this.v2;return e.set(of(t,i.x,s.x,r.x),of(t,i.y,s.y,r.y),of(t,i.z,s.z,r.z)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new iD,e=new iD,i=new iD){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=t,this.v1=e,this.v2=i}}class o_ extends oa{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new iW,i=this.points,s=(i.length-1)*t,r=Math.floor(s),n=s-r,a=i[0===r?r:r-1],o=i[r],h=i[r>i.length-2?i.length-1:r+1],l=i[r>i.length-3?i.length-1:r+2];return e.set(oy(n,a.x,o.x,h.x,l.x),oy(n,a.y,o.y,h.y,l.y)),e}copy(t){super.copy(t),this.points=[];for(let e=0,i=t.points.length;e=i){let t=s[r]-i,n=this.curves[r],a=n.getLength(),o=0===a?0:1-t/a;return n.getPointAt(o,e)}r++}return null}getLength(){let 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;let t=[],e=0;for(let i=0,s=this.curves.length;i0&&void 0!==arguments[0]?arguments[0]:40,e=[];for(let i=0;i<=t;i++)e.push(this.getPoint(i/t));return this.autoClose&&e.push(e[0]),e}getPoints(){let t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,i=[];for(let s=0,r=this.curves;s1&&!i[i.length-1].equals(i[0])&&i.push(i[0]),i}copy(t){super.copy(t),this.curves=[];for(let e=0,i=t.curves.length;e0){let t=h.getPoint(0);t.equals(this.currentPoint)||this.lineTo(t.x,t.y)}this.curves.push(h);let l=h.getPoint(1);return this.currentPoint.copy(l),this}copy(t){return super.copy(t),this.currentPoint.copy(t.currentPoint),this}toJSON(){let t=super.toJSON();return t.currentPoint=this.currentPoint.toArray(),t}fromJSON(t){return super.fromJSON(t),this.currentPoint.fromArray(t.currentPoint),this}constructor(t){super(),this.type="Path",this.currentPoint=new iW,t&&this.setFromPoints(t)}}class oI extends oz{getPointsHoles(t){let e=[];for(let i=0,s=this.holes.length;i0)for(let r=e;r=e;r-=s)n=oU(r/s|0,t[r],t[r+1],n);return n&&oN(n,n.next)&&(oD(n),n=n.next),n}function ok(t,e){if(!t)return t;e||(e=t);let i=t,s;do if(s=!1,!i.steiner&&(oN(i,i.next)||0===oP(i.prev,i,i.next))){if(oD(i),(i=e=i.prev)===i.next)break;s=!0}else i=i.next;while(s||i!==e);return e}function oB(t,e){let i=t.x-e.x;return 0===i&&0==(i=t.y-e.y)&&(i=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)),i}function oR(t,e,i,s,r){return(t=((t=((t=((t=((t=(t-i)*r|0)|t<<8)&0xff00ff)|t<<4)&0xf0f0f0f)|t<<2)&0x33333333)|t<<1)&0x55555555)|(e=((e=((e=((e=((e=(e-s)*r|0)|e<<8)&0xff00ff)|e<<4)&0xf0f0f0f)|e<<2)&0x33333333)|e<<1)&0x55555555)<<1}function oE(t,e,i,s,r,n,a,o){return(r-a)*(e-o)>=(t-a)*(n-o)&&(t-a)*(s-o)>=(i-a)*(e-o)&&(i-a)*(n-o)>=(r-a)*(s-o)}function oO(t,e,i,s,r,n,a,o){return(t!==a||e!==o)&&oE(t,e,i,s,r,n,a,o)}function oP(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function oN(t,e){return t.x===e.x&&t.y===e.y}function oV(t,e,i,s){let r=oL(oP(t,e,i)),n=oL(oP(t,e,s)),a=oL(oP(i,s,t)),o=oL(oP(i,s,e));return!!(r!==n&&a!==o||0===r&&oF(t,i,e)||0===n&&oF(t,s,e)||0===a&&oF(i,t,s)||0===o&&oF(i,e,s))}function oF(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function oL(t){return t>0?1:t<0?-1:0}function oj(t,e){return 0>oP(t.prev,t,t.next)?oP(t,e,t.next)>=0&&oP(t,t.prev,e)>=0:0>oP(t,e,t.prev)||0>oP(t,t.next,e)}function oW(t,e){let i=oH(t.i,t.x,t.y),s=oH(e.i,e.x,e.y),r=t.next,n=e.prev;return t.next=e,e.prev=t,i.next=r,r.prev=i,s.next=i,i.prev=s,n.next=s,s.prev=n,s}function oU(t,e,i,s){let r=oH(t,e,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function oD(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 oH(t,e,i){return{i:t,x:e,y:i,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class oq{static triangulate(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2;return function(t,e){let i,s,r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,a=e&&e.length,o=a?e[0]*n:t.length,h=oC(t,0,o,n,!0),l=[];if(!h||h.next===h.prev)return l;if(a&&(h=function(t,e,i,s){let r=[];for(let i=0,n=e.length;i=s.next.y&&s.next.y!==s.y){let t=s.x+(n-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(t<=r&&t>a&&(a=t,i=s.x=s.x&&s.x>=h&&r!==s.x&&oE(ni.x||s.x===i.x&&(c=i,d=s,0>oP(c.prev,c,d.prev)&&0>oP(d.next,c,c.next))))&&(i=s,u=e)}s=s.next}while(s!==o);return i}(t,e);if(!i)return e;let s=oW(i,t);return ok(s,s.next),ok(i,i.next)}(r[t],i);return i}(t,e,h,n)),t.length>80*n){i=1/0,s=1/0;let e=-1/0,a=-1/0;for(let r=n;re&&(e=n),o>a&&(a=o)}r=0!==(r=Math.max(e-i,a-s))?32767/r:0}return function t(e,i,s,r,n,a,o){if(!e)return;!o&&a&&function(t,e,i,s){let r=t;do 0===r.z&&(r.z=oR(r.x,r.y,e,i,s)),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,i=1;do{let s,r=t;t=null;let n=null;for(e=0;r;){e++;let a=r,o=0;for(let t=0;t0||h>0&&a;)0!==o&&(0===h||!a||r.z<=a.z)?(s=r,r=r.nextZ,o--):(s=a,a=a.nextZ,h--),n?n.nextZ=s:t=s,s.prevZ=n,n=s;r=a}n.nextZ=null,i*=2}while(e>1)}(r)}(e,r,n,a);let h=e;for(;e.prev!==e.next;){let l=e.prev,u=e.next;if(a?function(t,e,i,s){let r=t.prev,n=t.next;if(oP(r,t,n)>=0)return!1;let a=r.x,o=t.x,h=n.x,l=r.y,u=t.y,c=n.y,d=Math.min(a,o,h),p=Math.min(l,u,c),m=Math.max(a,o,h),y=Math.max(l,u,c),f=oR(d,p,e,i,s),g=oR(m,y,e,i,s),x=t.prevZ,v=t.nextZ;for(;x&&x.z>=f&&v&&v.z<=g;){if(x.x>=d&&x.x<=m&&x.y>=p&&x.y<=y&&x!==r&&x!==n&&oO(a,l,o,u,h,c,x.x,x.y)&&oP(x.prev,x,x.next)>=0||(x=x.prevZ,v.x>=d&&v.x<=m&&v.y>=p&&v.y<=y&&v!==r&&v!==n&&oO(a,l,o,u,h,c,v.x,v.y)&&oP(v.prev,v,v.next)>=0))return!1;v=v.nextZ}for(;x&&x.z>=f;){if(x.x>=d&&x.x<=m&&x.y>=p&&x.y<=y&&x!==r&&x!==n&&oO(a,l,o,u,h,c,x.x,x.y)&&oP(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;v&&v.z<=g;){if(v.x>=d&&v.x<=m&&v.y>=p&&v.y<=y&&v!==r&&v!==n&&oO(a,l,o,u,h,c,v.x,v.y)&&oP(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}(e,r,n,a):function(t){let e=t.prev,i=t.next;if(oP(e,t,i)>=0)return!1;let s=e.x,r=t.x,n=i.x,a=e.y,o=t.y,h=i.y,l=Math.min(s,r,n),u=Math.min(a,o,h),c=Math.max(s,r,n),d=Math.max(a,o,h),p=i.next;for(;p!==e;){if(p.x>=l&&p.x<=c&&p.y>=u&&p.y<=d&&oO(s,a,r,o,n,h,p.x,p.y)&&oP(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}(e)){i.push(l.i,e.i,u.i),oD(e),e=u.next,h=u.next;continue}if((e=u)===h){o?1===o?t(e=function(t,e){let i=t;do{let s=i.prev,r=i.next.next;!oN(s,r)&&oV(s,i,i.next,r)&&oj(s,r)&&oj(r,s)&&(e.push(s.i,i.i,r.i),oD(i),oD(i.next),i=t=r),i=i.next}while(i!==t);return ok(i)}(ok(e),i),i,s,r,n,a,2):2===o&&function(e,i,s,r,n,a){let o=e;do{let e=o.next.next;for(;e!==o.prev;){var h,l;if(o.i!==e.i&&(h=o,l=e,h.next.i!==l.i&&h.prev.i!==l.i&&!function(t,e){let i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&oV(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}(h,l)&&(oj(h,l)&&oj(l,h)&&function(t,e){let i=t,s=!1,r=(t.x+e.x)/2,n=(t.y+e.y)/2;do i.y>n!=i.next.y>n&&i.next.y!==i.y&&r<(i.next.x-i.x)*(n-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next;while(i!==t);return s}(h,l)&&(oP(h.prev,h,l.prev)||oP(h,l.prev,l))||oN(h,l)&&oP(h.prev,h,h.next)>0&&oP(l.prev,l,l.next)>0))){let h=oW(o,e);o=ok(o,o.next),h=ok(h,h.next),t(o,i,s,r,n,a,0),t(h,i,s,r,n,a,0);return}e=e.next}o=o.next}while(o!==e)}(e,i,s,r,n,a):t(ok(e),i,s,r,n,a,1);break}}}(h,l,n,i,s,r,0),l}(t,e,i)}}class oJ{static area(t){let e=t.length,i=0;for(let s=e-1,r=0;roJ.area(t)}static triangulateShape(t,e){let i=[],s=[],r=[];oX(t),oZ(i,t);let n=t.length;e.forEach(oX);for(let t=0;t2&&t[e-1].equals(t[0])&&t.pop()}function oZ(t,e){for(let i=0;iNumber.EPSILON){let c=Math.sqrt(u),d=Math.sqrt(h*h+l*l),p=e.x-o/c,m=e.y+a/c,y=((i.x-l/d-p)*l-(i.y+h/d-m)*h)/(a*l-o*h),f=(s=p+a*y-t.x)*s+(r=m+o*y-t.y)*r;if(f<=2)return new iW(s,r);n=Math.sqrt(f/2)}else{let t=!1;a>Number.EPSILON?h>Number.EPSILON&&(t=!0):a<-Number.EPSILON?h<-Number.EPSILON&&(t=!0):Math.sign(o)===Math.sign(l)&&(t=!0),t?(s=-o,r=a,n=Math.sqrt(u)):(s=a,r=o,n=Math.sqrt(u/2))}return new iW(s/n,r/n)}let R=[];for(let t=0,e=I.length,i=e-1,s=t+1;t=0;t--){let e=t/x,i=y*Math.cos(e*Math.PI/2),s=f*Math.sin(e*Math.PI/2)+g;for(let t=0,e=I.length;t=0;){let n=r,a=r-1;a<0&&(a=t.length-1);for(let t=0,r=d+2*x;t0)&&d.push(e,r,h),(t!==i-1||o0!=t>0&&this.version++,this._anisotropy=t}get clearcoat(){return this._clearcoat}set clearcoat(t){this._clearcoat>0!=t>0&&this.version++,this._clearcoat=t}get iridescence(){return this._iridescence}set iridescence(t){this._iridescence>0!=t>0&&this.version++,this._iridescence=t}get dispersion(){return this._dispersion}set dispersion(t){this._dispersion>0!=t>0&&this.version++,this._dispersion=t}get sheen(){return this._sheen}set sheen(t){this._sheen>0!=t>0&&this.version++,this._sheen=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.anisotropy=t.anisotropy,this.anisotropyRotation=t.anisotropyRotation,this.anisotropyMap=t.anisotropyMap,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.dispersion=t.dispersion,this.ior=t.ior,this.iridescence=t.iridescence,this.iridescenceMap=t.iridescenceMap,this.iridescenceIOR=t.iridescenceIOR,this.iridescenceThicknessRange=[...t.iridescenceThicknessRange],this.iridescenceThicknessMap=t.iridescenceThicknessMap,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}constructor(t){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new iW(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return iP(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new rb(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new rb(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new rb(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(t)}}class hn extends rS{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.envMapRotation.copy(t.envMapRotation),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.fog=t.fog,this}constructor(t){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new rb(0xffffff),this.specular=new rb(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rb(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eH,this.normalScale=new iW(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new sZ,this.combine=ti,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}}class ha extends rS{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.fog=t.fog,this}constructor(t){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new rb(0xffffff),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rb(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eH,this.normalScale=new iW(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.fog=!0,this.setValues(t)}}class ho extends rS{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}constructor(t){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eH,this.normalScale=new iW(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(t)}}class hh extends rS{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.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.envMapRotation.copy(t.envMapRotation),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.fog=t.fog,this}constructor(t){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new rb(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rb(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eH,this.normalScale=new iW(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new sZ,this.combine=ti,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}}class hl extends rS{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}constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=ej,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}}class hu extends rS{copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}}class hc extends rS{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.fog=t.fog,this}constructor(t){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new rb(0xffffff),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eH,this.normalScale=new iW(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(t)}}class hd extends aC{copy(t){return super.copy(t),this.scale=t.scale,this.dashSize=t.dashSize,this.gapSize=t.gapSize,this}constructor(t){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(t)}}function hp(t,e){return t&&t.constructor!==e?"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t):t}function hm(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function hy(t){let e=t.length,i=Array(e);for(let t=0;t!==e;++t)i[t]=t;return i.sort(function(e,i){return t[e]-t[i]}),i}function hf(t,e,i){let s=t.length,r=new t.constructor(s);for(let n=0,a=0;a!==s;++n){let s=i[n]*e;for(let i=0;i!==e;++i)r[a++]=t[s+i]}return r}function hg(t,e,i,s){let r=1,n=t[0];for(;void 0!==n&&void 0===n[s];)n=t[r++];if(void 0===n)return;let a=n[s];if(void 0!==a)if(Array.isArray(a))do void 0!==(a=n[s])&&(e.push(n.time),i.push(...a)),n=t[r++];while(void 0!==n);else if(void 0!==a.toArray)do void 0!==(a=n[s])&&(e.push(n.time),a.toArray(i,i.length)),n=t[r++];while(void 0!==n);else do void 0!==(a=n[s])&&(e.push(n.time),i.push(a)),n=t[r++];while(void 0!==n)}class hx{static convertArray(t,e){return hp(t,e)}static isTypedArray(t){return hm(t)}static getKeyframeOrder(t){return hy(t)}static sortedArray(t,e,i){return hf(t,e,i)}static flattenJSON(t,e,i,s){hg(t,e,i,s)}static subclip(t,e,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:30;return function(t,e,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:30,n=t.clone();n.name=e;let a=[];for(let t=0;t=s)){h.push(e.times[t]);for(let i=0;in.tracks[t].times[0]&&(o=n.tracks[t].times[0]);for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:30;return function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:30;s<=0&&(s=30);let r=i.tracks.length,n=e/s;for(let e=0;e=r.times[d]){let t=d*l+h,e=t+l-h;s=r.values.slice(t,e)}else{let t=r.createInterpolant(),e=h,i=l-h;t.evaluate(n),s=t.resultBuffer.slice(e,i)}"quaternion"===a&&new iU().fromArray(s).normalize().conjugate().toArray(s);let p=o.times.length;for(let t=0;t=r)){let a=e[1];t=(r=e[--i-1]))break e}n=i,i=0;break i}break t}for(;i>>1;te;)--n;if(++n,0!==r||n!==s){r>=n&&(r=(n=Math.max(n,1))-1);let t=this.getValueSize();this.times=i.slice(r,n),this.values=this.values.slice(r*t,n*t)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);let i=this.times,s=this.values,r=i.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let n=null;for(let e=0;e!==r;e++){let s=i[e];if("number"==typeof s&&isNaN(s)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,e,s),t=!1;break}if(null!==n&&n>s){console.error("THREE.KeyframeTrack: Out of order keys.",this,e,s,n),t=!1;break}n=s}if(void 0!==s&&hm(s))for(let e=0,i=s.length;e!==i;++e){let i=s[e];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,e,i),t=!1;break}}return t}optimize(){let t=this.times.slice(),e=this.values.slice(),i=this.getValueSize(),s=this.getInterpolation()===eB,r=t.length-1,n=1;for(let a=1;a0){t[n]=t[r];for(let t=r*i,s=n*i,a=0;a!==i;++a)e[s+a]=e[t+a];++n}return n!==t.length?(this.times=t.slice(0,n),this.values=e.slice(0,n*i)):(this.times=t,this.values=e),this}clone(){let t=this.times.slice(),e=this.values.slice(),i=new this.constructor(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}constructor(t,e,i,s){if(void 0===t)throw Error("THREE.KeyframeTrack: track name is undefined");if(void 0===e||0===e.length)throw Error("THREE.KeyframeTrack: no keyframes in track named "+t);this.name=t,this.times=hp(e,this.TimeBufferType),this.values=hp(i,this.ValueBufferType),this.setInterpolation(s||this.DefaultInterpolation)}}hS.prototype.ValueTypeName="",hS.prototype.TimeBufferType=Float32Array,hS.prototype.ValueBufferType=Float32Array,hS.prototype.DefaultInterpolation=ek;class h_ extends hS{constructor(t,e,i){super(t,e,i)}}h_.prototype.ValueTypeName="bool",h_.prototype.ValueBufferType=Array,h_.prototype.DefaultInterpolation=eC,h_.prototype.InterpolantFactoryMethodLinear=void 0,h_.prototype.InterpolantFactoryMethodSmooth=void 0;class hA extends hS{constructor(t,e,i,s){super(t,e,i,s)}}hA.prototype.ValueTypeName="color";class hT extends hS{constructor(t,e,i,s){super(t,e,i,s)}}hT.prototype.ValueTypeName="number";class hz extends hv{interpolate_(t,e,i,s){let r=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=(i-e)/(s-e),h=t*a;for(let t=h+a;h!==t;h+=4)iU.slerpFlat(r,0,n,h-a,n,h,o);return r}constructor(t,e,i,s){super(t,e,i,s)}}class hI extends hS{InterpolantFactoryMethodLinear(t){return new hz(this.times,this.values,this.getValueSize(),t)}constructor(t,e,i,s){super(t,e,i,s)}}hI.prototype.ValueTypeName="quaternion",hI.prototype.InterpolantFactoryMethodSmooth=void 0;class hC extends hS{constructor(t,e,i){super(t,e,i)}}hC.prototype.ValueTypeName="string",hC.prototype.ValueBufferType=Array,hC.prototype.DefaultInterpolation=eC,hC.prototype.InterpolantFactoryMethodLinear=void 0,hC.prototype.InterpolantFactoryMethodSmooth=void 0;class hk extends hS{constructor(t,e,i,s){super(t,e,i,s)}}hk.prototype.ValueTypeName="vector";class hB{static parse(t){let e=[],i=t.tracks,s=1/(t.fps||1);for(let t=0,r=i.length;t!==r;++t)e.push((function(t){if(void 0===t.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");let e=function(t){switch(t.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return hT;case"vector":case"vector2":case"vector3":case"vector4":return hk;case"color":return hA;case"quaternion":return hI;case"bool":case"boolean":return h_;case"string":return hC}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+t)}(t.type);if(void 0===t.times){let e=[],i=[];hg(t.keys,e,i,"value"),t.times=e,t.values=i}return void 0!==e.parse?e.parse(t):new e(t.name,t.times,t.values,t.interpolation)})(i[t]).scale(s));let r=new this(t.name,t.duration,e,t.blendMode);return r.uuid=t.uuid,r.userData=JSON.parse(t.userData||"{}"),r}static toJSON(t){let e=[],i=t.tracks,s={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode,userData:JSON.stringify(t.userData)};for(let t=0,s=i.length;t!==s;++t)e.push(hS.toJSON(i[t]));return s}static CreateFromMorphTargetSequence(t,e,i,s){let r=e.length,n=[];for(let t=0;t1){let t=n[1],e=s[t];e||(s[t]=e=[]),e.push(i)}}let n=[];for(let t in s)n.push(this.CreateFromMorphTargetSequence(t,s[t],e,i));return n}static parseAnimation(t,e){if(console.warn("THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let i=function(t,e,i,s,r){if(0!==i.length){let n=[],a=[];hg(i,n,a,s),0!==n.length&&r.push(new t(e,n,a))}},s=[],r=t.name||"default",n=t.fps||30,a=t.blendMode,o=t.length||-1,h=t.hierarchy||[];for(let t=0;t{e&&e(r),this.manager.itemEnd(t)},0),r;if(void 0!==hN[t])return void hN[t].push({onLoad:e,onProgress:i,onError:s});hN[t]=[],hN[t].push({onLoad:e,onProgress:i,onError:s});let n=new Request(t,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:"function"==typeof AbortSignal.any?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),a=this.mimeType,o=this.responseType;fetch(n).then(e=>{if(200===e.status||0===e.status){if(0===e.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===e.body||void 0===e.body.getReader)return e;let i=hN[t],s=e.body.getReader(),r=e.headers.get("X-File-Size")||e.headers.get("Content-Length"),n=r?parseInt(r):0,a=0!==n,o=0;return new Response(new ReadableStream({start(t){!function e(){s.read().then(s=>{let{done:r,value:h}=s;if(r)t.close();else{let s=new ProgressEvent("progress",{lengthComputable:a,loaded:o+=h.byteLength,total:n});for(let t=0,e=i.length;t{t.error(e)})}()}}))}throw new hV('fetch for "'.concat(e.url,'" responded with ').concat(e.status,": ").concat(e.statusText),e)}).then(t=>{switch(o){case"arraybuffer":return t.arrayBuffer();case"blob":return t.blob();case"document":return t.text().then(t=>new DOMParser().parseFromString(t,a));case"json":return t.json();default:if(""===a)return t.text();{let e=/charset="?([^;"\s]*)"?/i.exec(a),i=new TextDecoder(e&&e[1]?e[1].toLowerCase():void 0);return t.arrayBuffer().then(t=>i.decode(t))}}}).then(e=>{hR.add("file:".concat(t),e);let i=hN[t];delete hN[t];for(let t=0,s=i.length;t{let i=hN[t];if(void 0===i)throw this.manager.itemError(t),e;delete hN[t];for(let t=0,s=i.length;t{this.manager.itemEnd(t)}),this.manager.itemStart(t)}setResponseType(t){return this.responseType=t,this}setMimeType(t){return this.mimeType=t,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}constructor(t){super(t),this.mimeType="",this.responseType="",this._abortController=new AbortController}}class hL extends hP{load(t,e,i,s){let r=this,n=new hF(this.manager);n.setPath(this.path),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(t,function(i){try{e(r.parse(JSON.parse(i)))}catch(e){s?s(e):console.error(e),r.manager.itemError(t)}},i,s)}parse(t){let e=[];for(let i=0;i1&&void 0!==arguments[1]?arguments[1]:0,i=this.camera,s=this.matrix,r=t.distance||i.far;r!==i.far&&(i.far=r,i.updateProjectionMatrix()),h1.setFromMatrixPosition(t.matrixWorld),i.position.copy(h1),h2.copy(i.position),h2.add(this._cubeDirections[e]),i.up.copy(this._cubeUps[e]),i.lookAt(h2),i.updateMatrixWorld(),s.makeTranslation(-h1.x,-h1.y,-h1.z),h0.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(h0,i.coordinateSystem,i.reversedDepth)}constructor(){super(new nl(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new iW(4,2),this._viewportCount=6,this._viewports=[new sr(2,1,1,1),new sr(0,1,1,1),new sr(3,1,1,1),new sr(1,1,1,1),new sr(3,0,1,1),new sr(1,0,1,1)],this._cubeDirections=[new iD(1,0,0),new iD(-1,0,0),new iD(0,0,1),new iD(0,0,-1),new iD(0,1,0),new iD(0,-1,0)],this._cubeUps=[new iD(0,1,0),new iD(0,1,0),new iD(0,1,0),new iD(0,1,0),new iD(0,0,1),new iD(0,0,-1)]}}class h5 extends hJ{get power(){return 4*this.intensity*Math.PI}set power(t){this.intensity=t/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}constructor(t,e,i=0,s=2){super(t,e),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=s,this.shadow=new h3}}class h4 extends nn{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,i,s,r,n){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=i,this.view.offsetY=s,this.view.width=r,this.view.height=n,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,s=(this.top+this.bottom)/2,r=i-t,n=i+t,a=s+e,o=s-e;if(null!==this.view&&this.view.enabled){let 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,n=r+t*this.view.width,a-=e*this.view.offsetY,o=a-e*this.view.height}this.projectionMatrix.makeOrthographic(r,n,a,o,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let 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}constructor(t=-1,e=1,i=1,s=-1,r=.1,n=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=i,this.bottom=s,this.near=r,this.far=n,this.updateProjectionMatrix()}}class h6 extends hQ{constructor(){super(new h4(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class h8 extends hJ{dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(re.DEFAULT_UP),this.updateMatrix(),this.target=new re,this.shadow=new h6}}class h9 extends hJ{constructor(t,e){super(t,e),this.isAmbientLight=!0,this.type="AmbientLight"}}class h7 extends hJ{get power(){return this.intensity*this.width*this.height*Math.PI}set power(t){this.intensity=t/(this.width*this.height*Math.PI)}copy(t){return super.copy(t),this.width=t.width,this.height=t.height,this}toJSON(t){let e=super.toJSON(t);return e.object.width=this.width,e.object.height=this.height,e}constructor(t,e,i=10,s=10){super(t,e),this.isRectAreaLight=!0,this.type="RectAreaLight",this.width=i,this.height=s}}class lt{set(t){for(let e=0;e<9;e++)this.coefficients[e].copy(t[e]);return this}zero(){for(let t=0;t<9;t++)this.coefficients[t].set(0,0,0);return this}getAt(t,e){let i=t.x,s=t.y,r=t.z,n=this.coefficients;return e.copy(n[0]).multiplyScalar(.282095),e.addScaledVector(n[1],.488603*s),e.addScaledVector(n[2],.488603*r),e.addScaledVector(n[3],.488603*i),e.addScaledVector(n[4],i*s*1.092548),e.addScaledVector(n[5],s*r*1.092548),e.addScaledVector(n[6],.315392*(3*r*r-1)),e.addScaledVector(n[7],i*r*1.092548),e.addScaledVector(n[8],.546274*(i*i-s*s)),e}getIrradianceAt(t,e){let i=t.x,s=t.y,r=t.z,n=this.coefficients;return e.copy(n[0]).multiplyScalar(.886227),e.addScaledVector(n[1],1.023328*s),e.addScaledVector(n[2],1.023328*r),e.addScaledVector(n[3],1.023328*i),e.addScaledVector(n[4],.858086*i*s),e.addScaledVector(n[5],.858086*s*r),e.addScaledVector(n[6],.743125*r*r-.247708),e.addScaledVector(n[7],.858086*i*r),e.addScaledVector(n[8],.429043*(i*i-s*s)),e}add(t){for(let e=0;e<9;e++)this.coefficients[e].add(t.coefficients[e]);return this}addScaledSH(t,e){for(let i=0;i<9;i++)this.coefficients[i].addScaledVector(t.coefficients[i],e);return this}scale(t){for(let e=0;e<9;e++)this.coefficients[e].multiplyScalar(t);return this}lerp(t,e){for(let i=0;i<9;i++)this.coefficients[i].lerp(t.coefficients[i],e);return this}equals(t){for(let e=0;e<9;e++)if(!this.coefficients[e].equals(t.coefficients[e]))return!1;return!0}copy(t){return this.set(t.coefficients)}clone(){return new this.constructor().copy(this)}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.coefficients;for(let s=0;s<9;s++)i[s].fromArray(t,e+3*s);return this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.coefficients;for(let s=0;s<9;s++)i[s].toArray(t,e+3*s);return t}static getBasisAt(t,e){let i=t.x,s=t.y,r=t.z;e[0]=.282095,e[1]=.488603*s,e[2]=.488603*r,e[3]=.488603*i,e[4]=1.092548*i*s,e[5]=1.092548*s*r,e[6]=.315392*(3*r*r-1),e[7]=1.092548*i*r,e[8]=.546274*(i*i-s*s)}constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let t=0;t<9;t++)this.coefficients.push(new iD)}}class le extends hJ{copy(t){return super.copy(t),this.sh.copy(t.sh),this}fromJSON(t){return this.intensity=t.intensity,this.sh.fromArray(t.sh),this}toJSON(t){let e=super.toJSON(t);return e.object.sh=this.sh.toArray(),e}constructor(t=new lt,e=1){super(void 0,e),this.isLightProbe=!0,this.sh=t}}class li extends hP{load(t,e,i,s){let r=this,n=new hF(r.manager);n.setPath(r.path),n.setRequestHeader(r.requestHeader),n.setWithCredentials(r.withCredentials),n.load(t,function(i){try{e(r.parse(JSON.parse(i)))}catch(e){s?s(e):console.error(e),r.manager.itemError(t)}},i,s)}parse(t){let e=this.textures;function i(t){return void 0===e[t]&&console.warn("THREE.MaterialLoader: Undefined texture",t),e[t]}let s=this.createMaterialFromType(t.type);if(void 0!==t.uuid&&(s.uuid=t.uuid),void 0!==t.name&&(s.name=t.name),void 0!==t.color&&void 0!==s.color&&s.color.setHex(t.color),void 0!==t.roughness&&(s.roughness=t.roughness),void 0!==t.metalness&&(s.metalness=t.metalness),void 0!==t.sheen&&(s.sheen=t.sheen),void 0!==t.sheenColor&&(s.sheenColor=new rb().setHex(t.sheenColor)),void 0!==t.sheenRoughness&&(s.sheenRoughness=t.sheenRoughness),void 0!==t.emissive&&void 0!==s.emissive&&s.emissive.setHex(t.emissive),void 0!==t.specular&&void 0!==s.specular&&s.specular.setHex(t.specular),void 0!==t.specularIntensity&&(s.specularIntensity=t.specularIntensity),void 0!==t.specularColor&&void 0!==s.specularColor&&s.specularColor.setHex(t.specularColor),void 0!==t.shininess&&(s.shininess=t.shininess),void 0!==t.clearcoat&&(s.clearcoat=t.clearcoat),void 0!==t.clearcoatRoughness&&(s.clearcoatRoughness=t.clearcoatRoughness),void 0!==t.dispersion&&(s.dispersion=t.dispersion),void 0!==t.iridescence&&(s.iridescence=t.iridescence),void 0!==t.iridescenceIOR&&(s.iridescenceIOR=t.iridescenceIOR),void 0!==t.iridescenceThicknessRange&&(s.iridescenceThicknessRange=t.iridescenceThicknessRange),void 0!==t.transmission&&(s.transmission=t.transmission),void 0!==t.thickness&&(s.thickness=t.thickness),void 0!==t.attenuationDistance&&(s.attenuationDistance=t.attenuationDistance),void 0!==t.attenuationColor&&void 0!==s.attenuationColor&&s.attenuationColor.setHex(t.attenuationColor),void 0!==t.anisotropy&&(s.anisotropy=t.anisotropy),void 0!==t.anisotropyRotation&&(s.anisotropyRotation=t.anisotropyRotation),void 0!==t.fog&&(s.fog=t.fog),void 0!==t.flatShading&&(s.flatShading=t.flatShading),void 0!==t.blending&&(s.blending=t.blending),void 0!==t.combine&&(s.combine=t.combine),void 0!==t.side&&(s.side=t.side),void 0!==t.shadowSide&&(s.shadowSide=t.shadowSide),void 0!==t.opacity&&(s.opacity=t.opacity),void 0!==t.transparent&&(s.transparent=t.transparent),void 0!==t.alphaTest&&(s.alphaTest=t.alphaTest),void 0!==t.alphaHash&&(s.alphaHash=t.alphaHash),void 0!==t.depthFunc&&(s.depthFunc=t.depthFunc),void 0!==t.depthTest&&(s.depthTest=t.depthTest),void 0!==t.depthWrite&&(s.depthWrite=t.depthWrite),void 0!==t.colorWrite&&(s.colorWrite=t.colorWrite),void 0!==t.blendSrc&&(s.blendSrc=t.blendSrc),void 0!==t.blendDst&&(s.blendDst=t.blendDst),void 0!==t.blendEquation&&(s.blendEquation=t.blendEquation),void 0!==t.blendSrcAlpha&&(s.blendSrcAlpha=t.blendSrcAlpha),void 0!==t.blendDstAlpha&&(s.blendDstAlpha=t.blendDstAlpha),void 0!==t.blendEquationAlpha&&(s.blendEquationAlpha=t.blendEquationAlpha),void 0!==t.blendColor&&void 0!==s.blendColor&&s.blendColor.setHex(t.blendColor),void 0!==t.blendAlpha&&(s.blendAlpha=t.blendAlpha),void 0!==t.stencilWriteMask&&(s.stencilWriteMask=t.stencilWriteMask),void 0!==t.stencilFunc&&(s.stencilFunc=t.stencilFunc),void 0!==t.stencilRef&&(s.stencilRef=t.stencilRef),void 0!==t.stencilFuncMask&&(s.stencilFuncMask=t.stencilFuncMask),void 0!==t.stencilFail&&(s.stencilFail=t.stencilFail),void 0!==t.stencilZFail&&(s.stencilZFail=t.stencilZFail),void 0!==t.stencilZPass&&(s.stencilZPass=t.stencilZPass),void 0!==t.stencilWrite&&(s.stencilWrite=t.stencilWrite),void 0!==t.wireframe&&(s.wireframe=t.wireframe),void 0!==t.wireframeLinewidth&&(s.wireframeLinewidth=t.wireframeLinewidth),void 0!==t.wireframeLinecap&&(s.wireframeLinecap=t.wireframeLinecap),void 0!==t.wireframeLinejoin&&(s.wireframeLinejoin=t.wireframeLinejoin),void 0!==t.rotation&&(s.rotation=t.rotation),void 0!==t.linewidth&&(s.linewidth=t.linewidth),void 0!==t.dashSize&&(s.dashSize=t.dashSize),void 0!==t.gapSize&&(s.gapSize=t.gapSize),void 0!==t.scale&&(s.scale=t.scale),void 0!==t.polygonOffset&&(s.polygonOffset=t.polygonOffset),void 0!==t.polygonOffsetFactor&&(s.polygonOffsetFactor=t.polygonOffsetFactor),void 0!==t.polygonOffsetUnits&&(s.polygonOffsetUnits=t.polygonOffsetUnits),void 0!==t.dithering&&(s.dithering=t.dithering),void 0!==t.alphaToCoverage&&(s.alphaToCoverage=t.alphaToCoverage),void 0!==t.premultipliedAlpha&&(s.premultipliedAlpha=t.premultipliedAlpha),void 0!==t.forceSinglePass&&(s.forceSinglePass=t.forceSinglePass),void 0!==t.visible&&(s.visible=t.visible),void 0!==t.toneMapped&&(s.toneMapped=t.toneMapped),void 0!==t.userData&&(s.userData=t.userData),void 0!==t.vertexColors&&("number"==typeof t.vertexColors?s.vertexColors=t.vertexColors>0:s.vertexColors=t.vertexColors),void 0!==t.uniforms)for(let e in t.uniforms){let r=t.uniforms[e];switch(s.uniforms[e]={},r.type){case"t":s.uniforms[e].value=i(r.value);break;case"c":s.uniforms[e].value=new rb().setHex(r.value);break;case"v2":s.uniforms[e].value=new iW().fromArray(r.value);break;case"v3":s.uniforms[e].value=new iD().fromArray(r.value);break;case"v4":s.uniforms[e].value=new sr().fromArray(r.value);break;case"m3":s.uniforms[e].value=new iJ().fromArray(r.value);break;case"m4":s.uniforms[e].value=new sF().fromArray(r.value);break;default:s.uniforms[e].value=r.value}}if(void 0!==t.defines&&(s.defines=t.defines),void 0!==t.vertexShader&&(s.vertexShader=t.vertexShader),void 0!==t.fragmentShader&&(s.fragmentShader=t.fragmentShader),void 0!==t.glslVersion&&(s.glslVersion=t.glslVersion),void 0!==t.extensions)for(let e in t.extensions)s.extensions[e]=t.extensions[e];if(void 0!==t.lights&&(s.lights=t.lights),void 0!==t.clipping&&(s.clipping=t.clipping),void 0!==t.size&&(s.size=t.size),void 0!==t.sizeAttenuation&&(s.sizeAttenuation=t.sizeAttenuation),void 0!==t.map&&(s.map=i(t.map)),void 0!==t.matcap&&(s.matcap=i(t.matcap)),void 0!==t.alphaMap&&(s.alphaMap=i(t.alphaMap)),void 0!==t.bumpMap&&(s.bumpMap=i(t.bumpMap)),void 0!==t.bumpScale&&(s.bumpScale=t.bumpScale),void 0!==t.normalMap&&(s.normalMap=i(t.normalMap)),void 0!==t.normalMapType&&(s.normalMapType=t.normalMapType),void 0!==t.normalScale){let e=t.normalScale;!1===Array.isArray(e)&&(e=[e,e]),s.normalScale=new iW().fromArray(e)}return void 0!==t.displacementMap&&(s.displacementMap=i(t.displacementMap)),void 0!==t.displacementScale&&(s.displacementScale=t.displacementScale),void 0!==t.displacementBias&&(s.displacementBias=t.displacementBias),void 0!==t.roughnessMap&&(s.roughnessMap=i(t.roughnessMap)),void 0!==t.metalnessMap&&(s.metalnessMap=i(t.metalnessMap)),void 0!==t.emissiveMap&&(s.emissiveMap=i(t.emissiveMap)),void 0!==t.emissiveIntensity&&(s.emissiveIntensity=t.emissiveIntensity),void 0!==t.specularMap&&(s.specularMap=i(t.specularMap)),void 0!==t.specularIntensityMap&&(s.specularIntensityMap=i(t.specularIntensityMap)),void 0!==t.specularColorMap&&(s.specularColorMap=i(t.specularColorMap)),void 0!==t.envMap&&(s.envMap=i(t.envMap)),void 0!==t.envMapRotation&&s.envMapRotation.fromArray(t.envMapRotation),void 0!==t.envMapIntensity&&(s.envMapIntensity=t.envMapIntensity),void 0!==t.reflectivity&&(s.reflectivity=t.reflectivity),void 0!==t.refractionRatio&&(s.refractionRatio=t.refractionRatio),void 0!==t.lightMap&&(s.lightMap=i(t.lightMap)),void 0!==t.lightMapIntensity&&(s.lightMapIntensity=t.lightMapIntensity),void 0!==t.aoMap&&(s.aoMap=i(t.aoMap)),void 0!==t.aoMapIntensity&&(s.aoMapIntensity=t.aoMapIntensity),void 0!==t.gradientMap&&(s.gradientMap=i(t.gradientMap)),void 0!==t.clearcoatMap&&(s.clearcoatMap=i(t.clearcoatMap)),void 0!==t.clearcoatRoughnessMap&&(s.clearcoatRoughnessMap=i(t.clearcoatRoughnessMap)),void 0!==t.clearcoatNormalMap&&(s.clearcoatNormalMap=i(t.clearcoatNormalMap)),void 0!==t.clearcoatNormalScale&&(s.clearcoatNormalScale=new iW().fromArray(t.clearcoatNormalScale)),void 0!==t.iridescenceMap&&(s.iridescenceMap=i(t.iridescenceMap)),void 0!==t.iridescenceThicknessMap&&(s.iridescenceThicknessMap=i(t.iridescenceThicknessMap)),void 0!==t.transmissionMap&&(s.transmissionMap=i(t.transmissionMap)),void 0!==t.thicknessMap&&(s.thicknessMap=i(t.thicknessMap)),void 0!==t.anisotropyMap&&(s.anisotropyMap=i(t.anisotropyMap)),void 0!==t.sheenColorMap&&(s.sheenColorMap=i(t.sheenColorMap)),void 0!==t.sheenRoughnessMap&&(s.sheenRoughnessMap=i(t.sheenRoughnessMap)),s}setTextures(t){return this.textures=t,this}createMaterialFromType(t){return li.createMaterialFromType(t)}static createMaterialFromType(t){return new({ShadowMaterial:he,SpriteMaterial:nM,RawShaderMaterial:hi,ShaderMaterial:nr,PointsMaterial:aD,MeshPhysicalMaterial:hr,MeshStandardMaterial:hs,MeshPhongMaterial:hn,MeshToonMaterial:ha,MeshNormalMaterial:ho,MeshLambertMaterial:hh,MeshDepthMaterial:hl,MeshDistanceMaterial:hu,MeshBasicMaterial:r_,MeshMatcapMaterial:hc,LineDashedMaterial:hd,LineBasicMaterial:aC,Material:rS})[t]}constructor(t){super(t),this.textures={}}}class ls{static extractUrlBase(t){let e=t.lastIndexOf("/");return -1===e?"./":t.slice(0,e+1)}static resolveURL(t,e){return"string"!=typeof t||""===t?"":(/^https?:\/\//i.test(e)&&/^\//.test(t)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(t)||/^data:.*,.*$/i.test(t)||/^blob:.*$/i.test(t))?t:e+t}}class lr extends rY{copy(t){return super.copy(t),this.instanceCount=t.instanceCount,this}toJSON(){let t=super.toJSON();return t.instanceCount=this.instanceCount,t.isInstancedBufferGeometry=!0,t}constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}}class ln extends hP{load(t,e,i,s){let r=this,n=new hF(r.manager);n.setPath(r.path),n.setRequestHeader(r.requestHeader),n.setWithCredentials(r.withCredentials),n.load(t,function(i){try{e(r.parse(JSON.parse(i)))}catch(e){s?s(e):console.error(e),r.manager.itemError(t)}},i,s)}parse(t){let e={},i={};function s(t,s){if(void 0!==e[s])return e[s];let r=t.interleavedBuffers[s],n=function(t,e){if(void 0!==i[e])return i[e];let s=new Uint32Array(t.arrayBuffers[e]).buffer;return i[e]=s,s}(t,r.buffer),a=new nv(iG(r.type,n),r.stride);return a.uuid=r.uuid,e[s]=a,a}let r=t.isInstancedBufferGeometry?new lr:new rY,n=t.data.index;if(void 0!==n){let t=iG(n.type,n.array);r.setIndex(new rR(t,1))}let a=t.data.attributes;for(let e in a){let i,n=a[e];if(n.isInterleavedBufferAttribute)i=new nw(s(t.data,n.data),n.itemSize,n.offset,n.normalized);else{let t=iG(n.type,n.array);i=new(n.isInstancedBufferAttribute?n1:rR)(t,n.itemSize,n.normalized)}void 0!==n.name&&(i.name=n.name),void 0!==n.usage&&i.setUsage(n.usage),r.setAttribute(e,i)}let o=t.data.morphAttributes;if(o)for(let e in o){let i=o[e],n=[];for(let e=0,r=i.length;e0){(i=new hU(new hE(e))).setCrossOrigin(this.crossOrigin);for(let e=0,i=t.length;e0){(e=new hU(this.manager)).setCrossOrigin(this.crossOrigin);for(let e=0,i=t.length;e{let e=null,i=null;return void 0!==t.boundingBox&&(e=new sc().fromJSON(t.boundingBox)),void 0!==t.boundingSphere&&(i=new sC().fromJSON(t.boundingSphere)),{...t,boundingBox:e,boundingSphere:i}}),n._instanceInfo=t.instanceInfo,n._availableInstanceIds=t._availableInstanceIds,n._availableGeometryIds=t._availableGeometryIds,n._nextIndexStart=t.nextIndexStart,n._nextVertexStart=t.nextVertexStart,n._geometryCount=t.geometryCount,n._maxInstanceCount=t.maxInstanceCount,n._maxVertexCount=t.maxVertexCount,n._maxIndexCount=t.maxIndexCount,n._geometryInitialized=t.geometryInitialized,n._matricesTexture=u(t.matricesTexture.uuid),n._indirectTexture=u(t.indirectTexture.uuid),void 0!==t.colorsTexture&&(n._colorsTexture=u(t.colorsTexture.uuid)),void 0!==t.boundingSphere&&(n.boundingSphere=new sC().fromJSON(t.boundingSphere)),void 0!==t.boundingBox&&(n.boundingBox=new sc().fromJSON(t.boundingBox));break;case"LOD":n=new nL;break;case"Line":n=new aV(h(t.geometry),l(t.material));break;case"LineLoop":n=new aU(h(t.geometry),l(t.material));break;case"LineSegments":n=new aW(h(t.geometry),l(t.material));break;case"PointCloud":case"Points":n=new aZ(h(t.geometry),l(t.material));break;case"Sprite":n=new nP(l(t.material));break;case"Group":n=new np;break;case"Bone":n=new nG;break;default:n=new re}if(n.uuid=t.uuid,void 0!==t.name&&(n.name=t.name),void 0!==t.matrix?(n.matrix.fromArray(t.matrix),void 0!==t.matrixAutoUpdate&&(n.matrixAutoUpdate=t.matrixAutoUpdate),n.matrixAutoUpdate&&n.matrix.decompose(n.position,n.quaternion,n.scale)):(void 0!==t.position&&n.position.fromArray(t.position),void 0!==t.rotation&&n.rotation.fromArray(t.rotation),void 0!==t.quaternion&&n.quaternion.fromArray(t.quaternion),void 0!==t.scale&&n.scale.fromArray(t.scale)),void 0!==t.up&&n.up.fromArray(t.up),void 0!==t.castShadow&&(n.castShadow=t.castShadow),void 0!==t.receiveShadow&&(n.receiveShadow=t.receiveShadow),t.shadow&&(void 0!==t.shadow.intensity&&(n.shadow.intensity=t.shadow.intensity),void 0!==t.shadow.bias&&(n.shadow.bias=t.shadow.bias),void 0!==t.shadow.normalBias&&(n.shadow.normalBias=t.shadow.normalBias),void 0!==t.shadow.radius&&(n.shadow.radius=t.shadow.radius),void 0!==t.shadow.mapSize&&n.shadow.mapSize.fromArray(t.shadow.mapSize),void 0!==t.shadow.camera&&(n.shadow.camera=this.parseObject(t.shadow.camera))),void 0!==t.visible&&(n.visible=t.visible),void 0!==t.frustumCulled&&(n.frustumCulled=t.frustumCulled),void 0!==t.renderOrder&&(n.renderOrder=t.renderOrder),void 0!==t.userData&&(n.userData=t.userData),void 0!==t.layers&&(n.layers.mask=t.layers),void 0!==t.children){let a=t.children;for(let t=0;t{if(!0!==lu.has(n))return e&&e(i),r.manager.itemEnd(t),i;s&&s(lu.get(n)),r.manager.itemError(t),r.manager.itemEnd(t)}):(setTimeout(function(){e&&e(n),r.manager.itemEnd(t)},0),n);let a={};a.credentials="anonymous"===this.crossOrigin?"same-origin":"include",a.headers=this.requestHeader,a.signal="function"==typeof AbortSignal.any?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let o=fetch(t,a).then(function(t){return t.blob()}).then(function(t){return createImageBitmap(t,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(i){return hR.add("image-bitmap:".concat(t),i),e&&e(i),r.manager.itemEnd(t),i}).catch(function(e){s&&s(e),lu.set(o,e),hR.remove("image-bitmap:".concat(t)),r.manager.itemError(t),r.manager.itemEnd(t)});hR.add("image-bitmap:".concat(t),o),r.manager.itemStart(t)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}constructor(t){super(t),this.isImageBitmapLoader=!0,"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}}class ld{static getContext(){return void 0===n&&(n=new(window.AudioContext||window.webkitAudioContext)),n}static setContext(t){n=t}}class lp extends hP{load(t,e,i,s){let r=this,n=new hF(this.manager);function a(e){s?s(e):console.error(e),r.manager.itemError(t)}n.setResponseType("arraybuffer"),n.setPath(this.path),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(t,function(t){try{let i=t.slice(0);ld.getContext().decodeAudioData(i,function(t){e(t)}).catch(a)}catch(t){a(t)}},i,s)}constructor(t){super(t)}}let lm=new sF,ly=new sF,lf=new sF;class lg{update(t){let e=this._cache;if(e.focus!==t.focus||e.fov!==t.fov||e.aspect!==t.aspect*this.aspect||e.near!==t.near||e.far!==t.far||e.zoom!==t.zoom||e.eyeSep!==this.eyeSep){let i,s;e.focus=t.focus,e.fov=t.fov,e.aspect=t.aspect*this.aspect,e.near=t.near,e.far=t.far,e.zoom=t.zoom,e.eyeSep=this.eyeSep,lf.copy(t.projectionMatrix);let r=e.eyeSep/2,n=r*e.near/e.focus,a=e.near*Math.tan(iR*e.fov*.5)/e.zoom;ly.elements[12]=-r,lm.elements[12]=r,i=-a*e.aspect+n,s=a*e.aspect+n,lf.elements[0]=2*e.near/(s-i),lf.elements[8]=(s+i)/(s-i),this.cameraL.projectionMatrix.copy(lf),i=-a*e.aspect-n,s=a*e.aspect-n,lf.elements[0]=2*e.near/(s-i),lf.elements[8]=(s+i)/(s-i),this.cameraR.projectionMatrix.copy(lf)}this.cameraL.matrixWorld.copy(t.matrixWorld).multiply(ly),this.cameraR.matrixWorld.copy(t.matrixWorld).multiply(lm)}constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new nl,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new nl,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}}class lx extends nl{constructor(t=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=t}}class lv{start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let t=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let e=performance.now();t=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=t}return t}constructor(t=!0){this.autoStart=t,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}}let lb=new iD,lw=new iU,lM=new iD,lS=new iD,l_=new iD;class lA extends re{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);let e=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(lb,lw,lM),lS.set(0,0,-1).applyQuaternion(lw),l_.set(0,1,0).applyQuaternion(lw),e.positionX){let t=this.context.currentTime+this.timeDelta;e.positionX.linearRampToValueAtTime(lb.x,t),e.positionY.linearRampToValueAtTime(lb.y,t),e.positionZ.linearRampToValueAtTime(lb.z,t),e.forwardX.linearRampToValueAtTime(lS.x,t),e.forwardY.linearRampToValueAtTime(lS.y,t),e.forwardZ.linearRampToValueAtTime(lS.z,t),e.upX.linearRampToValueAtTime(l_.x,t),e.upY.linearRampToValueAtTime(l_.y,t),e.upZ.linearRampToValueAtTime(l_.z,t)}else e.setPosition(lb.x,lb.y,lb.z),e.setOrientation(lS.x,lS.y,lS.z,l_.x,l_.y,l_.z)}constructor(){super(),this.type="AudioListener",this.context=ld.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new lv}}class lT extends re{getOutput(){return this.gain}setNodeSource(t){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=t,this.connect(),this}setMediaElementSource(t){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(t),this.connect(),this}setMediaStreamSource(t){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(t),this.connect(),this}setBuffer(t){return this.buffer=t,this.sourceType="buffer",this.autoplay&&this.play(),this}play(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(!0===this.isPlaying)return void console.warn("THREE.Audio: Audio is already playing.");if(!1===this.hasPlaybackControl)return void console.warn("THREE.Audio: this Audio has no playback control.");this._startedAt=this.context.currentTime+t;let e=this.context.createBufferSource();return e.buffer=this.buffer,e.loop=this.loop,e.loopStart=this.loopStart,e.loopEnd=this.loopEnd,e.onended=this.onEnded.bind(this),e.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=e,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){return!1===this.hasPlaybackControl?void console.warn("THREE.Audio: this Audio has no playback control."):(!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this)}stop(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return!1===this.hasPlaybackControl?void console.warn("THREE.Audio: this Audio has no playback control."):(this._progress=0,null!==this.source&&(this.source.stop(this.context.currentTime+t),this.source.onended=null),this.isPlaying=!1,this)}connect(){if(this.filters.length>0){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(i,s,this._addIndex*e,1,e);for(let t=e,r=e+e;t!==r;++t)if(i[t]!==i[t+e]){a.setValue(i,s);break}}saveOriginalState(){let t=this.binding,e=this.buffer,i=this.valueSize,s=i*this._origIndex;t.getValue(e,s);for(let t=i;t!==s;++t)e[t]=e[s+t%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let t=3*this.valueSize;this.binding.setValue(this.buffer,t)}_setAdditiveIdentityNumeric(){let t=this._addIndex*this.valueSize,e=t+this.valueSize;for(let i=t;i=.5)for(let s=0;s!==r;++s)t[e+s]=t[i+s]}_slerp(t,e,i,s){iU.slerpFlat(t,e,t,e,t,i,s)}_slerpAdditive(t,e,i,s,r){let n=this._workIndex*r;iU.multiplyQuaternionsFlat(t,n,t,e,t,i),iU.slerpFlat(t,e,t,e,t,n,s)}_lerp(t,e,i,s,r){let n=1-s;for(let a=0;a!==r;++a){let r=e+a;t[r]=t[r]*n+t[i+a]*s}}_lerpAdditive(t,e,i,s,r){for(let n=0;n!==r;++n){let r=e+n;t[r]=t[r]+t[i+n]*s}}constructor(t,e,i){let s,r,n;switch(this.binding=t,this.valueSize=i,e){case"quaternion":s=this._slerp,r=this._slerpAdditive,n=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*i),this._workIndex=5;break;case"string":case"bool":s=this._select,r=this._select,n=this._setAdditiveIdentityOther,this.buffer=Array(5*i);break;default:s=this._lerp,r=this._lerpAdditive,n=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*i)}this._mixBufferRegion=s,this._mixBufferRegionAdditive=r,this._setIdentity=n,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}}let lO="\\[\\]\\.:\\/",lP=RegExp("["+lO+"]","g"),lN="[^"+lO+"]",lV="[^"+lO.replace("\\.","")+"]",lF=/((?:WC+[\/:])*)/.source.replace("WC",lN),lL=/(WCOD+)?/.source.replace("WCOD",lV),lj=RegExp("^"+lF+lL+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",lN)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",lN)+"$"),lW=["material","materials","bones","map"];class lU{getValue(t,e){this.bind();let i=this._targetGroup.nCachedObjects_,s=this._bindings[i];void 0!==s&&s.getValue(t,e)}setValue(t,e){let i=this._bindings;for(let s=this._targetGroup.nCachedObjects_,r=i.length;s!==r;++s)i[s].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=t.length;e!==i;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=t.length;e!==i;++e)t[e].unbind()}constructor(t,e,i){let s=i||lD.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,s)}}class lD{static create(t,e,i){return t&&t.isAnimationObjectGroup?new lD.Composite(t,e,i):new lD(t,e,i)}static sanitizeNodeName(t){return t.replace(/\s/g,"_").replace(lP,"")}static parseTrackName(t){let e=lj.exec(t);if(null===e)throw Error("PropertyBinding: Cannot parse trackName: "+t);let i={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},s=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==s&&-1!==s){let t=i.nodeName.substring(s+1);-1!==lW.indexOf(t)&&(i.nodeName=i.nodeName.substring(0,s),i.objectName=t)}if(null===i.propertyName||0===i.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+t);return i}static findNode(t,e){if(void 0===e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){let i=t.skeleton.getBoneByName(e);if(void 0!==i)return i}if(t.children){let i=function(t){for(let s=0;s=r){let n=r++,l=t[n];e[l.uuid]=h,t[h]=l,e[o]=n,t[n]=a;for(let t=0;t!==s;++t){let e=i[t],s=e[n],r=e[h];e[h]=s,e[n]=r}}}this.nCachedObjects_=r}uncache(){let t=this._objects,e=this._indicesByUUID,i=this._bindings,s=i.length,r=this.nCachedObjects_,n=t.length;for(let a=0,o=arguments.length;a!==o;++a){let o=arguments[a],h=o.uuid,l=e[h];if(void 0!==l)if(delete e[h],l0&&(e[a.uuid]=l),t[l]=a,t.pop();for(let t=0;t!==s;++t){let e=i[t];e[l]=e[r],e.pop()}}}this.nCachedObjects_=r}subscribe_(t,e){let i=this._bindingsIndicesByPath,s=i[t],r=this._bindings;if(void 0!==s)return r[s];let n=this._paths,a=this._parsedPaths,o=this._objects,h=o.length,l=this.nCachedObjects_,u=Array(h);s=r.length,i[t]=s,n.push(t),a.push(e),r.push(u);for(let i=l,s=o.length;i!==s;++i){let s=o[i];u[i]=new lD(s,t,e)}return u}unsubscribe_(t){let e=this._bindingsIndicesByPath,i=e[t];if(void 0!==i){let s=this._paths,r=this._parsedPaths,n=this._bindings,a=n.length-1,o=n[a];e[t[a]]=i,n[i]=o,n.pop(),r[i]=r[a],r.pop(),s[i]=s[a],s.pop()}}constructor(){this.isAnimationObjectGroup=!0,this.uuid=iO(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;let t={};this._indicesByUUID=t;for(let e=0,i=arguments.length;e!==i;++e)t[arguments[e].uuid]=e;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};let e=this;this.stats={objects:{get total(){return e._objects.length},get inUse(){return this.total-e.nCachedObjects_}},get bindingsPerObject(){return e._bindings.length}}}}class lq{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){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t.fadeOut(e),this.fadeIn(e),!0===i){let i=this._clip.duration,s=t._clip.duration;t.warp(1,s/i,e),this.warp(i/s,1,e)}return this}crossFadeTo(t,e){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t.crossFadeFrom(this,e,i)}stopFading(){let 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,i){let s=this._mixer,r=s.time,n=this.timeScale,a=this._timeScaleInterpolant;null===a&&(a=s._lendControlInterpolant(),this._timeScaleInterpolant=a);let o=a.parameterPositions,h=a.sampleValues;return o[0]=r,o[1]=r+i,h[0]=t/n,h[1]=e/n,this}stopWarping(){let 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,i,s){if(!this.enabled)return void this._updateWeight(t);let r=this._startTime;if(null!==r){let s=(t-r)*i;s<0||0===i?e=0:(this._startTime=null,e=i*s)}e*=this._updateTimeScale(t);let n=this._updateTime(e),a=this._updateWeight(t);if(a>0){let t=this._interpolants,e=this._propertyBindings;if(this.blendMode===eN)for(let i=0,s=t.length;i!==s;++i)t[i].evaluate(n),e[i].accumulateAdditive(a);else for(let i=0,r=t.length;i!==r;++i)t[i].evaluate(n),e[i].accumulate(s,a)}}_updateWeight(t){let e=0;if(this.enabled){e=this.weight;let i=this._weightInterpolant;if(null!==i){let s=i.evaluate(t)[0];e*=s,t>i.parameterPositions[1]&&(this.stopFading(),0===s&&(this.enabled=!1))}}return this._effectiveWeight=e,e}_updateTimeScale(t){let e=0;if(!this.paused){e=this.timeScale;let i=this._timeScaleInterpolant;null!==i&&(e*=i.evaluate(t)[0],t>i.parameterPositions[1]&&(this.stopWarping(),0===e?this.paused=!0:this.timeScale=e))}return this._effectiveTimeScale=e,e}_updateTime(t){let e=this._clip.duration,i=this.loop,s=this.time+t,r=this._loopCount,n=i===eI;if(0===t)return -1===r?s:n&&(1&r)==1?e-s:s;if(i===eT){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));r:{if(s>=e)s=e;else if(s<0)s=0;else{this.time=s;break r}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=s,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,n)):this._setEndings(0===this.repetitions,!0,n)),s>=e||s<0){let i=Math.floor(s/e);s-=e*i,r+=Math.abs(i);let a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,s=t>0?e:0,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:t>0?1:-1});else{if(1===a){let e=t<0;this._setEndings(e,!e,n)}else this._setEndings(!1,!1,n);this._loopCount=r,this.time=s,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=s;if(n&&(1&r)==1)return e-s}return s}_setEndings(t,e,i){let s=this._interpolantSettings;i?(s.endingStart=eE,s.endingEnd=eE):(t?s.endingStart=this.zeroSlopeAtStart?eE:eR:s.endingStart=eO,e?s.endingEnd=this.zeroSlopeAtEnd?eE:eR:s.endingEnd=eO)}_scheduleFading(t,e,i){let s=this._mixer,r=s.time,n=this._weightInterpolant;null===n&&(n=s._lendControlInterpolant(),this._weightInterpolant=n);let a=n.parameterPositions,o=n.sampleValues;return a[0]=r,o[0]=e,a[1]=r+t,o[1]=i,this}constructor(t,e,i=null,s=e.blendMode){this._mixer=t,this._clip=e,this._localRoot=i,this.blendMode=s;let r=e.tracks,n=r.length,a=Array(n),o={endingStart:eR,endingEnd:eR};for(let t=0;t!==n;++t){let e=r[t].createInterpolant(null);a[t]=e,e.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=Array(n),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=ez,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}}let lJ=new Float32Array(1);class lX extends iC{_bindAction(t,e){let i=t._localRoot||this._root,s=t._clip.tracks,r=s.length,n=t._propertyBindings,a=t._interpolants,o=i.uuid,h=this._bindingsByRootAndName,l=h[o];void 0===l&&(l={},h[o]=l);for(let t=0;t!==r;++t){let r=s[t],h=r.name,u=l[h];if(void 0!==u)++u.referenceCount,n[t]=u;else{if(void 0!==(u=n[t])){null===u._cacheIndex&&(++u.referenceCount,this._addInactiveBinding(u,o,h));continue}let s=e&&e._propertyBindings[t].binding.parsedPath;u=new lE(lD.create(i,h,s),r.ValueTypeName,r.getValueSize()),++u.referenceCount,this._addInactiveBinding(u,o,h),n[t]=u}a[t].resultBuffer=u.buffer}}_activateAction(t){if(!this._isActiveAction(t)){if(null===t._cacheIndex){let e=(t._localRoot||this._root).uuid,i=t._clip.uuid,s=this._actionsByClip[i];this._bindAction(t,s&&s.knownActions[0]),this._addInactiveAction(t,i,e)}let e=t._propertyBindings;for(let t=0,i=e.length;t!==i;++t){let i=e[t];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(t)}}_deactivateAction(t){if(this._isActiveAction(t)){let e=t._propertyBindings;for(let t=0,i=e.length;t!==i;++t){let i=e[t];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(t)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let 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){let e=t._cacheIndex;return null!==e&&e=0;--i)t[i].stop();return this}update(t){t*=this.timeScale;let e=this._actions,i=this._nActiveActions,s=this.time+=t,r=Math.sign(t),n=this._accuIndex^=1;for(let a=0;a!==i;++a)e[a]._update(s,t,r,n);let a=this._bindings,o=this._nActiveBindings;for(let t=0;t!==o;++t)a[t].apply(n);return this}setTime(t){this.time=0;for(let t=0;t1)||void 0===arguments[1]||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return l3(t,this,i,e),i.sort(l2),i}intersectObjects(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];for(let s=0,r=t.length;s1&&void 0!==arguments[1]?arguments[1]:0;for(let i=0;i<4;i++)this.elements[i]=t[i+e];return this}set(t,e,i,s){let r=this.elements;return r[0]=t,r[2]=e,r[1]=i,r[3]=s,this}constructor(t,e,i,s){l9.prototype.isMatrix2=!0,this.elements=[1,0,0,1],void 0!==t&&this.set(t,e,i,s)}}let l7=new iW;class ut{set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;e=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.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.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,l7).distanceTo(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}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)}constructor(t=new iW(Infinity,Infinity),e=new iW(-1/0,-1/0)){this.isBox2=!0,this.min=t,this.max=e}}let ue=new iD,ui=new iD,us=new iD,ur=new iD,un=new iD,ua=new iD,uo=new iD;class uh{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){ue.subVectors(t,this.start),ui.subVectors(this.end,this.start);let i=ui.dot(ui),s=ui.dot(ue)/i;return e&&(s=iP(s,0,1)),s}closestPointToPoint(t,e,i){let s=this.closestPointToPointParameter(t,e);return this.delta(i).multiplyScalar(s).add(this.start)}distanceSqToLine3(t){let e,i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ua,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:uo,n=1e-8*1e-8,a=this.start,o=t.start,h=this.end,l=t.end;us.subVectors(h,a),ur.subVectors(l,o),un.subVectors(a,o);let u=us.dot(us),c=ur.dot(ur),d=ur.dot(un);if(u<=n&&c<=n)return s.copy(a),r.copy(o),s.sub(r),s.dot(s);if(u<=n)e=0,i=iP(i=d/c,0,1);else{let t=us.dot(un);if(c<=n)i=0,e=iP(-t/u,0,1);else{let s=us.dot(ur),r=u*c-s*s;e=0!==r?iP((s*d-t*c)/r,0,1):0,(i=(s*e+d)/c)<0?(i=0,e=iP(-t/u,0,1)):i>1&&(i=1,e=iP((s-t)/u,0,1))}}return s.copy(a).add(us.multiplyScalar(e)),r.copy(o).add(ur.multiplyScalar(i)),s.sub(r),s.dot(s)}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)}constructor(t=new iD,e=new iD){this.start=t,this.end=e}}let ul=new iD;class uu extends re{dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);let t=this.light.distance?this.light.distance:1e3,e=t*Math.tan(this.light.angle);this.cone.scale.set(e,e,t),ul.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(ul),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}constructor(t,e){super(),this.light=t,this.matrixAutoUpdate=!1,this.color=e,this.type="SpotLightHelper";let i=new rY,s=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let t=0,e=1;t<32;t++,e++){let i=t/32*Math.PI*2,r=e/32*Math.PI*2;s.push(Math.cos(i),Math.sin(i),1,Math.cos(r),Math.sin(r),1)}i.setAttribute("position",new rW(s,3));let r=new aC({fog:!1,toneMapped:!1});this.cone=new aW(i,r),this.add(this.cone),this.update()}}let uc=new iD,ud=new sF,up=new sF;class um extends aW{updateMatrixWorld(t){let e=this.bones,i=this.geometry,s=i.getAttribute("position");up.copy(this.root.matrixWorld).invert();for(let t=0,i=0;t1)for(let i=0;i.99999)this.quaternion.set(0,0,0,1);else if(t.y<-.99999)this.quaternion.set(1,0,0,0);else{uO.set(t.z,0,-t.x).normalize();let e=Math.acos(t.y);this.quaternion.setFromAxisAngle(uO,e)}}setLength(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.2*t,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.2*e;this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(i,e,i),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}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}constructor(t=new iD(0,0,1),e=new iD(0,0,0),i=1,s=0xffff00,r=.2*i,n=.2*r){super(),this.type="ArrowHelper",void 0===a&&((a=new rY).setAttribute("position",new rW([0,0,0,0,1,0],3)),(o=new a9(.5,1,5,1)).translate(0,-.5,0)),this.position.copy(e),this.line=new aV(a,new aC({color:s,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new r8(o,new r_({color:s,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(t),this.setLength(i,r,n)}}class uN extends aW{setColors(t,e,i){let s=new rb,r=this.geometry.attributes.color.array;return s.set(t),s.toArray(r,0),s.toArray(r,3),s.set(e),s.toArray(r,6),s.toArray(r,9),s.set(i),s.toArray(r,12),s.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}constructor(t=1){let e=new rY;e.setAttribute("position",new rW([0,0,0,t,0,0,0,0,0,0,t,0,0,0,0,0,0,t],3)),e.setAttribute("color",new rW([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(e,new aC({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}}class uV{moveTo(t,e){return this.currentPath=new oz,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath.lineTo(t,e),this}quadraticCurveTo(t,e,i,s){return this.currentPath.quadraticCurveTo(t,e,i,s),this}bezierCurveTo(t,e,i,s,r,n){return this.currentPath.bezierCurveTo(t,e,i,s,r,n),this}splineThru(t){return this.currentPath.splineThru(t),this}toShapes(t){let e,i,s,r,n,a=oJ.isClockWise,o=this.subPaths;if(0===o.length)return[];let h=[];if(1===o.length)return i=o[0],(s=new oI).curves=i.curves,h.push(s),h;let l=!a(o[0].getPoints());l=t?!l:l;let u=[],c=[],d=[],p=0;c[0]=void 0,d[p]=[];for(let s=0,n=o.length;s1){let t=!1,e=0;for(let t=0,e=c.length;tNumber.EPSILON){if(h<0&&(i=e[n],o=-o,a=e[r],h=-h),t.ya.y)continue;if(t.y===i.y){if(t.x===i.x)return!0}else{let e=h*(t.x-i.x)-o*(t.y-i.y);if(0===e)return!0;if(e<0)continue;s=!s}}else{if(t.y!==i.y)continue;if(a.x<=t.x&&t.x<=i.x||i.x<=t.x&&t.x<=a.x)return!0}}return s})(n.p,c[s].p)&&(i!==s&&e++,a?(a=!1,u[s].push(n)):t=!0);a&&u[i].push(n)}}e>0&&!1===t&&(d=u)}for(let t=0,e=c.length;te?(t.repeat.x=1,t.repeat.y=i/e,t.offset.x=0,t.offset.y=(1-t.repeat.y)/2):(t.repeat.x=e/i,t.repeat.y=1,t.offset.x=(1-t.repeat.x)/2,t.offset.y=0),t}static cover(t,e){let i=t.image&&t.image.width?t.image.width/t.image.height:1;return i>e?(t.repeat.x=e/i,t.repeat.y=1,t.offset.x=(1-t.repeat.x)/2,t.offset.y=0):(t.repeat.x=1,t.repeat.y=i/e,t.offset.x=0,t.offset.y=(1-t.repeat.y)/2),t}static fill(t){return t.repeat.x=1,t.repeat.y=1,t.offset.x=0,t.offset.y=0,t}static getByteLength(t,e,i,s){return uL(t,e,i,s)}}"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:h}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=h)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/bd904a5c-c8eb14764606a11a.js b/docs/_next/static/chunks/bd904a5c-c8eb14764606a11a.js deleted file mode 100644 index 53676526..00000000 --- a/docs/_next/static/chunks/bd904a5c-c8eb14764606a11a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[831],{5339:(t,e,i)=>{let s;i.d(e,{$EB:()=>p,$Kf:()=>r_,$Yl:()=>P,$_I:()=>tb,$ei:()=>_,A$4:()=>sR,AQS:()=>e$,B69:()=>sr,BH$:()=>r6,BKk:()=>s8,BXX:()=>tq,B_h:()=>t1,CSG:()=>nT,CVz:()=>tQ,CWW:()=>eu,Cfg:()=>tf,DXC:()=>r5,Dmk:()=>tE,EAD:()=>rC,EZo:()=>f,EdD:()=>x,FCc:()=>r4,FFZ:()=>eE,FV:()=>te,FXf:()=>M,Fn:()=>er,GJx:()=>tc,GWd:()=>tO,GYF:()=>rz,Gwm:()=>J,H23:()=>en,HIg:()=>tN,HO_:()=>el,HXV:()=>tZ,HiM:()=>ar,Hit:()=>nL,I46:()=>rS,I9Y:()=>eq,IE4:()=>tj,IUQ:()=>ih,Iit:()=>s5,Jnc:()=>o,K52:()=>q,KDk:()=>t$,KLL:()=>eS,KRh:()=>Z,Kef:()=>eo,Kwu:()=>g,Kzg:()=>au,LAk:()=>ts,LiQ:()=>C,LlO:()=>s6,LoY:()=>sW,MBL:()=>nU,MW4:()=>sI,Mjd:()=>$,N1A:()=>r0,N5j:()=>ef,NRn:()=>ip,NTi:()=>y,Nex:()=>aw,Nt7:()=>R,Nwf:()=>aM,Nz6:()=>tH,O49:()=>em,O9p:()=>iQ,ONl:()=>ne,OUM:()=>tv,Om:()=>tu,OuU:()=>B,PJ3:()=>ed,PPD:()=>rJ,PTz:()=>eX,Pq0:()=>eY,Q1f:()=>sS,QP0:()=>h,Qev:()=>eN,Qrf:()=>t5,R3r:()=>rh,RJ4:()=>ep,RQf:()=>tA,RiT:()=>nj,Riy:()=>tK,RrE:()=>V,RyA:()=>u,S$4:()=>es,ScU:()=>n0,THS:()=>sE,Tap:()=>n1,TdN:()=>eI,TiK:()=>eT,TkQ:()=>tU,U3G:()=>H,V3x:()=>tB,V9B:()=>sT,VCu:()=>ns,VT0:()=>tF,Vb5:()=>a,VxR:()=>ew,W9U:()=>ea,WNZ:()=>n,Wdf:()=>eR,Wew:()=>tC,Wk7:()=>l,XG_:()=>eh,XIg:()=>m,XrR:()=>G,Y9S:()=>nQ,YJl:()=>ra,Yuy:()=>t_,Z58:()=>ru,ZLX:()=>rP,ZQM:()=>tL,Zcv:()=>rU,Zr2:()=>eM,ZyN:()=>ao,_4j:()=>nz,_QJ:()=>t8,_Ut:()=>s4,a55:()=>eF,a5J:()=>t6,aEY:()=>N,aHM:()=>nY,aJ8:()=>tr,aVO:()=>nC,amv:()=>e_,b4q:()=>rr,bC7:()=>et,bCz:()=>b,bI3:()=>eg,bdM:()=>n_,bkx:()=>tz,brA:()=>W,bw0:()=>X,c90:()=>tW,cHt:()=>tS,caT:()=>Y,cj9:()=>eJ,czI:()=>t2,dYF:()=>id,dcC:()=>tP,dth:()=>n3,dwI:()=>eQ,e0p:()=>F,eB$:()=>rc,eHc:()=>D,eHs:()=>rp,eaF:()=>s0,eoi:()=>eC,er$:()=>ev,f4X:()=>T,fBL:()=>tw,g7M:()=>ti,gJ2:()=>tk,gO9:()=>v,gPd:()=>io,gWB:()=>eB,ghU:()=>td,hB5:()=>c,hdd:()=>E,hgQ:()=>O,hsX:()=>d,hxR:()=>tm,hy7:()=>ta,iNn:()=>s2,ie2:()=>k,imn:()=>sA,ix0:()=>tT,iyt:()=>iR,jR7:()=>tJ,jUj:()=>rl,jej:()=>e5,jf0:()=>eb,jzd:()=>ek,k6Q:()=>tX,k6q:()=>tg,kO0:()=>eA,kRr:()=>tx,kTW:()=>tp,kTp:()=>tY,kn4:()=>iU,kyO:()=>K,lGu:()=>U,lGw:()=>nR,lPF:()=>e1,ljd:()=>ec,lxW:()=>s3,lyL:()=>t7,mcG:()=>e3,mrM:()=>rq,nCl:()=>n7,nNL:()=>tt,nST:()=>w,nWS:()=>iu,nZQ:()=>ac,o6l:()=>rn,ojh:()=>z,ojs:()=>ei,ov9:()=>L,pBf:()=>tG,pHI:()=>ty,paN:()=>tD,ppV:()=>e8,psI:()=>t4,qUd:()=>an,qa3:()=>t0,qad:()=>A,qq$:()=>e0,r6x:()=>ah,rFo:()=>ic,rSH:()=>t3,rYR:()=>ey,rjZ:()=>nr,sPf:()=>r,tJf:()=>tM,tz3:()=>nH,uB5:()=>t9,uSd:()=>nA,uV5:()=>tl,uWO:()=>rk,ubm:()=>ri,vim:()=>ez,vyJ:()=>ex,wfO:()=>th,wn6:()=>I,wrO:()=>tI,xFO:()=>to,xSv:()=>j,y3Z:()=>ee,yT7:()=>tR,y_p:()=>Q,zdS:()=>tV,zgK:()=>iK,znC:()=>S});let r="180",n=0,a=1,o=2,h=1,l=2,u=3,c=0,d=1,p=2,m=0,y=1,f=2,g=3,x=4,b=5,v=100,M=101,w=102,S=103,_=104,z=200,A=201,T=202,C=203,k=204,B=205,E=206,R=207,I=208,N=209,O=210,V=211,P=212,F=213,L=214,D=0,U=1,W=2,j=3,H=4,J=5,q=6,X=7,Y=0,Z=1,G=2,Q=0,K=1,$=2,tt=3,te=4,ti=5,ts=6,tr=7,tn="attached",ta=301,to=302,th=303,tl=304,tu=306,tc=1e3,td=1001,tp=1002,tm=1003,ty=1004,tf=1005,tg=1006,tx=1007,tb=1008,tv=1009,tM=1010,tw=1011,tS=1012,t_=1013,tz=1014,tA=1015,tT=1016,tC=1017,tk=1018,tB=1020,tE=35902,tR=35899,tI=1021,tN=1022,tO=1023,tV=1026,tP=1027,tF=1028,tL=1029,tD=1030,tU=1031,tW=1033,tj=33776,tH=33777,tJ=33778,tq=33779,tX=35840,tY=35841,tZ=35842,tG=35843,tQ=36196,tK=37492,t$=37496,t0=37808,t1=37809,t2=37810,t3=37811,t5=37812,t4=37813,t6=37814,t8=37815,t9=37816,t7=37817,et=37818,ee=37819,ei=37820,es=37821,er=36492,en=36494,ea=36495,eo=36283,eh=36284,el=36285,eu=36286,ec=2300,ed=2301,ep=0,em=1,ey=2,ef=3201,eg=0,ex=1,eb="",ev="srgb",eM="srgb-linear",ew="linear",eS="srgb",e_=512,ez=513,eA=514,eT=515,eC=516,ek=517,eB=518,eE=519,eR="300 es",eI=2e3;class eN{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});let i=this._listeners;void 0===i[t]&&(i[t]=[]),-1===i[t].indexOf(e)&&i[t].push(e)}hasEventListener(t,e){let i=this._listeners;return void 0!==i&&void 0!==i[t]&&-1!==i[t].indexOf(e)}removeEventListener(t,e){let i=this._listeners;if(void 0===i)return;let s=i[t];if(void 0!==s){let t=s.indexOf(e);-1!==t&&s.splice(t,1)}}dispatchEvent(t){let e=this._listeners;if(void 0===e)return;let i=e[t.type];if(void 0!==i){t.target=this;let e=i.slice(0);for(let i=0,s=e.length;i>8&255]+eO[t>>16&255]+eO[t>>24&255]+"-"+eO[255&e]+eO[e>>8&255]+"-"+eO[e>>16&15|64]+eO[e>>24&255]+"-"+eO[63&i|128]+eO[i>>8&255]+"-"+eO[i>>16&255]+eO[i>>24&255]+eO[255&s]+eO[s>>8&255]+eO[s>>16&255]+eO[s>>24&255]).toLowerCase()}function eD(t,e,i){return Math.max(e,Math.min(i,t))}function eU(t,e){return(t%e+e)%e}function eW(t,e,i){return(1-i)*t+i*e}function ej(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/0xffffffff;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/0x7fffffff,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw Error("Invalid component type.")}}function eH(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(0xffffffff*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(0x7fffffff*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw Error("Invalid component type.")}}let eJ={DEG2RAD:eP,RAD2DEG:eF,generateUUID:eL,clamp:eD,euclideanModulo:eU,mapLinear:function(t,e,i,s,r){return s+(t-e)*(r-s)/(i-e)},inverseLerp:function(t,e,i){return t!==e?(i-t)/(e-t):0},lerp:eW,damp:function(t,e,i,s){return eW(t,e,1-Math.exp(-i*s))},pingpong:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return e-Math.abs(eU(t,2*e)-e)},smoothstep:function(t,e,i){return t<=e?0:t>=i?1:(t=(t-e)/(i-e))*t*(3-2*t)},smootherstep:function(t,e,i){return t<=e?0:t>=i?1:(t=(t-e)/(i-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){void 0!==t&&(eV=t);let e=eV+=0x6d2b79f5;return e=Math.imul(e^e>>>15,1|e),(((e^=e+Math.imul(e^e>>>7,61|e))^e>>>14)>>>0)/0x100000000},degToRad:function(t){return t*eP},radToDeg:function(t){return t*eF},isPowerOfTwo:function(t){return(t&t-1)==0&&0!==t},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,e,i,s,r){let n=Math.cos,a=Math.sin,o=n(i/2),h=a(i/2),l=n((e+s)/2),u=a((e+s)/2),c=n((e-s)/2),d=a((e-s)/2),p=n((s-e)/2),m=a((s-e)/2);switch(r){case"XYX":t.set(o*u,h*c,h*d,o*l);break;case"YZY":t.set(h*d,o*u,h*c,o*l);break;case"ZXZ":t.set(h*c,h*d,o*u,o*l);break;case"XZX":t.set(o*u,h*m,h*p,o*l);break;case"YXY":t.set(h*p,o*u,h*m,o*l);break;case"ZYZ":t.set(h*m,h*p,o*u,o*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:eH,denormalize:ej};class eq{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 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 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){return 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){return 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){let e=this.x,i=this.y,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6],this.y=s[1]*e+s[4]*i+s[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=eD(this.x,t.x,e.x),this.y=eD(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=eD(this.x,t,e),this.y=eD(this.y,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(eD(i,t,e))}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=Math.trunc(this.x),this.y=Math.trunc(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}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());return 0===e?Math.PI/2:Math.acos(eD(this.dot(t)/e,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,i=this.y-t.y;return e*e+i*i}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,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[e],this.y=t[e+1],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let i=Math.cos(e),s=Math.sin(e),r=this.x-t.x,n=this.y-t.y;return this.x=r*i-n*s+t.x,this.y=r*s+n*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}constructor(t=0,e=0){eq.prototype.isVector2=!0,this.x=t,this.y=e}}class eX{static slerpFlat(t,e,i,s,r,n,a){let o=i[s+0],h=i[s+1],l=i[s+2],u=i[s+3],c=r[n+0],d=r[n+1],p=r[n+2],m=r[n+3];if(0===a){t[e+0]=o,t[e+1]=h,t[e+2]=l,t[e+3]=u;return}if(1===a){t[e+0]=c,t[e+1]=d,t[e+2]=p,t[e+3]=m;return}if(u!==m||o!==c||h!==d||l!==p){let t=1-a,e=o*c+h*d+l*p+u*m,i=e>=0?1:-1,s=1-e*e;if(s>Number.EPSILON){let r=Math.sqrt(s),n=Math.atan2(r,e*i);t=Math.sin(t*n)/r,a=Math.sin(a*n)/r}let r=a*i;if(o=o*t+c*r,h=h*t+d*r,l=l*t+p*r,u=u*t+m*r,t===1-a){let t=1/Math.sqrt(o*o+h*h+l*l+u*u);o*=t,h*=t,l*=t,u*=t}}t[e]=o,t[e+1]=h,t[e+2]=l,t[e+3]=u}static multiplyQuaternionsFlat(t,e,i,s,r,n){let a=i[s],o=i[s+1],h=i[s+2],l=i[s+3],u=r[n],c=r[n+1],d=r[n+2],p=r[n+3];return t[e]=a*p+l*u+o*d-h*c,t[e+1]=o*p+l*c+h*u-a*d,t[e+2]=h*p+l*d+a*c-o*u,t[e+3]=l*p-a*u-o*c-h*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,i,s){return this._x=t,this._y=e,this._z=i,this._w=s,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){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1],i=t._x,s=t._y,r=t._z,n=t._order,a=Math.cos,o=Math.sin,h=a(i/2),l=a(s/2),u=a(r/2),c=o(i/2),d=o(s/2),p=o(r/2);switch(n){case"XYZ":this._x=c*l*u+h*d*p,this._y=h*d*u-c*l*p,this._z=h*l*p+c*d*u,this._w=h*l*u-c*d*p;break;case"YXZ":this._x=c*l*u+h*d*p,this._y=h*d*u-c*l*p,this._z=h*l*p-c*d*u,this._w=h*l*u+c*d*p;break;case"ZXY":this._x=c*l*u-h*d*p,this._y=h*d*u+c*l*p,this._z=h*l*p+c*d*u,this._w=h*l*u-c*d*p;break;case"ZYX":this._x=c*l*u-h*d*p,this._y=h*d*u+c*l*p,this._z=h*l*p-c*d*u,this._w=h*l*u+c*d*p;break;case"YZX":this._x=c*l*u+h*d*p,this._y=h*d*u+c*l*p,this._z=h*l*p-c*d*u,this._w=h*l*u-c*d*p;break;case"XZY":this._x=c*l*u-h*d*p,this._y=h*d*u-c*l*p,this._z=h*l*p+c*d*u,this._w=h*l*u+c*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+n)}return!0===e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let i=e/2,s=Math.sin(i);return this._x=t.x*s,this._y=t.y*s,this._z=t.z*s,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,i=e[0],s=e[4],r=e[8],n=e[1],a=e[5],o=e[9],h=e[2],l=e[6],u=e[10],c=i+a+u;if(c>0){let t=.5/Math.sqrt(c+1);this._w=.25/t,this._x=(l-o)*t,this._y=(r-h)*t,this._z=(n-s)*t}else if(i>a&&i>u){let t=2*Math.sqrt(1+i-a-u);this._w=(l-o)/t,this._x=.25*t,this._y=(s+n)/t,this._z=(r+h)/t}else if(a>u){let t=2*Math.sqrt(1+a-i-u);this._w=(r-h)/t,this._x=(s+n)/t,this._y=.25*t,this._z=(o+l)/t}else{let t=2*Math.sqrt(1+u-i-a);this._w=(n-s)/t,this._x=(r+h)/t,this._y=(o+l)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return i<1e-8?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0):(this._x=0,this._y=-t.z,this._z=t.y)):(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=i,this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(eD(this.dot(t),-1,1)))}rotateTowards(t,e){let i=this.angleTo(t);if(0===i)return this;let s=Math.min(1,e/i);return this.slerp(t,s),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){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let i=t._x,s=t._y,r=t._z,n=t._w,a=e._x,o=e._y,h=e._z,l=e._w;return this._x=i*l+n*a+s*h-r*o,this._y=s*l+n*o+r*a-i*h,this._z=r*l+n*h+i*o-s*a,this._w=n*l-i*a-s*o-r*h,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);let i=this._x,s=this._y,r=this._z,n=this._w,a=n*t._w+i*t._x+s*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=n,this._x=i,this._y=s,this._z=r,this;let o=1-a*a;if(o<=Number.EPSILON){let t=1-e;return this._w=t*n+e*this._w,this._x=t*i+e*this._x,this._y=t*s+e*this._y,this._z=t*r+e*this._z,this.normalize(),this}let h=Math.sqrt(o),l=Math.atan2(h,a),u=Math.sin((1-e)*l)/h,c=Math.sin(e*l)/h;return this._w=n*u+this._w*c,this._x=i*u+this._x*c,this._y=s*u+this._y*c,this._z=r*u+this._z*c,this._onChangeCallback(),this}slerpQuaternions(t,e,i){return this.copy(t).slerp(e,i)}random(){let t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),i=Math.random(),s=Math.sqrt(1-i),r=Math.sqrt(i);return this.set(s*Math.sin(t),s*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}constructor(t=0,e=0,i=0,s=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=i,this._w=s}}class eY{set(t,e,i){return void 0===i&&(i=this.z),this.x=t,this.y=e,this.z=i,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 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 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){return 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){return 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){return 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 this.applyQuaternion(eG.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(eG.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,i=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[3]*i+r[6]*s,this.y=r[1]*e+r[4]*i+r[7]*s,this.z=r[2]*e+r[5]*i+r[8]*s,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,i=this.y,s=this.z,r=t.elements,n=1/(r[3]*e+r[7]*i+r[11]*s+r[15]);return this.x=(r[0]*e+r[4]*i+r[8]*s+r[12])*n,this.y=(r[1]*e+r[5]*i+r[9]*s+r[13])*n,this.z=(r[2]*e+r[6]*i+r[10]*s+r[14])*n,this}applyQuaternion(t){let e=this.x,i=this.y,s=this.z,r=t.x,n=t.y,a=t.z,o=t.w,h=2*(n*s-a*i),l=2*(a*e-r*s),u=2*(r*i-n*e);return this.x=e+o*h+n*u-a*l,this.y=i+o*l+a*h-r*u,this.z=s+o*u+r*l-n*h,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,i=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[4]*i+r[8]*s,this.y=r[1]*e+r[5]*i+r[9]*s,this.z=r[2]*e+r[6]*i+r[10]*s,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=eD(this.x,t.x,e.x),this.y=eD(this.y,t.y,e.y),this.z=eD(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=eD(this.x,t,e),this.y=eD(this.y,t,e),this.z=eD(this.z,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(eD(i,t,e))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(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,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let i=t.x,s=t.y,r=t.z,n=e.x,a=e.y,o=e.z;return this.x=s*o-r*a,this.y=r*n-i*o,this.z=i*a-s*n,this}projectOnVector(t){let e=t.lengthSq();if(0===e)return this.set(0,0,0);let i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return eZ.copy(this).projectOnVector(t),this.sub(eZ)}reflect(t){return this.sub(eZ.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());return 0===e?Math.PI/2:Math.acos(eD(this.dot(t)/e,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,i=this.y-t.y,s=this.z-t.z;return e*e+i*i+s*s}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,i){let s=Math.sin(e)*t;return this.x=s*Math.sin(i),this.y=Math.cos(e)*t,this.z=s*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=s,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return 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(){let t=Math.random()*Math.PI*2,e=2*Math.random()-1,i=Math.sqrt(1-e*e);return this.x=i*Math.cos(t),this.y=e,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}constructor(t=0,e=0,i=0){eY.prototype.isVector3=!0,this.x=t,this.y=e,this.z=i}}let eZ=new eY,eG=new eX;class eQ{set(t,e,i,s,r,n,a,o,h){let l=this.elements;return l[0]=t,l[1]=s,l[2]=a,l[3]=e,l[4]=r,l[5]=o,l[6]=i,l[7]=n,l[8]=h,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let 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){let i=t.elements,s=e.elements,r=this.elements,n=i[0],a=i[3],o=i[6],h=i[1],l=i[4],u=i[7],c=i[2],d=i[5],p=i[8],m=s[0],y=s[3],f=s[6],g=s[1],x=s[4],b=s[7],v=s[2],M=s[5],w=s[8];return r[0]=n*m+a*g+o*v,r[3]=n*y+a*x+o*M,r[6]=n*f+a*b+o*w,r[1]=h*m+l*g+u*v,r[4]=h*y+l*x+u*M,r[7]=h*f+l*b+u*w,r[2]=c*m+d*g+p*v,r[5]=c*y+d*x+p*M,r[8]=c*f+d*b+p*w,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],i=t[1],s=t[2],r=t[3],n=t[4],a=t[5],o=t[6],h=t[7],l=t[8];return e*n*l-e*a*h-i*r*l+i*a*o+s*r*h-s*n*o}invert(){let t=this.elements,e=t[0],i=t[1],s=t[2],r=t[3],n=t[4],a=t[5],o=t[6],h=t[7],l=t[8],u=l*n-a*h,c=a*o-l*r,d=h*r-n*o,p=e*u+i*c+s*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);let m=1/p;return t[0]=u*m,t[1]=(s*h-l*i)*m,t[2]=(a*i-s*n)*m,t[3]=c*m,t[4]=(l*e-s*o)*m,t[5]=(s*r-a*e)*m,t[6]=d*m,t[7]=(i*o-h*e)*m,t[8]=(n*e-i*r)*m,this}transpose(){let t,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){let 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,i,s,r,n,a){let o=Math.cos(r),h=Math.sin(r);return this.set(i*o,i*h,-i*(o*n+h*a)+n+t,-s*h,s*o,-s*(-h*n+o*a)+a+e,0,0,1),this}scale(t,e){return this.premultiply(eK.makeScale(t,e)),this}rotate(t){return this.premultiply(eK.makeRotation(-t)),this}translate(t,e){return this.premultiply(eK.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,i=t.elements;for(let t=0;t<9;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}constructor(t,e,i,s,r,n,a,o,h){eQ.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,e,i,s,r,n,a,o,h)}}let eK=new eQ;function e$(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}function e0(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function e1(){let t=e0("canvas");return t.style.display="block",t}Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array;let e2={};function e3(t){t in e2||(e2[t]=!0,console.warn(t))}function e5(t,e,i){return new Promise(function(s,r){setTimeout(function n(){switch(t.clientWaitSync(e,t.SYNC_FLUSH_COMMANDS_BIT,0)){case t.WAIT_FAILED:r();break;case t.TIMEOUT_EXPIRED:setTimeout(n,i);break;default:s()}},i)})}let e4=new eQ().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),e6=new eQ().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715),e8=function(){let t={enabled:!0,workingColorSpace:eM,spaces:{},convert:function(t,e,i){return!1!==this.enabled&&e!==i&&e&&i&&(this.spaces[e].transfer===eS&&(t.r=e9(t.r),t.g=e9(t.g),t.b=e9(t.b)),this.spaces[e].primaries!==this.spaces[i].primaries&&(t.applyMatrix3(this.spaces[e].toXYZ),t.applyMatrix3(this.spaces[i].fromXYZ)),this.spaces[i].transfer===eS&&(t.r=e7(t.r),t.g=e7(t.g),t.b=e7(t.b))),t},workingToColorSpace:function(t,e){return this.convert(t,this.workingColorSpace,e)},colorSpaceToWorking:function(t,e){return this.convert(t,e,this.workingColorSpace)},getPrimaries:function(t){return this.spaces[t].primaries},getTransfer:function(t){return t===eb?ew:this.spaces[t].transfer},getToneMappingMode:function(t){return this.spaces[t].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.workingColorSpace;return t.fromArray(this.spaces[e].luminanceCoefficients)},define:function(t){Object.assign(this.spaces,t)},_getMatrix:function(t,e,i){return t.copy(this.spaces[e].toXYZ).multiply(this.spaces[i].fromXYZ)},_getDrawingBufferColorSpace:function(t){return this.spaces[t].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.workingColorSpace;return this.spaces[t].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(e,i){return e3("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),t.workingToColorSpace(e,i)},toWorkingColorSpace:function(e,i){return e3("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),t.colorSpaceToWorking(e,i)}},e=[.64,.33,.3,.6,.15,.06],i=[.2126,.7152,.0722],s=[.3127,.329];return t.define({[eM]:{primaries:e,whitePoint:s,transfer:ew,toXYZ:e4,fromXYZ:e6,luminanceCoefficients:i,workingColorSpaceConfig:{unpackColorSpace:ev},outputColorSpaceConfig:{drawingBufferColorSpace:ev}},[ev]:{primaries:e,whitePoint:s,transfer:eS,toXYZ:e4,fromXYZ:e6,luminanceCoefficients:i,outputColorSpaceConfig:{drawingBufferColorSpace:ev}}}),t}();function e9(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function e7(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}class it{static getDataURL(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"image/png";if(/^data:/i.test(t.src)||"undefined"==typeof HTMLCanvasElement)return t.src;if(t instanceof HTMLCanvasElement)e=t;else{void 0===s&&(s=e0("canvas")),s.width=t.width,s.height=t.height;let i=s.getContext("2d");t instanceof ImageData?i.putImageData(t,0,0):i.drawImage(t,0,0,t.width,t.height),e=s}return e.toDataURL(i)}static sRGBToLinear(t){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){let e=e0("canvas");e.width=t.width,e.height=t.height;let i=e.getContext("2d");i.drawImage(t,0,0,t.width,t.height);let s=i.getImageData(0,0,t.width,t.height),r=s.data;for(let t=0;t0&&(i.userData=this.userData),e||(t.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(300!==this.mapping)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case tc:t.x=t.x-Math.floor(t.x);break;case td:t.x=t.x<0?0:1;break;case tp: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 tc:t.y=t.y-Math.floor(t.y);break;case td:t.y=t.y<0?0:1;break;case tp: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++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){!0===t&&this.pmremVersion++}constructor(t=io.DEFAULT_IMAGE,e=io.DEFAULT_MAPPING,i=td,s=td,r=tg,n=tb,a=tO,o=tv,h=io.DEFAULT_ANISOTROPY,l=eb){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:ir++}),this.uuid=eL(),this.name="",this.source=new ii(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=i,this.wrapT=s,this.magFilter=r,this.minFilter=n,this.anisotropy=h,this.format=a,this.internalFormat=null,this.type=o,this.offset=new eq(0,0),this.repeat=new eq(1,1),this.center=new eq(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new eQ,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=l,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!t&&!!t.depth&&t.depth>1,this.pmremVersion=0}}io.DEFAULT_IMAGE=null,io.DEFAULT_MAPPING=300,io.DEFAULT_ANISOTROPY=1;class ih{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,i,s){return this.x=t,this.y=e,this.z=i,this.w=s,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 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 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){return 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){return 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){let e=this.x,i=this.y,s=this.z,r=this.w,n=t.elements;return this.x=n[0]*e+n[4]*i+n[8]*s+n[12]*r,this.y=n[1]*e+n[5]*i+n[9]*s+n[13]*r,this.z=n[2]*e+n[6]*i+n[10]*s+n[14]*r,this.w=n[3]*e+n[7]*i+n[11]*s+n[15]*r,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let 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,i,s,r,n=t.elements,a=n[0],o=n[4],h=n[8],l=n[1],u=n[5],c=n[9],d=n[2],p=n[6],m=n[10];if(.01>Math.abs(o-l)&&.01>Math.abs(h-d)&&.01>Math.abs(c-p)){if(.1>Math.abs(o+l)&&.1>Math.abs(h+d)&&.1>Math.abs(c+p)&&.1>Math.abs(a+u+m-3))return this.set(1,0,0,0),this;e=Math.PI;let t=(a+1)/2,n=(u+1)/2,y=(m+1)/2,f=(o+l)/4,g=(h+d)/4,x=(c+p)/4;return t>n&&t>y?t<.01?(i=0,s=.707106781,r=.707106781):(s=f/(i=Math.sqrt(t)),r=g/i):n>y?n<.01?(i=.707106781,s=0,r=.707106781):(i=f/(s=Math.sqrt(n)),r=x/s):y<.01?(i=.707106781,s=.707106781,r=0):(i=g/(r=Math.sqrt(y)),s=x/r),this.set(i,s,r,e),this}let y=Math.sqrt((p-c)*(p-c)+(h-d)*(h-d)+(l-o)*(l-o));return .001>Math.abs(y)&&(y=1),this.x=(p-c)/y,this.y=(h-d)/y,this.z=(l-o)/y,this.w=Math.acos((a+u+m-1)/2),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}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.w=Math.min(this.w,t.w),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.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=eD(this.x,t.x,e.x),this.y=eD(this.y,t.y,e.y),this.z=eD(this.z,t.z,e.z),this.w=eD(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=eD(this.x,t,e),this.y=eD(this.y,t,e),this.z=eD(this.z,t,e),this.w=eD(this.w,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(eD(i,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,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)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}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.w+=(t.w-this.w)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this.w=t.w+(e.w-t.w)*i,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}constructor(t=0,e=0,i=0,s=1){ih.prototype.isVector4=!0,this.x=t,this.y=e,this.z=i,this.w=s}}class il extends eN{_setTextureOptions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e={minFilter:tg,generateMipmaps:!1,flipY:!1,internalFormat:null};void 0!==t.mapping&&(e.mapping=t.mapping),void 0!==t.wrapS&&(e.wrapS=t.wrapS),void 0!==t.wrapT&&(e.wrapT=t.wrapT),void 0!==t.wrapR&&(e.wrapR=t.wrapR),void 0!==t.magFilter&&(e.magFilter=t.magFilter),void 0!==t.minFilter&&(e.minFilter=t.minFilter),void 0!==t.format&&(e.format=t.format),void 0!==t.type&&(e.type=t.type),void 0!==t.anisotropy&&(e.anisotropy=t.anisotropy),void 0!==t.colorSpace&&(e.colorSpace=t.colorSpace),void 0!==t.flipY&&(e.flipY=t.flipY),void 0!==t.generateMipmaps&&(e.generateMipmaps=t.generateMipmaps),void 0!==t.internalFormat&&(e.internalFormat=t.internalFormat);for(let t=0;t2&&void 0!==arguments[2]?arguments[2]:1;if(this.width!==t||this.height!==e||this.depth!==i){this.width=t,this.height=e,this.depth=i;for(let s=0,r=this.textures.length;s1;this.dispose()}this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.scissor.copy(t.scissor),this.scissorTest=t.scissorTest,this.viewport.copy(t.viewport),this.textures.length=0;for(let e=0,i=t.textures.length;e1&&void 0!==arguments[1]&&arguments[1];return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=Infinity,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x1&&void 0!==arguments[1]&&arguments[1];t.updateWorldMatrix(!1,!1);let i=t.geometry;if(void 0!==i){let s=i.getAttribute("position");if(!0===e&&void 0!==s&&!0!==t.isInstancedMesh)for(let e=0,i=s.count;e=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.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.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,iy),iy.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(i_),iz.subVectors(this.max,i_),ix.subVectors(t.a,i_),ib.subVectors(t.b,i_),iv.subVectors(t.c,i_),iM.subVectors(ib,ix),iw.subVectors(iv,ib),iS.subVectors(ix,iv);let e=[0,-iM.z,iM.y,0,-iw.z,iw.y,0,-iS.z,iS.y,iM.z,0,-iM.x,iw.z,0,-iw.x,iS.z,0,-iS.x,-iM.y,iM.x,0,-iw.y,iw.x,0,-iS.y,iS.x,0];return!!iC(e,ix,ib,iv,iz)&&!!iC(e=[1,0,0,0,1,0,0,0,1],ix,ib,iv,iz)&&(iA.crossVectors(iM,iw),iC(e=[iA.x,iA.y,iA.z],ix,ib,iv,iz))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,iy).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=.5*this.getSize(iy).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()||(im[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),im[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),im[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),im[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),im[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),im[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),im[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),im[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(im)),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)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}constructor(t=new eY(Infinity,Infinity,Infinity),e=new eY(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}}let im=[new eY,new eY,new eY,new eY,new eY,new eY,new eY,new eY],iy=new eY,ig=new ip,ix=new eY,ib=new eY,iv=new eY,iM=new eY,iw=new eY,iS=new eY,i_=new eY,iz=new eY,iA=new eY,iT=new eY;function iC(t,e,i,s,r){for(let n=0,a=t.length-3;n<=a;n+=3){iT.fromArray(t,n);let a=r.x*Math.abs(iT.x)+r.y*Math.abs(iT.y)+r.z*Math.abs(iT.z),o=e.dot(iT),h=i.dot(iT),l=s.dot(iT);if(Math.max(-Math.max(o,h,l),Math.min(o,h,l))>a)return!1}return!0}let ik=new ip,iB=new eY,iE=new eY;class iR{set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let i=this.center;void 0!==e?i.copy(e):ik.setFromPoints(t).getCenter(i);let s=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.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){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;iB.subVectors(t,this.center);let e=iB.lengthSq();if(e>this.radius*this.radius){let t=Math.sqrt(e),i=(t-this.radius)*.5;this.center.addScaledVector(iB,i/t),this.radius+=i}return this}union(t){return t.isEmpty()||(this.isEmpty()?this.copy(t):!0===this.center.equals(t.center)?this.radius=Math.max(this.radius,t.radius):(iE.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(iB.copy(t.center).add(iE)),this.expandByPoint(iB.copy(t.center).sub(iE)))),this}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}constructor(t=new eY,e=-1){this.isSphere=!0,this.center=t,this.radius=e}}let iI=new eY,iN=new eY,iO=new eY,iV=new eY,iP=new eY,iF=new eY,iL=new eY;class iD{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.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,iI)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=iI.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(iI.copy(this.origin).addScaledVector(this.direction,e),iI.distanceToSquared(t))}distanceSqToSegment(t,e,i,s){let r,n,a,o;iN.copy(t).add(e).multiplyScalar(.5),iO.copy(e).sub(t).normalize(),iV.copy(this.origin).sub(iN);let h=.5*t.distanceTo(e),l=-this.direction.dot(iO),u=iV.dot(this.direction),c=-iV.dot(iO),d=iV.lengthSq(),p=Math.abs(1-l*l);if(p>0)if(r=l*c-u,n=l*u-c,o=h*p,r>=0)if(n>=-o)if(n<=o){let t=1/p;r*=t,n*=t,a=r*(r+l*n+2*u)+n*(l*r+n+2*c)+d}else a=-(r=Math.max(0,-(l*(n=h)+u)))*r+n*(n+2*c)+d;else a=-(r=Math.max(0,-(l*(n=-h)+u)))*r+n*(n+2*c)+d;else n<=-o?(n=(r=Math.max(0,-(-l*h+u)))>0?-h:Math.min(Math.max(-h,-c),h),a=-r*r+n*(n+2*c)+d):n<=o?(r=0,a=(n=Math.min(Math.max(-h,-c),h))*(n+2*c)+d):(n=(r=Math.max(0,-(l*h+u)))>0?h:Math.min(Math.max(-h,-c),h),a=-r*r+n*(n+2*c)+d);else n=l>0?-h:h,a=-(r=Math.max(0,-(l*n+u)))*r+n*(n+2*c)+d;return i&&i.copy(this.origin).addScaledVector(this.direction,r),s&&s.copy(iN).addScaledVector(iO,n),a}intersectSphere(t,e){iI.subVectors(t.center,this.origin);let i=iI.dot(this.direction),s=iI.dot(iI)-i*i,r=t.radius*t.radius;if(s>r)return null;let n=Math.sqrt(r-s),a=i-n,o=i+n;return o<0?null:a<0?this.at(o,e):this.at(a,e)}intersectsSphere(t){return!(t.radius<0)&&this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;let i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){let i=this.distanceToPlane(t);return null===i?null:this.at(i,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return!!(0===e||t.normal.dot(this.direction)*e<0)}intersectBox(t,e){let i,s,r,n,a,o,h=1/this.direction.x,l=1/this.direction.y,u=1/this.direction.z,c=this.origin;return(h>=0?(i=(t.min.x-c.x)*h,s=(t.max.x-c.x)*h):(i=(t.max.x-c.x)*h,s=(t.min.x-c.x)*h),l>=0?(r=(t.min.y-c.y)*l,n=(t.max.y-c.y)*l):(r=(t.max.y-c.y)*l,n=(t.min.y-c.y)*l),i>n||r>s||((r>i||isNaN(i))&&(i=r),(n=0?(a=(t.min.z-c.z)*u,o=(t.max.z-c.z)*u):(a=(t.max.z-c.z)*u,o=(t.min.z-c.z)*u),i>o||a>s||((a>i||i!=i)&&(i=a),(o=0?i:s,e)}intersectsBox(t){return null!==this.intersectBox(t,iI)}intersectTriangle(t,e,i,s,r){let n;iP.subVectors(e,t),iF.subVectors(i,t),iL.crossVectors(iP,iF);let a=this.direction.dot(iL);if(a>0){if(s)return null;n=1}else{if(!(a<0))return null;n=-1,a=-a}iV.subVectors(this.origin,t);let o=n*this.direction.dot(iF.crossVectors(iV,iF));if(o<0)return null;let h=n*this.direction.dot(iP.cross(iV));if(h<0||o+h>a)return null;let l=-n*iV.dot(iL);return l<0?null:this.at(l/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)}constructor(t=new eY,e=new eY(0,0,-1)){this.origin=t,this.direction=e}}class iU{set(t,e,i,s,r,n,a,o,h,l,u,c,d,p,m,y){let f=this.elements;return f[0]=t,f[4]=e,f[8]=i,f[12]=s,f[1]=r,f[5]=n,f[9]=a,f[13]=o,f[2]=h,f[6]=l,f[10]=u,f[14]=c,f[3]=d,f[7]=p,f[11]=m,f[15]=y,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 iU().fromArray(this.elements)}copy(t){let e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){let e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){let 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,i){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,i=t.elements,s=1/iW.setFromMatrixColumn(t,0).length(),r=1/iW.setFromMatrixColumn(t,1).length(),n=1/iW.setFromMatrixColumn(t,2).length();return e[0]=i[0]*s,e[1]=i[1]*s,e[2]=i[2]*s,e[3]=0,e[4]=i[4]*r,e[5]=i[5]*r,e[6]=i[6]*r,e[7]=0,e[8]=i[8]*n,e[9]=i[9]*n,e[10]=i[10]*n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,i=t.x,s=t.y,r=t.z,n=Math.cos(i),a=Math.sin(i),o=Math.cos(s),h=Math.sin(s),l=Math.cos(r),u=Math.sin(r);if("XYZ"===t.order){let t=n*l,i=n*u,s=a*l,r=a*u;e[0]=o*l,e[4]=-o*u,e[8]=h,e[1]=i+s*h,e[5]=t-r*h,e[9]=-a*o,e[2]=r-t*h,e[6]=s+i*h,e[10]=n*o}else if("YXZ"===t.order){let t=o*l,i=o*u,s=h*l,r=h*u;e[0]=t+r*a,e[4]=s*a-i,e[8]=n*h,e[1]=n*u,e[5]=n*l,e[9]=-a,e[2]=i*a-s,e[6]=r+t*a,e[10]=n*o}else if("ZXY"===t.order){let t=o*l,i=o*u,s=h*l,r=h*u;e[0]=t-r*a,e[4]=-n*u,e[8]=s+i*a,e[1]=i+s*a,e[5]=n*l,e[9]=r-t*a,e[2]=-n*h,e[6]=a,e[10]=n*o}else if("ZYX"===t.order){let t=n*l,i=n*u,s=a*l,r=a*u;e[0]=o*l,e[4]=s*h-i,e[8]=t*h+r,e[1]=o*u,e[5]=r*h+t,e[9]=i*h-s,e[2]=-h,e[6]=a*o,e[10]=n*o}else if("YZX"===t.order){let t=n*o,i=n*h,s=a*o,r=a*h;e[0]=o*l,e[4]=r-t*u,e[8]=s*u+i,e[1]=u,e[5]=n*l,e[9]=-a*l,e[2]=-h*l,e[6]=i*u+s,e[10]=t-r*u}else if("XZY"===t.order){let t=n*o,i=n*h,s=a*o,r=a*h;e[0]=o*l,e[4]=-u,e[8]=h*l,e[1]=t*u+r,e[5]=n*l,e[9]=i*u-s,e[2]=s*u-i,e[6]=a*l,e[10]=r*u+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(iH,t,iJ)}lookAt(t,e,i){let s=this.elements;return iY.subVectors(t,e),0===iY.lengthSq()&&(iY.z=1),iY.normalize(),iq.crossVectors(i,iY),0===iq.lengthSq()&&(1===Math.abs(i.z)?iY.x+=1e-4:iY.z+=1e-4,iY.normalize(),iq.crossVectors(i,iY)),iq.normalize(),iX.crossVectors(iY,iq),s[0]=iq.x,s[4]=iX.x,s[8]=iY.x,s[1]=iq.y,s[5]=iX.y,s[9]=iY.y,s[2]=iq.z,s[6]=iX.z,s[10]=iY.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let i=t.elements,s=e.elements,r=this.elements,n=i[0],a=i[4],o=i[8],h=i[12],l=i[1],u=i[5],c=i[9],d=i[13],p=i[2],m=i[6],y=i[10],f=i[14],g=i[3],x=i[7],b=i[11],v=i[15],M=s[0],w=s[4],S=s[8],_=s[12],z=s[1],A=s[5],T=s[9],C=s[13],k=s[2],B=s[6],E=s[10],R=s[14],I=s[3],N=s[7],O=s[11],V=s[15];return r[0]=n*M+a*z+o*k+h*I,r[4]=n*w+a*A+o*B+h*N,r[8]=n*S+a*T+o*E+h*O,r[12]=n*_+a*C+o*R+h*V,r[1]=l*M+u*z+c*k+d*I,r[5]=l*w+u*A+c*B+d*N,r[9]=l*S+u*T+c*E+d*O,r[13]=l*_+u*C+c*R+d*V,r[2]=p*M+m*z+y*k+f*I,r[6]=p*w+m*A+y*B+f*N,r[10]=p*S+m*T+y*E+f*O,r[14]=p*_+m*C+y*R+f*V,r[3]=g*M+x*z+b*k+v*I,r[7]=g*w+x*A+b*B+v*N,r[11]=g*S+x*T+b*E+v*O,r[15]=g*_+x*C+b*R+v*V,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],i=t[4],s=t[8],r=t[12],n=t[1],a=t[5],o=t[9],h=t[13],l=t[2],u=t[6],c=t[10],d=t[14],p=t[3],m=t[7];return p*(r*o*u-s*h*u-r*a*c+i*h*c+s*a*d-i*o*d)+m*(e*o*d-e*h*c+r*n*c-s*n*d+s*h*l-r*o*l)+t[11]*(e*h*u-e*a*d-r*n*u+i*n*d+r*a*l-i*h*l)+t[15]*(-s*a*l-e*o*u+e*a*c+s*n*u-i*n*c+i*o*l)}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(t,e,i){let s=this.elements;return t.isVector3?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=e,s[14]=i),this}invert(){let t=this.elements,e=t[0],i=t[1],s=t[2],r=t[3],n=t[4],a=t[5],o=t[6],h=t[7],l=t[8],u=t[9],c=t[10],d=t[11],p=t[12],m=t[13],y=t[14],f=t[15],g=u*y*h-m*c*h+m*o*d-a*y*d-u*o*f+a*c*f,x=p*c*h-l*y*h-p*o*d+n*y*d+l*o*f-n*c*f,b=l*m*h-p*u*h+p*a*d-n*m*d-l*a*f+n*u*f,v=p*u*o-l*m*o-p*a*c+n*m*c+l*a*y-n*u*y,M=e*g+i*x+s*b+r*v;if(0===M)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let w=1/M;return t[0]=g*w,t[1]=(m*c*r-u*y*r-m*s*d+i*y*d+u*s*f-i*c*f)*w,t[2]=(a*y*r-m*o*r+m*s*h-i*y*h-a*s*f+i*o*f)*w,t[3]=(u*o*r-a*c*r-u*s*h+i*c*h+a*s*d-i*o*d)*w,t[4]=x*w,t[5]=(l*y*r-p*c*r+p*s*d-e*y*d-l*s*f+e*c*f)*w,t[6]=(p*o*r-n*y*r-p*s*h+e*y*h+n*s*f-e*o*f)*w,t[7]=(n*c*r-l*o*r+l*s*h-e*c*h-n*s*d+e*o*d)*w,t[8]=b*w,t[9]=(p*u*r-l*m*r-p*i*d+e*m*d+l*i*f-e*u*f)*w,t[10]=(n*m*r-p*a*r+p*i*h-e*m*h-n*i*f+e*a*f)*w,t[11]=(l*a*r-n*u*r-l*i*h+e*u*h+n*i*d-e*a*d)*w,t[12]=v*w,t[13]=(l*m*s-p*u*s+p*i*c-e*m*c-l*i*y+e*u*y)*w,t[14]=(p*a*s-n*m*s-p*i*o+e*m*o+n*i*y-e*a*y)*w,t[15]=(n*u*s-l*a*s+l*i*o-e*u*o-n*i*c+e*a*c)*w,this}scale(t){let e=this.elements,i=t.x,s=t.y,r=t.z;return e[0]*=i,e[4]*=s,e[8]*=r,e[1]*=i,e[5]*=s,e[9]*=r,e[2]*=i,e[6]*=s,e[10]*=r,e[3]*=i,e[7]*=s,e[11]*=r,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];return Math.sqrt(Math.max(e,t[4]*t[4]+t[5]*t[5]+t[6]*t[6],t[8]*t[8]+t[9]*t[9]+t[10]*t[10]))}makeTranslation(t,e,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let i=Math.cos(e),s=Math.sin(e),r=1-i,n=t.x,a=t.y,o=t.z,h=r*n,l=r*a;return this.set(h*n+i,h*a-s*o,h*o+s*a,0,h*a+s*o,l*a+i,l*o-s*n,0,h*o-s*a,l*o+s*n,r*o*o+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,s,r,n){return this.set(1,i,r,0,t,1,n,0,e,s,1,0,0,0,0,1),this}compose(t,e,i){let s=this.elements,r=e._x,n=e._y,a=e._z,o=e._w,h=r+r,l=n+n,u=a+a,c=r*h,d=r*l,p=r*u,m=n*l,y=n*u,f=a*u,g=o*h,x=o*l,b=o*u,v=i.x,M=i.y,w=i.z;return s[0]=(1-(m+f))*v,s[1]=(d+b)*v,s[2]=(p-x)*v,s[3]=0,s[4]=(d-b)*M,s[5]=(1-(c+f))*M,s[6]=(y+g)*M,s[7]=0,s[8]=(p+x)*w,s[9]=(y-g)*w,s[10]=(1-(c+m))*w,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this}decompose(t,e,i){let s=this.elements,r=iW.set(s[0],s[1],s[2]).length(),n=iW.set(s[4],s[5],s[6]).length(),a=iW.set(s[8],s[9],s[10]).length();0>this.determinant()&&(r=-r),t.x=s[12],t.y=s[13],t.z=s[14],ij.copy(this);let o=1/r,h=1/n,l=1/a;return ij.elements[0]*=o,ij.elements[1]*=o,ij.elements[2]*=o,ij.elements[4]*=h,ij.elements[5]*=h,ij.elements[6]*=h,ij.elements[8]*=l,ij.elements[9]*=l,ij.elements[10]*=l,e.setFromRotationMatrix(ij),i.x=r,i.y=n,i.z=a,this}makePerspective(t,e,i,s,r,n){let a,o,h=arguments.length>6&&void 0!==arguments[6]?arguments[6]:eI,l=arguments.length>7&&void 0!==arguments[7]&&arguments[7],u=this.elements;if(l)a=r/(n-r),o=n*r/(n-r);else if(h===eI)a=-(n+r)/(n-r),o=-2*n*r/(n-r);else if(2001===h)a=-n/(n-r),o=-n*r/(n-r);else throw Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+h);return u[0]=2*r/(e-t),u[4]=0,u[8]=(e+t)/(e-t),u[12]=0,u[1]=0,u[5]=2*r/(i-s),u[9]=(i+s)/(i-s),u[13]=0,u[2]=0,u[6]=0,u[10]=a,u[14]=o,u[3]=0,u[7]=0,u[11]=-1,u[15]=0,this}makeOrthographic(t,e,i,s,r,n){let a,o,h=arguments.length>6&&void 0!==arguments[6]?arguments[6]:eI,l=arguments.length>7&&void 0!==arguments[7]&&arguments[7],u=this.elements;if(l)a=1/(n-r),o=n/(n-r);else if(h===eI)a=-2/(n-r),o=-(n+r)/(n-r);else if(2001===h)a=-1/(n-r),o=-r/(n-r);else throw Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+h);return u[0]=2/(e-t),u[4]=0,u[8]=0,u[12]=-(e+t)/(e-t),u[1]=0,u[5]=2/(i-s),u[9]=0,u[13]=-(i+s)/(i-s),u[2]=0,u[6]=0,u[10]=a,u[14]=o,u[3]=0,u[7]=0,u[11]=0,u[15]=1,this}equals(t){let e=this.elements,i=t.elements;for(let t=0;t<16;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}constructor(t,e,i,s,r,n,a,o,h,l,u,c,d,p,m,y){iU.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,i,s,r,n,a,o,h,l,u,c,d,p,m,y)}}let iW=new eY,ij=new iU,iH=new eY(0,0,0),iJ=new eY(1,1,1),iq=new eY,iX=new eY,iY=new eY,iZ=new iU,iG=new eX;class iQ{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,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._order;return this._x=t,this._y=e,this._z=i,this._order=s,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){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._order,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],s=t.elements,r=s[0],n=s[4],a=s[8],o=s[1],h=s[5],l=s[9],u=s[2],c=s[6],d=s[10];switch(e){case"XYZ":this._y=Math.asin(eD(a,-1,1)),.9999999>Math.abs(a)?(this._x=Math.atan2(-l,d),this._z=Math.atan2(-n,r)):(this._x=Math.atan2(c,h),this._z=0);break;case"YXZ":this._x=Math.asin(-eD(l,-1,1)),.9999999>Math.abs(l)?(this._y=Math.atan2(a,d),this._z=Math.atan2(o,h)):(this._y=Math.atan2(-u,r),this._z=0);break;case"ZXY":this._x=Math.asin(eD(c,-1,1)),.9999999>Math.abs(c)?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-n,h)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-eD(u,-1,1)),.9999999>Math.abs(u)?(this._x=Math.atan2(c,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-n,h));break;case"YZX":this._z=Math.asin(eD(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(-l,h),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-eD(n,-1,1)),.9999999>Math.abs(n)?(this._x=Math.atan2(c,h),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-l,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===i&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return iZ.makeRotationFromQuaternion(t),this.setFromRotationMatrix(iZ,e,i)}setFromVector3(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._order;return this.set(t.x,t.y,t.z,e)}reorder(t){return iG.setFromEuler(this),this.setFromQuaternion(iG,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(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}constructor(t=0,e=0,i=0,s=iQ.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=i,this._order=s}}iQ.DEFAULT_ORDER="XYZ";class iK{set(t){this.mask=1<>>0}enable(t){this.mask|=1<1){for(let t=0;t1){for(let t=0;t2&&void 0!==arguments[2]?arguments[2]:[];this[t]===e&&i.push(this);let s=this.children;for(let r=0,n=s.length;r0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.geometryInfo=this._geometryInfo.map(t=>({...t,boundingBox:t.boundingBox?t.boundingBox.toJSON():void 0,boundingSphere:t.boundingSphere?t.boundingSphere.toJSON():void 0})),s.instanceInfo=this._instanceInfo.map(t=>({...t})),s.availableInstanceIds=this._availableInstanceIds.slice(),s.availableGeometryIds=this._availableGeometryIds.slice(),s.nextIndexStart=this._nextIndexStart,s.nextVertexStart=this._nextVertexStart,s.geometryCount=this._geometryCount,s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.matricesTexture=this._matricesTexture.toJSON(t),s.indirectTexture=this._indirectTexture.toJSON(t),null!==this._colorsTexture&&(s.colorsTexture=this._colorsTexture.toJSON(t)),null!==this.boundingSphere&&(s.boundingSphere=this.boundingSphere.toJSON()),null!==this.boundingBox&&(s.boundingBox=this.boundingBox.toJSON())),this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(s.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=r(t.geometries,this.geometry);let e=this.geometry.parameters;if(void 0!==e&&void 0!==e.shapes){let i=e.shapes;if(Array.isArray(i))for(let e=0,s=i.length;e0){s.children=[];for(let e=0;e0){s.animations=[];for(let e=0;e0&&(i.geometries=e),s.length>0&&(i.materials=s),r.length>0&&(i.textures=r),a.length>0&&(i.images=a),o.length>0&&(i.shapes=o),h.length>0&&(i.skeletons=h),l.length>0&&(i.animations=l),u.length>0&&(i.nodes=u)}return i.object=s,i;function n(t){let e=[];for(let i in t){let s=t[i];delete s.metadata,e.push(s)}return e}}clone(t){return new this.constructor().copy(this,t)}copy(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1];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.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,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.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?s.multiplyScalar(1/Math.sqrt(r)):s.set(0,0,0)}static getBarycoord(t,e,i,s,r){sn.subVectors(s,e),sa.subVectors(i,e),so.subVectors(t,e);let n=sn.dot(sn),a=sn.dot(sa),o=sn.dot(so),h=sa.dot(sa),l=sa.dot(so),u=n*h-a*a;if(0===u)return r.set(0,0,0),null;let c=1/u,d=(h*o-a*l)*c,p=(n*l-a*o)*c;return r.set(1-d-p,p,d)}static containsPoint(t,e,i,s){return null!==this.getBarycoord(t,e,i,s,sh)&&sh.x>=0&&sh.y>=0&&sh.x+sh.y<=1}static getInterpolation(t,e,i,s,r,n,a,o){return null===this.getBarycoord(t,e,i,s,sh)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(r,sh.x),o.addScaledVector(n,sh.y),o.addScaledVector(a,sh.z),o)}static getInterpolatedAttribute(t,e,i,s,r,n){return sy.setScalar(0),sf.setScalar(0),sg.setScalar(0),sy.fromBufferAttribute(t,e),sf.fromBufferAttribute(t,i),sg.fromBufferAttribute(t,s),n.setScalar(0),n.addScaledVector(sy,r.x),n.addScaledVector(sf,r.y),n.addScaledVector(sg,r.z),n}static isFrontFacing(t,e,i,s){return sn.subVectors(i,e),sa.subVectors(t,e),0>sn.cross(sa).dot(s)}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,s){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[s]),this}setFromAttributeAndIndices(t,e,i,s){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,i),this.c.fromBufferAttribute(t,s),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 sn.subVectors(this.c,this.b),sa.subVectors(this.a,this.b),.5*sn.cross(sa).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return sx.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return sx.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,i,s,r){return sx.getInterpolation(t,this.a,this.b,this.c,e,i,s,r)}containsPoint(t){return sx.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return sx.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let i,s,r=this.a,n=this.b,a=this.c;sl.subVectors(n,r),su.subVectors(a,r),sd.subVectors(t,r);let o=sl.dot(sd),h=su.dot(sd);if(o<=0&&h<=0)return e.copy(r);sp.subVectors(t,n);let l=sl.dot(sp),u=su.dot(sp);if(l>=0&&u<=l)return e.copy(n);let c=o*u-l*h;if(c<=0&&o>=0&&l<=0)return i=o/(o-l),e.copy(r).addScaledVector(sl,i);sm.subVectors(t,a);let d=sl.dot(sm),p=su.dot(sm);if(p>=0&&d<=p)return e.copy(a);let m=d*h-o*p;if(m<=0&&h>=0&&p<=0)return s=h/(h-p),e.copy(r).addScaledVector(su,s);let y=l*p-d*u;if(y<=0&&u-l>=0&&d-p>=0)return sc.subVectors(a,n),s=(u-l)/(u-l+(d-p)),e.copy(n).addScaledVector(sc,s);let f=1/(y+m+c);return i=m*f,s=c*f,e.copy(r).addScaledVector(sl,i).addScaledVector(su,s)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}constructor(t=new eY,e=new eY,i=new eY){this.a=t,this.b=e,this.c=i}}let sb={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},sv={h:0,s:0,l:0},sM={h:0,s:0,l:0};function sw(t,e,i){return(i<0&&(i+=1),i>1&&(i-=1),i<1/6)?t+(e-t)*6*i:i<.5?e:i<2/3?t+(e-t)*6*(2/3-i):t}class sS{set(t,e,i){return void 0===e&&void 0===i?t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t):this.setRGB(t,e,i),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ev;return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,e8.colorSpaceToWorking(this,e),this}setRGB(t,e,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e8.workingColorSpace;return this.r=t,this.g=e,this.b=i,e8.colorSpaceToWorking(this,s),this}setHSL(t,e,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e8.workingColorSpace;if(t=eU(t,1),e=eD(e,0,1),i=eD(i,0,1),0===e)this.r=this.g=this.b=i;else{let s=i<=.5?i*(1+e):i+e-i*e,r=2*i-s;this.r=sw(r,s,t+1/3),this.g=sw(r,s,t),this.b=sw(r,s,t-1/3)}return e8.colorSpaceToWorking(this,s),this}setStyle(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ev;function s(e){void 0!==e&&1>parseFloat(e)&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}if(e=/^(\w+)\(([^\)]*)\)/.exec(t)){let r,n=e[1],a=e[2];switch(n){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,i);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,i);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return s(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,i);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(e=/^\#([A-Fa-f\d]+)$/.exec(t)){let s=e[1],r=s.length;if(3===r)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,i);if(6===r)return this.setHex(parseInt(s,16),i);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,i);return this}setColorName(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ev,i=sb[t.toLowerCase()];return void 0!==i?this.setHex(i,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}copySRGBToLinear(t){return this.r=e9(t.r),this.g=e9(t.g),this.b=e9(t.b),this}copyLinearToSRGB(t){return this.r=e7(t.r),this.g=e7(t.g),this.b=e7(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ev;return e8.workingToColorSpace(s_.copy(this),t),65536*Math.round(eD(255*s_.r,0,255))+256*Math.round(eD(255*s_.g,0,255))+Math.round(eD(255*s_.b,0,255))}getHexString(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ev;return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t){let e,i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e8.workingColorSpace;e8.workingToColorSpace(s_.copy(this),s);let r=s_.r,n=s_.g,a=s_.b,o=Math.max(r,n,a),h=Math.min(r,n,a),l=(h+o)/2;if(h===o)e=0,i=0;else{let t=o-h;switch(i=l<=.5?t/(o+h):t/(2-o-h),o){case r:e=(n-a)/t+6*(n1&&void 0!==arguments[1]?arguments[1]:e8.workingColorSpace;return e8.workingToColorSpace(s_.copy(this),e),t.r=s_.r,t.g=s_.g,t.b=s_.b,t}getStyle(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ev;e8.workingToColorSpace(s_.copy(this),t);let e=s_.r,i=s_.g,s=s_.b;return t!==ev?"color(".concat(t," ").concat(e.toFixed(3)," ").concat(i.toFixed(3)," ").concat(s.toFixed(3),")"):"rgb(".concat(Math.round(255*e),",").concat(Math.round(255*i),",").concat(Math.round(255*s),")")}offsetHSL(t,e,i){return this.getHSL(sv),this.setHSL(sv.h+t,sv.s+e,sv.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(sv),t.getHSL(sM);let i=eW(sv.h,sM.h,e),s=eW(sv.s,sM.s,e),r=eW(sv.l,sM.l,e);return this.setHSL(i,s,r),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){let e=this.r,i=this.g,s=this.b,r=t.elements;return this.r=r[0]*e+r[3]*i+r[6]*s,this.g=r[1]*e+r[4]*i+r[7]*s,this.b=r[2]*e+r[5]*i+r[8]*s,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}}let s_=new sS;sS.NAMES=sb;let sz=0;class sA extends eN{get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(let e in t){let i=t[e];if(void 0===i){console.warn("THREE.Material: parameter '".concat(e,"' has value of undefined."));continue}let s=this[e];if(void 0===s){console.warn("THREE.Material: '".concat(e,"' is not a property of THREE.").concat(this.type,"."));continue}s&&s.isColor?s.set(i):s&&s.isVector3&&i&&i.isVector3?s.copy(i):this[e]=i}}toJSON(t){let e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});let i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};function s(t){let e=[];for(let i in t){let s=t[i];delete s.metadata,e.push(s)}return e}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(t).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(t).uuid),void 0!==this.dispersion&&(i.dispersion=this.dispersion),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(i.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapRotation&&(i.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==y&&(i.blending=this.blending),this.side!==c&&(i.side=this.side),!0===this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=!0),this.blendSrc!==k&&(i.blendSrc=this.blendSrc),this.blendDst!==B&&(i.blendDst=this.blendDst),this.blendEquation!==v&&(i.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(i.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(i.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==j&&(i.depthFunc=this.depthFunc),!1===this.depthTest&&(i.depthTest=this.depthTest),!1===this.depthWrite&&(i.depthWrite=this.depthWrite),!1===this.colorWrite&&(i.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(i.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(i.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(i.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(i.stencilFuncMask=this.stencilFuncMask),7680!==this.stencilFail&&(i.stencilFail=this.stencilFail),7680!==this.stencilZFail&&(i.stencilZFail=this.stencilZFail),7680!==this.stencilZPass&&(i.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(i.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaHash&&(i.alphaHash=!0),!0===this.alphaToCoverage&&(i.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=!0),!0===this.forceSinglePass&&(i.forceSinglePass=!0),!0===this.wireframe&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=!0),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),e){let e=s(t.textures),r=s(t.images);e.length>0&&(i.textures=e),r.length>0&&(i.images=r)}return i}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,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.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,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;let e=t.clippingPlanes,i=null;if(null!==e){let t=e.length;i=Array(t);for(let s=0;s!==t;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,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.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,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++}constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:sz++}),this.uuid=eL(),this.name="",this.type="Material",this.blending=y,this.side=c,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=k,this.blendDst=B,this.blendEquation=v,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new sS(0,0,0),this.blendAlpha=0,this.depthFunc=j,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,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.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}}class sT extends sA{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.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),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.fog=t.fog,this}constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new sS(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new iQ,this.combine=Y,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}}let sC=new eY,sk=new eq,sB=0;class sE{onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let s=0,r=this.itemSize;s1&&void 0!==arguments[1]?arguments[1]:0;return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&&(i=ej(i,this.array)),i}setComponent(t,e,i){return this.normalized&&(i=eH(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=ej(e,this.array)),e}setX(t,e){return this.normalized&&(e=eH(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=ej(e,this.array)),e}setY(t,e){return this.normalized&&(e=eH(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=ej(e,this.array)),e}setZ(t,e){return this.normalized&&(e=eH(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=ej(e,this.array)),e}setW(t,e){return this.normalized&&(e=eH(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=eH(e,this.array),i=eH(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,s){return t*=this.itemSize,this.normalized&&(e=eH(e,this.array),i=eH(i,this.array),s=eH(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=s,this}setXYZW(t,e,i,s,r){return t*=this.itemSize,this.normalized&&(e=eH(e,this.array),i=eH(i,this.array),s=eH(s,this.array),r=eH(r,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=s,this.array[t+3]=r,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(t.name=this.name),35044!==this.usage&&(t.usage=this.usage),t}constructor(t,e,i=!1){if(Array.isArray(t))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:sB++}),this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=i,this.usage=35044,this.updateRanges=[],this.gpuType=tA,this.version=0}}class sR extends sE{constructor(t,e,i){super(new Uint16Array(t),e,i)}}class sI extends sE{constructor(t,e,i){super(new Uint32Array(t),e,i)}}class sN extends sE{constructor(t,e,i){super(new Float32Array(t),e,i)}}let sO=0,sV=new iU,sP=new sr,sF=new eY,sL=new ip,sD=new ip,sU=new eY;class sW extends eN{getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(e$(t)?sI:sR)(t,1):this.index=t,this}setIndirect(t){return this.indirect=t,this}getIndirect(){return this.indirect}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){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){let e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);let i=this.attributes.normal;if(void 0!==i){let e=new eQ().getNormalMatrix(t);i.applyNormalMatrix(e),i.needsUpdate=!0}let s=this.attributes.tangent;return void 0!==s&&(s.transformDirection(t),s.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(t){return sV.makeRotationFromQuaternion(t),this.applyMatrix4(sV),this}rotateX(t){return sV.makeRotationX(t),this.applyMatrix4(sV),this}rotateY(t){return sV.makeRotationY(t),this.applyMatrix4(sV),this}rotateZ(t){return sV.makeRotationZ(t),this.applyMatrix4(sV),this}translate(t,e,i){return sV.makeTranslation(t,e,i),this.applyMatrix4(sV),this}scale(t,e,i){return sV.makeScale(t,e,i),this.applyMatrix4(sV),this}lookAt(t){return sP.lookAt(t),sP.updateMatrix(),this.applyMatrix4(sP.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(sF).negate(),this.translate(sF.x,sF.y,sF.z),this}setFromPoints(t){let e=this.getAttribute("position");if(void 0===e){let e=[];for(let i=0,s=t.length;ie.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new ip);let t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new eY(-1/0,-1/0,-1/0),new eY(Infinity,Infinity,Infinity));return}if(void 0!==t){if(this.boundingBox.setFromBufferAttribute(t),e)for(let t=0,i=e.length;t0&&(t.userData=this.userData),void 0!==this.parameters){let e=this.parameters;for(let i in e)void 0!==e[i]&&(t[i]=e[i]);return t}t.data={attributes:{}};let e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let i=this.attributes;for(let e in i){let s=i[e];t.data.attributes[e]=s.toJSON(t.data)}let s={},r=!1;for(let e in this.morphAttributes){let i=this.morphAttributes[e],n=[];for(let e=0,s=i.length;e0&&(s[e]=n,r=!0)}r&&(t.data.morphAttributes=s,t.data.morphTargetsRelative=this.morphTargetsRelative);let n=this.groups;n.length>0&&(t.data.groups=JSON.parse(JSON.stringify(n)));let a=this.boundingSphere;return null!==a&&(t.data.boundingSphere=a.toJSON()),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;let e={};this.name=t.name;let i=t.index;null!==i&&this.setIndex(i.clone());let s=t.attributes;for(let t in s){let i=s[t];this.setAttribute(t,i.clone(e))}let r=t.morphAttributes;for(let t in r){let i=[],s=r[t];for(let t=0,r=s.length;t0){let i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=i.length;t(t.far-t.near)**2)||(sj.copy(r).invert(),sH.copy(t.ray).applyMatrix4(sj),(null===i.boundingBox||!1!==sH.intersectsBox(i.boundingBox))&&this._computeIntersections(t,e,sH))}_computeIntersections(t,e,i){let s,r=this.geometry,n=this.material,a=r.index,o=r.attributes.position,h=r.attributes.uv,l=r.attributes.uv1,u=r.attributes.normal,c=r.groups,d=r.drawRange;if(null!==a)if(Array.isArray(n))for(let r=0,o=c.length;ri.far?null:{distance:h,point:s$.clone(),object:t}}(t,e,i,s,sX,sY,sZ,sK);if(u){let t=new eY;sx.getBarycoord(sK,sX,sY,sZ,t),r&&(u.uv=sx.getInterpolatedAttribute(r,o,h,l,t,new eq)),n&&(u.uv1=sx.getInterpolatedAttribute(n,o,h,l,t,new eq)),a&&(u.normal=sx.getInterpolatedAttribute(a,o,h,l,t,new eY),u.normal.dot(s.direction)>0&&u.normal.multiplyScalar(-1));let e={a:o,b:h,c:l,normal:new eY,materialIndex:0};sx.getNormal(sX,sY,sZ,e.normal),u.face=e,u.barycoord=t}return u}class s2 extends sW{copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new s2(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}constructor(t=1,e=1,i=1,s=1,r=1,n=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:i,widthSegments:s,heightSegments:r,depthSegments:n};let a=this;s=Math.floor(s),r=Math.floor(r);let o=[],h=[],l=[],u=[],c=0,d=0;function p(t,e,i,s,r,n,p,m,y,f,g){let x=n/y,b=p/f,v=n/2,M=p/2,w=m/2,S=y+1,_=f+1,z=0,A=0,T=new eY;for(let n=0;n<_;n++){let a=n*b-M;for(let o=0;o0?1:-1,l.push(T.x,T.y,T.z),u.push(o/y),u.push(1-n/f),z+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;let i={};for(let t in this.extensions)!0===this.extensions[t]&&(i[t]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==t&&this.setValues(t)}}class s9 extends sr{get reversedDepth(){return this._reversedDepth}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}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)}constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new iU,this.projectionMatrix=new iU,this.projectionMatrixInverse=new iU,this.coordinateSystem=eI,this._reversedDepth=!1}}let s7=new eY,rt=new eq,re=new eq;class ri extends s9{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){let e=.5*this.getFilmHeight()/t;this.fov=2*eF*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(.5*eP*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*eF*Math.atan(Math.tan(.5*eP*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,i){s7.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(s7.x,s7.y).multiplyScalar(-t/s7.z),s7.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(s7.x,s7.y).multiplyScalar(-t/s7.z)}getViewSize(t,e){return this.getViewBounds(t,rt,re),e.subVectors(re,rt)}setViewOffset(t,e,i,s,r,n){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=i,this.view.offsetY=s,this.view.width=r,this.view.height=n,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(.5*eP*this.fov)/this.zoom,i=2*e,s=this.aspect*i,r=-.5*s,n=this.view;if(null!==this.view&&this.view.enabled){let t=n.fullWidth,a=n.fullHeight;r+=n.offsetX*s/t,e-=n.offsetY*i/a,s*=n.width/t,i*=n.height/a}let a=this.filmOffset;0!==a&&(r+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+s,e,e-i,t,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let 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}constructor(t=50,e=1,i=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=i,this.far=s,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}}class rs extends sr{updateCoordinateSystem(){let t=this.coordinateSystem,e=this.children.concat(),[i,s,r,n,a,o]=e;for(let t of e)this.remove(t);if(t===eI)i.up.set(0,1,0),i.lookAt(1,0,0),s.up.set(0,1,0),s.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),n.up.set(0,0,1),n.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else if(2001===t)i.up.set(0,-1,0),i.lookAt(-1,0,0),s.up.set(0,-1,0),s.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),n.up.set(0,0,-1),n.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1);else throw Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);for(let t of e)this.add(t),t.updateMatrixWorld()}update(t,e){null===this.parent&&this.updateMatrixWorld();let{renderTarget:i,activeMipmapLevel:s}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());let[r,n,a,o,h,l]=this.children,u=t.getRenderTarget(),c=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;let m=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,t.setRenderTarget(i,0,s),t.render(e,r),t.setRenderTarget(i,1,s),t.render(e,n),t.setRenderTarget(i,2,s),t.render(e,a),t.setRenderTarget(i,3,s),t.render(e,o),t.setRenderTarget(i,4,s),t.render(e,h),i.texture.generateMipmaps=m,t.setRenderTarget(i,5,s),t.render(e,l),t.setRenderTarget(u,c,d),t.xr.enabled=p,i.texture.needsPMREMUpdate=!0}constructor(t,e,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let s=new ri(-90,1,t,e);s.layers=this.layers,this.add(s);let r=new ri(-90,1,t,e);r.layers=this.layers,this.add(r);let n=new ri(-90,1,t,e);n.layers=this.layers,this.add(n);let a=new ri(-90,1,t,e);a.layers=this.layers,this.add(a);let o=new ri(-90,1,t,e);o.layers=this.layers,this.add(o);let h=new ri(-90,1,t,e);h.layers=this.layers,this.add(h)}}class rr extends io{get images(){return this.image}set images(t){this.image=t}constructor(t=[],e=ta,i,s,r,n,a,o,h,l){super(t,e,i,s,r,n,a,o,h,l),this.isCubeTexture=!0,this.flipY=!1}}class rn extends iu{fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let i=new s2(5,5,5),s=new s8({name:"CubemapFromEquirect",uniforms:s3({tEquirect:{value:null}}),vertexShader:"\n\n varying vec3 vWorldDirection;\n\n vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n }\n\n void main() {\n\n vWorldDirection = transformDirection( position, modelMatrix );\n\n #include \n #include \n\n }\n ",fragmentShader:"\n\n uniform sampler2D tEquirect;\n\n varying vec3 vWorldDirection;\n\n #include \n\n void main() {\n\n vec3 direction = normalize( vWorldDirection );\n\n vec2 sampleUV = equirectUv( direction );\n\n gl_FragColor = texture2D( tEquirect, sampleUV );\n\n }\n ",side:d,blending:m});s.uniforms.tEquirect.value=e;let r=new s0(i,s),n=e.minFilter;return e.minFilter===tb&&(e.minFilter=tg),new rs(1,10,this).update(t,r),e.minFilter=n,r.geometry.dispose(),r.material.dispose(),this}clear(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1],i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],s=!(arguments.length>3)||void 0===arguments[3]||arguments[3],r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,i,s);t.setRenderTarget(r)}constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let i={width:t,height:t,depth:1};this.texture=new rr([i,i,i,i,i,i]),this._setTextureOptions(e),this.texture.isRenderTargetTexture=!0}}class ra extends sr{constructor(){super(),this.isGroup=!0,this.type="Group"}}let ro={type:"move"};class rh{getHandSpace(){return null===this._hand&&(this._hand=new ra,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new ra,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new eY,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new eY),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new ra,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new eY,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new eY),this._grip}dispatchEvent(t){return null!==this._targetRay&&this._targetRay.dispatchEvent(t),null!==this._grip&&this._grip.dispatchEvent(t),null!==this._hand&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let i of t.hand.values())this._getHandJoint(e,i)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(t,e,i){let s=null,r=null,n=null,a=this._targetRay,o=this._grip,h=this._hand;if(t&&"visible-blurred"!==e.session.visibilityState){if(h&&t.hand){for(let s of(n=!0,t.hand.values())){let t=e.getJointPose(s,i),r=this._getHandJoint(h,s);null!==t&&(r.matrix.fromArray(t.transform.matrix),r.matrix.decompose(r.position,r.rotation,r.scale),r.matrixWorldNeedsUpdate=!0,r.jointRadius=t.radius),r.visible=null!==t}let s=h.joints["index-finger-tip"],r=h.joints["thumb-tip"],a=s.position.distanceTo(r.position);h.inputState.pinching&&a>.025?(h.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!h.inputState.pinching&&a<=.015&&(h.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&null!==(r=e.getPose(t.gripSpace,i))&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,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);null!==a&&(null===(s=e.getPose(t.targetRaySpace,i))&&null!==r&&(s=r),null!==s&&(a.matrix.fromArray(s.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,s.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(s.linearVelocity)):a.hasLinearVelocity=!1,s.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(s.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(ro)))}return null!==a&&(a.visible=null!==s),null!==o&&(o.visible=null!==r),null!==h&&(h.visible=null!==n),this}_getHandJoint(t,e){if(void 0===t.joints[e.jointName]){let i=new ra;i.matrixAutoUpdate=!1,i.visible=!1,t.joints[e.jointName]=i,t.add(i)}return t.joints[e.jointName]}constructor(){this._targetRay=null,this._grip=null,this._hand=null}}class rl{clone(){return new rl(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}constructor(t,e=1,i=1e3){this.isFog=!0,this.name="",this.color=new sS(t),this.near=e,this.far=i}}class ru extends sr{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()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),null!==t.overrideMaterial&&(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){let e=super.toJSON(t);return null!==this.fog&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),1!==this.environmentIntensity&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new iQ,this.environmentIntensity=1,this.environmentRotation=new iQ,this.overrideMaterial=null,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}}class rc{onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}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,i){t*=this.stride,i*=e.stride;for(let s=0,r=this.stride;s1&&void 0!==arguments[1]?arguments[1]:0;return this.array.set(t,e),this}clone(t){void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=eL()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let e=new this.array.constructor(t.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(e,this.stride);return i.setUsage(this.usage),i}onUpload(t){return this.onUploadCallback=t,this}toJSON(t){return void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=eL()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=35044,this.updateRanges=[],this.version=0,this.uuid=eL()}}let rd=new eY;class rp{get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(t){this.data.needsUpdate=t}applyMatrix4(t){for(let e=0,i=this.data.count;e1?null:e.copy(t.start).addScaledVector(i,r)}intersectsLine(t){let e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<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){let i=e||rD.getNormalMatrix(t),s=this.coplanarPoint(rF).applyMatrix4(t),r=this.normal.applyMatrix3(i).normalize();return this.constant=-s.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)}constructor(t=new eY(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}}let rW=new iR,rj=new eq(.5,.5),rH=new eY;class rJ{set(t,e,i,s,r,n){let a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(i),a[3].copy(s),a[4].copy(r),a[5].copy(n),this}copy(t){let e=this.planes;for(let i=0;i<6;i++)e[i].copy(t.planes[i]);return this}setFromProjectionMatrix(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eI,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=this.planes,r=t.elements,n=r[0],a=r[1],o=r[2],h=r[3],l=r[4],u=r[5],c=r[6],d=r[7],p=r[8],m=r[9],y=r[10],f=r[11],g=r[12],x=r[13],b=r[14],v=r[15];if(s[0].setComponents(h-n,d-l,f-p,v-g).normalize(),s[1].setComponents(h+n,d+l,f+p,v+g).normalize(),s[2].setComponents(h+a,d+u,f+m,v+x).normalize(),s[3].setComponents(h-a,d-u,f-m,v-x).normalize(),i)s[4].setComponents(o,c,y,b).normalize(),s[5].setComponents(h-o,d-c,f-y,v-b).normalize();else if(s[4].setComponents(h-o,d-c,f-y,v-b).normalize(),e===eI)s[5].setComponents(h+o,d+c,f+y,v+b).normalize();else if(2001===e)s[5].setComponents(o,c,y,b).normalize();else throw Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(t){if(void 0!==t.boundingSphere)null===t.boundingSphere&&t.computeBoundingSphere(),rW.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{let e=t.geometry;null===e.boundingSphere&&e.computeBoundingSphere(),rW.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(rW)}intersectsSprite(t){return rW.center.set(0,0,0),rW.radius=.7071067811865476+rj.distanceTo(t.center),rW.applyMatrix4(t.matrixWorld),this.intersectsSphere(rW)}intersectsSphere(t){let e=this.planes,i=t.center,s=-t.radius;for(let t=0;t<6;t++)if(e[t].distanceToPoint(i)0?t.max.x:t.min.x,rH.y=s.normal.y>0?t.max.y:t.min.y,rH.z=s.normal.z>0?t.max.z:t.min.z,0>s.distanceToPoint(rH))return!1}return!0}containsPoint(t){let e=this.planes;for(let i=0;i<6;i++)if(0>e[i].distanceToPoint(t))return!1;return!0}clone(){return new this.constructor().copy(this)}constructor(t=new rU,e=new rU,i=new rU,s=new rU,r=new rU,n=new rU){this.planes=[t,e,i,s,r,n]}}class rq extends sA{copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.linewidth=t.linewidth,this.linecap=t.linecap,this.linejoin=t.linejoin,this.fog=t.fog,this}constructor(t){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new sS(0xffffff),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(t)}}let rX=new eY,rY=new eY,rZ=new iU,rG=new iD,rQ=new iR,rK=new eY,r$=new eY;class r0 extends sr{copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}computeLineDistances(){let t=this.geometry;if(null===t.index){let e=t.attributes.position,i=[0];for(let t=1,s=e.count;t0){let i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=i.length;ts)return;rK.applyMatrix4(t.matrixWorld);let h=e.ray.origin.distanceTo(rK);if(!(he.far))return{distance:h,point:r$.clone().applyMatrix4(t.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:t}}let r2=new eY,r3=new eY;class r5 extends r0{computeLineDistances(){let t=this.geometry;if(null===t.index){let e=t.attributes.position,i=[];for(let t=0,s=e.count;t0){let i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=i.length;tr.far)return;n.push({distance:h,distanceToRay:Math.sqrt(o),point:i,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}class ns extends io{copy(t){return super.copy(t),this.source=new ii(Object.assign({},t.image)),this.compareFunction=t.compareFunction,this}toJSON(t){let e=super.toJSON(t);return null!==this.compareFunction&&(e.compareFunction=this.compareFunction),e}constructor(t,e,i=tz,s,r,n,a=tm,o=tm,h,l=tV,u=1){if(l!==tV&&l!==tP)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");super({width:t,height:e,depth:u},s,r,n,a,o,l,i,h),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}}class nr extends io{copy(t){return super.copy(t),this.sourceTexture=t.sourceTexture,this}constructor(t=null){super(),this.sourceTexture=t,this.isExternalTexture=!0}}class nn{getPoint(){console.warn("THREE.Curve: .getPoint() not implemented.")}getPointAt(t,e){let i=this.getUtoTmapping(t);return this.getPoint(i,e)}getPoints(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,e=[];for(let i=0;i<=t;i++)e.push(this.getPoint(i/t));return e}getSpacedPoints(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,e=[];for(let i=0;i<=t;i++)e.push(this.getPointAt(i/t));return e}getLength(){let t=this.getLengths();return t[t.length-1]}getLengths(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.arcLengthDivisions;if(this.cacheArcLengths&&this.cacheArcLengths.length===t+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let e=[],i,s=this.getPoint(0),r=0;e.push(0);for(let n=1;n<=t;n++)e.push(r+=(i=this.getPoint(n/t)).distanceTo(s)),s=i;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=this.getLengths(),r=0,n=s.length;e=i||t*s[n-1];let a=0,o=n-1,h;for(;a<=o;)if((h=s[r=Math.floor(a+(o-a)/2)]-e)<0)a=r+1;else if(h>0)o=r-1;else{o=r;break}if(s[r=o]===e)return r/(n-1);let l=s[r],u=s[r+1];return(r+(e-l)/(u-l))/(n-1)}getTangent(t,e){let i=t-1e-4,s=t+1e-4;i<0&&(i=0),s>1&&(s=1);let r=this.getPoint(i),n=this.getPoint(s),a=e||(r.isVector2?new eq:new eY);return a.copy(n).sub(r).normalize(),a}getTangentAt(t,e){let i=this.getUtoTmapping(t);return this.getTangent(i,e)}computeFrenetFrames(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=new eY,s=[],r=[],n=[],a=new eY,o=new iU;for(let e=0;e<=t;e++){let i=e/t;s[e]=this.getTangentAt(i,new eY)}r[0]=new eY,n[0]=new eY;let h=Number.MAX_VALUE,l=Math.abs(s[0].x),u=Math.abs(s[0].y),c=Math.abs(s[0].z);l<=h&&(h=l,i.set(1,0,0)),u<=h&&(h=u,i.set(0,1,0)),c<=h&&i.set(0,0,1),a.crossVectors(s[0],i).normalize(),r[0].crossVectors(s[0],a),n[0].crossVectors(s[0],r[0]);for(let e=1;e<=t;e++){if(r[e]=r[e-1].clone(),n[e]=n[e-1].clone(),a.crossVectors(s[e-1],s[e]),a.length()>Number.EPSILON){a.normalize();let t=Math.acos(eD(s[e-1].dot(s[e]),-1,1));r[e].applyMatrix4(o.makeRotationAxis(a,t))}n[e].crossVectors(s[e],r[e])}if(!0===e){let e=Math.acos(eD(r[0].dot(r[t]),-1,1));e/=t,s[0].dot(a.crossVectors(r[0],r[t]))>0&&(e=-e);for(let i=1;i<=t;i++)r[i].applyMatrix4(o.makeRotationAxis(s[i],e*i)),n[i].crossVectors(s[i],r[i])}return{tangents:s,normals:r,binormals:n}}clone(){return new this.constructor().copy(this)}copy(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}toJSON(){let t={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t}fromJSON(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}constructor(){this.type="Curve",this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}}class na extends nn{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eq,i=2*Math.PI,s=this.aEndAngle-this.aStartAngle,r=Math.abs(s)i;)s-=i;s1&&void 0!==arguments[1]?arguments[1]:new eY,r=this.points,n=r.length,a=(n-!this.closed)*t,o=Math.floor(a),h=a-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/n)+1)*n:0===h&&o===n-1&&(o=n-2,h=1),this.closed||o>0?e=r[(o-1)%n]:(nl.subVectors(r[0],r[1]).add(r[0]),e=nl);let l=r[o%n],u=r[(o+1)%n];if(this.closed||o+21&&void 0!==arguments[1]?arguments[1]:new eq,i=this.v0,s=this.v1,r=this.v2,n=this.v3;return e.set(nf(t,i.x,s.x,r.x,n.x),nf(t,i.y,s.y,r.y,n.y)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}constructor(t=new eq,e=new eq,i=new eq,s=new eq){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=t,this.v1=e,this.v2=i,this.v3=s}}class nx extends nn{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eY,i=this.v0,s=this.v1,r=this.v2,n=this.v3;return e.set(nf(t,i.x,s.x,r.x,n.x),nf(t,i.y,s.y,r.y,n.y),nf(t,i.z,s.z,r.z,n.z)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}constructor(t=new eY,e=new eY,i=new eY,s=new eY){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=t,this.v1=e,this.v2=i,this.v3=s}}class nb extends nn{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eq;return 1===t?e.copy(this.v2):(e.copy(this.v2).sub(this.v1),e.multiplyScalar(t).add(this.v1)),e}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eq;return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new eq,e=new eq){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=t,this.v2=e}}class nv extends nn{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eY;return 1===t?e.copy(this.v2):(e.copy(this.v2).sub(this.v1),e.multiplyScalar(t).add(this.v1)),e}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eY;return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new eY,e=new eY){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=t,this.v2=e}}class nM extends nn{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eq,i=this.v0,s=this.v1,r=this.v2;return e.set(ny(t,i.x,s.x,r.x),ny(t,i.y,s.y,r.y)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new eq,e=new eq,i=new eq){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=t,this.v1=e,this.v2=i}}class nw extends nn{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eY,i=this.v0,s=this.v1,r=this.v2;return e.set(ny(t,i.x,s.x,r.x),ny(t,i.y,s.y,r.y),ny(t,i.z,s.z,r.z)),e}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}constructor(t=new eY,e=new eY,i=new eY){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=t,this.v1=e,this.v2=i}}class nS extends nn{getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new eq,i=this.points,s=(i.length-1)*t,r=Math.floor(s),n=s-r,a=i[0===r?r:r-1],o=i[r],h=i[r>i.length-2?i.length-1:r+1],l=i[r>i.length-3?i.length-1:r+2];return e.set(nm(n,a.x,o.x,h.x,l.x),nm(n,a.y,o.y,h.y,l.y)),e}copy(t){super.copy(t),this.points=[];for(let e=0,i=t.points.length;e0!=t>0&&this.version++,this._anisotropy=t}get clearcoat(){return this._clearcoat}set clearcoat(t){this._clearcoat>0!=t>0&&this.version++,this._clearcoat=t}get iridescence(){return this._iridescence}set iridescence(t){this._iridescence>0!=t>0&&this.version++,this._iridescence=t}get dispersion(){return this._dispersion}set dispersion(t){this._dispersion>0!=t>0&&this.version++,this._dispersion=t}get sheen(){return this._sheen}set sheen(t){this._sheen>0!=t>0&&this.version++,this._sheen=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.anisotropy=t.anisotropy,this.anisotropyRotation=t.anisotropyRotation,this.anisotropyMap=t.anisotropyMap,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.dispersion=t.dispersion,this.ior=t.ior,this.iridescence=t.iridescence,this.iridescenceMap=t.iridescenceMap,this.iridescenceIOR=t.iridescenceIOR,this.iridescenceThicknessRange=[...t.iridescenceThicknessRange],this.iridescenceThicknessMap=t.iridescenceThicknessMap,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}constructor(t){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new eq(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return eD(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new sS(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new sS(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new sS(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(t)}}class nT extends sA{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}constructor(t){super(),this.isMeshDepthMaterial=!0,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.setValues(t)}}class nC extends sA{copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}}function nk(t,e){return t&&t.constructor!==e?"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t):t}function nB(t,e,i){let s=t.length,r=new t.constructor(s);for(let n=0,a=0;a!==s;++n){let s=i[n]*e;for(let i=0;i!==e;++i)r[a++]=t[s+i]}return r}function nE(t,e,i,s){let r=1,n=t[0];for(;void 0!==n&&void 0===n[s];)n=t[r++];if(void 0===n)return;let a=n[s];if(void 0!==a)if(Array.isArray(a))do void 0!==(a=n[s])&&(e.push(n.time),i.push(...a)),n=t[r++];while(void 0!==n);else if(void 0!==a.toArray)do void 0!==(a=n[s])&&(e.push(n.time),a.toArray(i,i.length)),n=t[r++];while(void 0!==n);else do void 0!==(a=n[s])&&(e.push(n.time),i.push(a)),n=t[r++];while(void 0!==n)}class nR{evaluate(t){let e=this.parameterPositions,i=this._cachedIndex,s=e[i],r=e[i-1];t:{e:{let n;i:{s:if(!(t=r)){let a=e[1];t=(r=e[--i-1]))break e}n=i,i=0;break i}break t}for(;i>>1;te;)--n;if(++n,0!==r||n!==s){r>=n&&(r=(n=Math.max(n,1))-1);let t=this.getValueSize();this.times=i.slice(r,n),this.values=this.values.slice(r*t,n*t)}return this}validate(){var t;let e=!0,i=this.getValueSize();i-Math.floor(i)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let s=this.times,r=this.values,n=s.length;0===n&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let t=0;t!==n;t++){let i=s[t];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,i),e=!1;break}if(null!==a&&a>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,i,a),e=!1;break}a=i}if(void 0!==r&&ArrayBuffer.isView(t=r)&&!(t instanceof DataView))for(let t=0,i=r.length;t!==i;++t){let i=r[t];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,i),e=!1;break}}return e}optimize(){let t=this.times.slice(),e=this.values.slice(),i=this.getValueSize(),s=2302===this.getInterpolation(),r=t.length-1,n=1;for(let a=1;a0){t[n]=t[r];for(let t=r*i,s=n*i,a=0;a!==i;++a)e[s+a]=e[t+a];++n}return n!==t.length?(this.times=t.slice(0,n),this.values=e.slice(0,n*i)):(this.times=t,this.values=e),this}clone(){let t=this.times.slice(),e=this.values.slice(),i=new this.constructor(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}constructor(t,e,i,s){if(void 0===t)throw Error("THREE.KeyframeTrack: track name is undefined");if(void 0===e||0===e.length)throw Error("THREE.KeyframeTrack: no keyframes in track named "+t);this.name=t,this.times=nk(e,this.TimeBufferType),this.values=nk(i,this.ValueBufferType),this.setInterpolation(s||this.DefaultInterpolation)}}nV.prototype.ValueTypeName="",nV.prototype.TimeBufferType=Float32Array,nV.prototype.ValueBufferType=Float32Array,nV.prototype.DefaultInterpolation=ed;class nP extends nV{constructor(t,e,i){super(t,e,i)}}nP.prototype.ValueTypeName="bool",nP.prototype.ValueBufferType=Array,nP.prototype.DefaultInterpolation=ec,nP.prototype.InterpolantFactoryMethodLinear=void 0,nP.prototype.InterpolantFactoryMethodSmooth=void 0;class nF extends nV{constructor(t,e,i,s){super(t,e,i,s)}}nF.prototype.ValueTypeName="color";class nL extends nV{constructor(t,e,i,s){super(t,e,i,s)}}nL.prototype.ValueTypeName="number";class nD extends nR{interpolate_(t,e,i,s){let r=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=(i-e)/(s-e),h=t*a;for(let t=h+a;h!==t;h+=4)eX.slerpFlat(r,0,n,h-a,n,h,o);return r}constructor(t,e,i,s){super(t,e,i,s)}}class nU extends nV{InterpolantFactoryMethodLinear(t){return new nD(this.times,this.values,this.getValueSize(),t)}constructor(t,e,i,s){super(t,e,i,s)}}nU.prototype.ValueTypeName="quaternion",nU.prototype.InterpolantFactoryMethodSmooth=void 0;class nW extends nV{constructor(t,e,i){super(t,e,i)}}nW.prototype.ValueTypeName="string",nW.prototype.ValueBufferType=Array,nW.prototype.DefaultInterpolation=ec,nW.prototype.InterpolantFactoryMethodLinear=void 0,nW.prototype.InterpolantFactoryMethodSmooth=void 0;class nj extends nV{constructor(t,e,i,s){super(t,e,i,s)}}nj.prototype.ValueTypeName="vector";class nH{static parse(t){let e=[],i=t.tracks,s=1/(t.fps||1);for(let t=0,r=i.length;t!==r;++t)e.push((function(t){if(void 0===t.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");let e=function(t){switch(t.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return nL;case"vector":case"vector2":case"vector3":case"vector4":return nj;case"color":return nF;case"quaternion":return nU;case"bool":case"boolean":return nP;case"string":return nW}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+t)}(t.type);if(void 0===t.times){let e=[],i=[];nE(t.keys,e,i,"value"),t.times=e,t.values=i}return void 0!==e.parse?e.parse(t):new e(t.name,t.times,t.values,t.interpolation)})(i[t]).scale(s));let r=new this(t.name,t.duration,e,t.blendMode);return r.uuid=t.uuid,r.userData=JSON.parse(t.userData||"{}"),r}static toJSON(t){let e=[],i=t.tracks,s={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode,userData:JSON.stringify(t.userData)};for(let t=0,s=i.length;t!==s;++t)e.push(nV.toJSON(i[t]));return s}static CreateFromMorphTargetSequence(t,e,i,s){let r=e.length,n=[];for(let t=0;t1){let t=n[1],e=s[t];e||(s[t]=e=[]),e.push(i)}}let n=[];for(let t in s)n.push(this.CreateFromMorphTargetSequence(t,s[t],e,i));return n}static parseAnimation(t,e){if(console.warn("THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let i=function(t,e,i,s,r){if(0!==i.length){let n=[],a=[];nE(i,n,a,s),0!==n.length&&r.push(new t(e,n,a))}},s=[],r=t.name||"default",n=t.fps||30,a=t.blendMode,o=t.length||-1,h=t.hierarchy||[];for(let t=0;t{e&&e(r),this.manager.itemEnd(t)},0),r;if(void 0!==nZ[t])return void nZ[t].push({onLoad:e,onProgress:i,onError:s});nZ[t]=[],nZ[t].push({onLoad:e,onProgress:i,onError:s});let n=new Request(t,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:"function"==typeof AbortSignal.any?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),a=this.mimeType,o=this.responseType;fetch(n).then(e=>{if(200===e.status||0===e.status){if(0===e.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===e.body||void 0===e.body.getReader)return e;let i=nZ[t],s=e.body.getReader(),r=e.headers.get("X-File-Size")||e.headers.get("Content-Length"),n=r?parseInt(r):0,a=0!==n,o=0;return new Response(new ReadableStream({start(t){!function e(){s.read().then(s=>{let{done:r,value:h}=s;if(r)t.close();else{let s=new ProgressEvent("progress",{lengthComputable:a,loaded:o+=h.byteLength,total:n});for(let t=0,e=i.length;t{t.error(e)})}()}}))}throw new nG('fetch for "'.concat(e.url,'" responded with ').concat(e.status,": ").concat(e.statusText),e)}).then(t=>{switch(o){case"arraybuffer":return t.arrayBuffer();case"blob":return t.blob();case"document":return t.text().then(t=>new DOMParser().parseFromString(t,a));case"json":return t.json();default:if(""===a)return t.text();{let e=/charset="?([^;"\s]*)"?/i.exec(a),i=new TextDecoder(e&&e[1]?e[1].toLowerCase():void 0);return t.arrayBuffer().then(t=>i.decode(t))}}}).then(e=>{nJ.add("file:".concat(t),e);let i=nZ[t];delete nZ[t];for(let t=0,s=i.length;t{let i=nZ[t];if(void 0===i)throw this.manager.itemError(t),e;delete nZ[t];for(let t=0,s=i.length;t{this.manager.itemEnd(t)}),this.manager.itemStart(t)}setResponseType(t){return this.responseType=t,this}setMimeType(t){return this.mimeType=t,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}constructor(t){super(t),this.mimeType="",this.responseType="",this._abortController=new AbortController}}let nK=new WeakMap;class n$ extends nY{load(t,e,i,s){void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);let r=this,n=nJ.get("image:".concat(t));if(void 0!==n){if(!0===n.complete)r.manager.itemStart(t),setTimeout(function(){e&&e(n),r.manager.itemEnd(t)},0);else{let t=nK.get(n);void 0===t&&(t=[],nK.set(n,t)),t.push({onLoad:e,onError:s})}return n}let a=e0("img");function o(){l(),e&&e(this);let i=nK.get(this)||[];for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:0,i=this.camera,s=this.matrix,r=t.distance||i.far;r!==i.far&&(i.far=r,i.updateProjectionMatrix()),ae.setFromMatrixPosition(t.matrixWorld),i.position.copy(ae),ai.copy(i.position),ai.add(this._cubeDirections[e]),i.up.copy(this._cubeUps[e]),i.lookAt(ai),i.updateMatrixWorld(),s.makeTranslation(-ae.x,-ae.y,-ae.z),at.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(at,i.coordinateSystem,i.reversedDepth)}constructor(){super(new ri(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new eq(4,2),this._viewportCount=6,this._viewports=[new ih(2,1,1,1),new ih(0,1,1,1),new ih(3,1,1,1),new ih(1,1,1,1),new ih(3,0,1,1),new ih(1,0,1,1)],this._cubeDirections=[new eY(1,0,0),new eY(-1,0,0),new eY(0,0,1),new eY(0,0,-1),new eY(0,1,0),new eY(0,-1,0)],this._cubeUps=[new eY(0,1,0),new eY(0,1,0),new eY(0,1,0),new eY(0,1,0),new eY(0,0,1),new eY(0,0,-1)]}}class ar extends n2{get power(){return 4*this.intensity*Math.PI}set power(t){this.intensity=t/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}constructor(t,e,i=0,s=2){super(t,e),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=s,this.shadow=new as}}class an extends s9{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,i,s,r,n){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=i,this.view.offsetY=s,this.view.width=r,this.view.height=n,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,s=(this.top+this.bottom)/2,r=i-t,n=i+t,a=s+e,o=s-e;if(null!==this.view&&this.view.enabled){let 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,n=r+t*this.view.width,a-=e*this.view.offsetY,o=a-e*this.view.height}this.projectionMatrix.makeOrthographic(r,n,a,o,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let 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}constructor(t=-1,e=1,i=1,s=-1,r=.1,n=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=i,this.bottom=s,this.near=r,this.far=n,this.updateProjectionMatrix()}}class aa extends n8{constructor(){super(new an(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class ao extends n2{dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(sr.DEFAULT_UP),this.updateMatrix(),this.target=new sr,this.shadow=new aa}}class ah{static extractUrlBase(t){let e=t.lastIndexOf("/");return -1===e?"./":t.slice(0,e+1)}static resolveURL(t,e){return"string"!=typeof t||""===t?"":(/^https?:\/\//i.test(e)&&/^\//.test(t)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(t)||/^data:.*,.*$/i.test(t)||/^blob:.*$/i.test(t))?t:e+t}}let al=new WeakMap;class au extends nY{setOptions(t){return this.options=t,this}load(t,e,i,s){void 0===t&&(t=""),void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);let r=this,n=nJ.get("image-bitmap:".concat(t));if(void 0!==n)return(r.manager.itemStart(t),n.then)?void n.then(i=>{if(!0!==al.has(n))return e&&e(i),r.manager.itemEnd(t),i;s&&s(al.get(n)),r.manager.itemError(t),r.manager.itemEnd(t)}):(setTimeout(function(){e&&e(n),r.manager.itemEnd(t)},0),n);let a={};a.credentials="anonymous"===this.crossOrigin?"same-origin":"include",a.headers=this.requestHeader,a.signal="function"==typeof AbortSignal.any?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let o=fetch(t,a).then(function(t){return t.blob()}).then(function(t){return createImageBitmap(t,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(i){return nJ.add("image-bitmap:".concat(t),i),e&&e(i),r.manager.itemEnd(t),i}).catch(function(e){s&&s(e),al.set(o,e),nJ.remove("image-bitmap:".concat(t)),r.manager.itemError(t),r.manager.itemEnd(t)});nJ.add("image-bitmap:".concat(t),o),r.manager.itemStart(t)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}constructor(t){super(t),this.isImageBitmapLoader=!0,"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}}class ac extends ri{constructor(t=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=t}}let ad="\\[\\]\\.:\\/",ap=RegExp("["+ad+"]","g"),am="[^"+ad+"]",ay="[^"+ad.replace("\\.","")+"]",af=/((?:WC+[\/:])*)/.source.replace("WC",am),ag=/(WCOD+)?/.source.replace("WCOD",ay),ax=RegExp("^"+af+ag+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",am)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",am)+"$"),ab=["material","materials","bones","map"];class av{getValue(t,e){this.bind();let i=this._targetGroup.nCachedObjects_,s=this._bindings[i];void 0!==s&&s.getValue(t,e)}setValue(t,e){let i=this._bindings;for(let s=this._targetGroup.nCachedObjects_,r=i.length;s!==r;++s)i[s].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=t.length;e!==i;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=t.length;e!==i;++e)t[e].unbind()}constructor(t,e,i){let s=i||aM.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,s)}}class aM{static create(t,e,i){return t&&t.isAnimationObjectGroup?new aM.Composite(t,e,i):new aM(t,e,i)}static sanitizeNodeName(t){return t.replace(/\s/g,"_").replace(ap,"")}static parseTrackName(t){let e=ax.exec(t);if(null===e)throw Error("PropertyBinding: Cannot parse trackName: "+t);let i={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},s=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==s&&-1!==s){let t=i.nodeName.substring(s+1);-1!==ab.indexOf(t)&&(i.nodeName=i.nodeName.substring(0,s),i.objectName=t)}if(null===i.propertyName||0===i.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+t);return i}static findNode(t,e){if(void 0===e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){let i=t.skeleton.getBoneByName(e);if(void 0!==i)return i}if(t.children){let i=function(t){for(let s=0;s{a.d(t,{ae:()=>v});var r=a(5339),i=a(3617),o=a(3303);class s extends r.LoY{boundingSphere=new r.iyt;constructor(){super(),this.setAttribute("position",new r.THS(new Float32Array([-1,-1,3,-1,-1,3]),2)),this.setAttribute("uv",new r.THS(new Float32Array([0,0,2,0,0,2]),2))}computeBoundingSphere(){}}let n=new s,l=new r.qUd;class f{constructor(e){this._mesh=new r.eaF(n,e),this._mesh.frustumCulled=!1}render(e){e.render(this._mesh,l)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.material.dispose(),this._mesh.geometry.dispose()}}let h={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},sceneNormal:{value:null},projMat:{value:new r.kn4},viewMat:{value:new r.kn4},projViewMat:{value:new r.kn4},projectionMatrixInv:{value:new r.kn4},viewMatrixInv:{value:new r.kn4},cameraPos:{value:new r.Pq0},resolution:{value:new r.I9Y},biasAdjustment:{value:new r.I9Y},time:{value:0},samples:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},ortho:{value:!1},screenSpaceRadius:{value:!1},frame:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:` +varying vec2 vUv; +void main() { + vUv = uv; + gl_Position = vec4(position, 1); +}`,fragmentShader:` + #define SAMPLES 16 + #define FSAMPLES 16.0 +uniform sampler2D sceneDiffuse; +uniform highp sampler2D sceneNormal; +uniform highp sampler2D sceneDepth; +uniform mat4 projectionMatrixInv; +uniform mat4 viewMatrixInv; +uniform mat4 projMat; +uniform mat4 viewMat; +uniform mat4 projViewMat; +uniform vec3 cameraPos; +uniform vec2 resolution; +uniform vec2 biasAdjustment; +uniform float time; +uniform vec3[SAMPLES] samples; +uniform float radius; +uniform float distanceFalloff; +uniform float near; +uniform float far; +uniform float frame; +uniform bool ortho; +uniform bool screenSpaceRadius; +uniform sampler2D bluenoise; + varying vec2 vUv; + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + /*return ortho ? linearize_depth_ortho( + linDepth, + nearZ, + farZ + ) :linearize_depth(linDepth, nearZ, farZ);*/ + #ifdef ORTHO + + return linearize_depth_ortho(d, nearZ, farZ); + + #else + return linearize_depth(linDepth, nearZ, farZ); + #endif + } + + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); +} + +mat3 makeRotationZ(float theta) { + float c = cos(theta); + float s = sin(theta); + return mat3(c, - s, 0, + s, c, 0, + 0, 0, 1); + } + +void main() { + vec4 diffuse = texture2D(sceneDiffuse, vUv); + #ifdef REVERSEDEPTH + float depth = 1.0 - texture2D(sceneDepth, vUv).x; + #else + float depth = texture2D(sceneDepth, vUv).x; + #endif + if (depth == 1.0) { + gl_FragColor = vec4(vec3(1.0), 1.0); + return; + } + vec3 worldPos = getWorldPos(depth, vUv); + #ifdef HALFRES + vec3 normal = texture2D(sceneNormal, vUv).rgb; + #else + vec3 normal = computeNormal(worldPos, vUv); + #endif + vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0); + vec2 harmoniousNumbers = vec2( + 1.618033988749895, + 1.324717957244746 + ); + noise.rg += harmoniousNumbers * frame; + noise.rg = fract(noise.rg); + vec3 helperVec = vec3(0.0, 1.0, 0.0); + if (dot(helperVec, normal) > 0.99) { + helperVec = vec3(1.0, 0.0, 0.0); + } + vec3 tangent = normalize(cross(helperVec, normal)); + vec3 bitangent = cross(normal, tangent); + mediump mat3 tbn = mat3(tangent, bitangent, normal) * makeRotationZ( noise.r * 3.1415962 * 2.0) ; + + mediump float occluded = 0.0; + mediump float totalWeight = 0.0; + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(depth, vUv + + vec2(radius, 0.0) / resolution) + ) : radius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : radiusToUse * distanceFalloff * 0.2; + float bias = (min( + 0.1, + distanceFalloffToUse * 0.1 + ) / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse; + bias = biasAdjustment.x + biasAdjustment.y * bias; + mediump float offsetMove = noise.g; + mediump float offsetMoveInv = 1.0 / FSAMPLES; + float farTimesNear = far * near; + float farMinusNear = far - near; + + for(int i = 0; i < SAMPLES; i++) { + mediump vec3 sampleDirection = tbn * samples[i]; + + float moveAmt = fract(offsetMove); + offsetMove += offsetMoveInv; + vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection; + vec4 offset = projMat * vec4(samplePos, 1.0); + offset.xyz /= offset.w; + offset.xyz = offset.xyz * 0.5 + 0.5; + + if (all(greaterThan(offset.xyz * (1.0 - offset.xyz), vec3(0.0)))) { + #ifdef REVERSEDEPTH + float sampleDepth = 1.0 - textureLod(sceneDepth, offset.xy, 0.0).x; + #else + float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x; + #endif + + /*#ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + #ifdef ORTHO + float distSample = near + farMinusNear * sampleDepth; + #else + float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear); + #endif + #endif*/ + #ifdef ORTHO + float distSample = near + sampleDepth * farMinusNear; + #else + #ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear); + #endif + #endif + + #ifdef ORTHO + float distWorld = near + offset.z * farMinusNear; + #else + float distWorld = (farTimesNear) / (far - offset.z * farMinusNear); + #endif + + mediump float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld))); + vec2 diff = gl_FragCoord.xy - floor(offset.xy * resolution); + occluded += rangeCheck * float(distSample != distWorld) * float(sampleDepth != depth) * step(distSample + bias, distWorld) * step( + 1.0, + dot(diff, diff) + ); + + totalWeight ++; + } + } + float occ = clamp(1.0 - occluded / (totalWeight == 0.0 ? 1.0 : totalWeight), 0.0, 1.0); + gl_FragColor = vec4(occ, 0.5 + 0.5 * normal); +}`},u={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},transparencyDWFalse:{value:null},transparencyDWTrue:{value:null},transparencyDWTrueDepth:{value:null},transparencyAware:{value:!1},projMat:{value:new r.kn4},viewMat:{value:new r.kn4},projectionMatrixInv:{value:new r.kn4},viewMatrixInv:{value:new r.kn4},cameraPos:{value:new r.Pq0},resolution:{value:new r.I9Y},color:{value:new r.Pq0(0,0,0)},blueNoise:{value:null},downsampledDepth:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1},ortho:{value:!1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1},radius:{value:0},distanceFalloff:{value:1},fog:{value:!1},fogExp:{value:!1},fogDensity:{value:0},fogNear:{value:1/0},fogFar:{value:1/0},colorMultiply:{value:!0},aoTones:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D sceneDiffuse; + uniform highp sampler2D sceneDepth; + uniform highp sampler2D downsampledDepth; + uniform highp sampler2D transparencyDWFalse; + uniform highp sampler2D transparencyDWTrue; + uniform highp sampler2D transparencyDWTrueDepth; + uniform sampler2D tDiffuse; + uniform sampler2D blueNoise; + uniform vec2 resolution; + uniform vec3 color; + uniform mat4 projectionMatrixInv; + uniform mat4 viewMatrixInv; + uniform float intensity; + uniform float renderMode; + uniform float near; + uniform float far; + uniform float aoTones; + uniform bool gammaCorrection; + uniform bool ortho; + uniform bool screenSpaceRadius; + uniform bool fog; + uniform bool fogExp; + uniform bool colorMultiply; + uniform bool transparencyAware; + uniform float fogDensity; + uniform float fogNear; + uniform float fogFar; + uniform float radius; + uniform float distanceFalloff; + uniform vec3 cameraPos; + varying vec2 vUv; + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + return ortho ? linearize_depth_ortho( + linDepth, + nearZ, + farZ + ) :linearize_depth(linDepth, nearZ, farZ); + } + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + // } + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); + } + + #include + #include + void main() { + //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0); + vec4 sceneTexel = texture2D(sceneDiffuse, vUv); + #ifdef REVERSEDEPTH + float depth = 1.0 - texture2D(sceneDepth, vUv).x; + #else + float depth = texture2D(sceneDepth, vUv).x; + #endif + #ifdef HALFRES + vec4 texel; + if (depth == 1.0) { + texel = vec4(0.0, 0.0, 0.0, 1.0); + } else { + vec3 worldPos = getWorldPos(depth, vUv); + vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv); + // vec4 texel = texture2D(tDiffuse, vUv); + // Find closest depth; + float totalWeight = 0.0; + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(depth, vUv + + vec2(radius, 0.0) / resolution) + ) : radius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : distanceFalloff; + for(float x = -1.0; x <= 1.0; x++) { + for(float y = -1.0; y <= 1.0; y++) { + vec2 offset = vec2(x, y); + ivec2 p = ivec2( + (vUv * resolution * 0.5) + offset + ); + vec2 pUv = vec2(p) / (resolution * 0.5); + float sampleDepth = texelFetch(downsampledDepth,p, 0).x; + vec4 sampleInfo = texelFetch(tDiffuse, p, 0); + vec3 normalSample = sampleInfo.gba * 2.0 - 1.0; + vec3 worldPosSample = getWorldPos(sampleDepth, pUv); + float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal)); + float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0); + float weight = rangeCheck; + totalWeight += weight; + texel += sampleInfo * weight; + } + } + if (totalWeight == 0.0) { + texel = texture2D(tDiffuse, vUv); + } else { + texel /= totalWeight; + } + } + #else + vec4 texel = texture2D(tDiffuse, vUv); + #endif + + #ifdef LOGDEPTH + texel.r = clamp(texel.r, 0.0, 1.0); + if (texel.r == 0.0) { + texel.r = 1.0; + } + #endif + + float finalAo = pow(texel.r, intensity); + if (aoTones > 0.0) { + finalAo = ceil(finalAo * aoTones) / aoTones; + } + float fogFactor; + float fogDepth = distance( + cameraPos, + getWorldPos(depth, vUv) + ); + if (fog) { + if (fogExp) { + fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth ); + } else { + fogFactor = smoothstep( fogNear, fogFar, fogDepth ); + } + } + if (transparencyAware) { + float transparencyDWOff = texture2D(transparencyDWFalse, vUv).a; + float transparencyDWOn = texture2D(transparencyDWTrue, vUv).a; + float adjustmentFactorOff = transparencyDWOff; + #ifdef REVERSEDEPTH + float depthSample = 1.0 - texture2D(sceneDepth, vUv).r; + float trueDepthSample = 1.0 - texture2D(transparencyDWTrueDepth, vUv).r; + #else + float depthSample = texture2D(sceneDepth, vUv).r; + float trueDepthSample = texture2D(transparencyDWTrueDepth, vUv).r; + #endif + float adjustmentFactorOn = (1.0 - transparencyDWOn) * ( + trueDepthSample == depthSample ? 1.0 : 0.0 + ); + float adjustmentFactor = max(adjustmentFactorOff, adjustmentFactorOn); + finalAo = mix(finalAo, 1.0, adjustmentFactor); + } + finalAo = mix(finalAo, 1.0, fogFactor); + vec3 aoApplied = color * mix(vec3(1.0), sceneTexel.rgb, float(colorMultiply)); + if (renderMode == 0.0) { + gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a); + } else if (renderMode == 1.0) { + gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a); + } else if (renderMode == 2.0) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (renderMode == 3.0) { + if (vUv.x < 0.5) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) { + gl_FragColor = vec4(1.0); + } else { + gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a); + } + } else if (renderMode == 4.0) { + if (vUv.x < 0.5) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) { + gl_FragColor = vec4(1.0); + } else { + gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a); + } + } + #include + if (gammaCorrection) { + gl_FragColor = sRGBTransferOETF(gl_FragColor); + } + } + `},c={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new r.kn4},viewMat:{value:new r.kn4},projectionMatrixInv:{value:new r.kn4},viewMatrixInv:{value:new r.kn4},cameraPos:{value:new r.Pq0},resolution:{value:new r.I9Y},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1.0); + }`,fragmentShader:` + uniform sampler2D sceneDiffuse; + uniform highp sampler2D sceneDepth; + uniform sampler2D tDiffuse; + uniform sampler2D blueNoise; + uniform mat4 projectionMatrixInv; + uniform mat4 viewMatrixInv; + uniform vec2 resolution; + uniform float r; + uniform float radius; + uniform float worldRadius; + uniform float index; + uniform float near; + uniform float far; + uniform float distanceFalloff; + uniform bool screenSpaceRadius; + varying vec2 vUv; + + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + highp float z_n = 2.0 * d - 1.0; + return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear)); + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + return linearize_depth(linDepth, nearZ, farZ); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + #include + #define NUM_SAMPLES 16 + uniform vec2 poissonDisk[NUM_SAMPLES]; + void main() { + const float pi = 3.14159; + vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y); + vec2 uv = vUv; + vec4 data = texture2D(tDiffuse, vUv); + float occlusion = data.r; + float baseOcc = data.r; + vec3 normal = data.gba * 2.0 - 1.0; + float count = 1.0; + float d = texture2D(sceneDepth, vUv).x; + if (d == 1.0) { + gl_FragColor = data; + return; + } + vec3 worldPos = getWorldPos(d, vUv); + float size = radius; + float angle; + if (index == 0.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2; + } else if (index == 1.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2; + } else if (index == 2.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2; + } else { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2; + } + + mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(d, vUv + + vec2(worldRadius, 0.0) / resolution) + ) : worldRadius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : radiusToUse * distanceFalloff * 0.2; + + float invDistance = (1.0 / distanceFalloffToUse); + for(int i = 0; i < NUM_SAMPLES; i++) { + vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size; + vec4 dataSample = texture2D(tDiffuse, uv + offset); + float occSample = dataSample.r; + vec3 normalSample = dataSample.gba * 2.0 - 1.0; + float dSample = texture2D(sceneDepth, uv + offset).x; + vec3 worldPosSample = getWorldPos(dSample, uv + offset); + float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal)); + float rangeCheck = float(dSample != 1.0) * exp(-1.0 * tangentPlaneDist * invDistance ) * max(dot(normal, normalSample), 0.0); + occlusion += occSample * rangeCheck; + count += rangeCheck; + } + if (count > 0.0) { + occlusion /= count; + } + occlusion = clamp(occlusion, 0.0, 1.0); + if (occlusion == 0.0) { + occlusion = 1.0; + } + gl_FragColor = vec4(occlusion, 0.5 + 0.5 * normal); + } + `},p={uniforms:{sceneDepth:{value:null},resolution:{value:new r.I9Y},near:{value:.1},far:{value:1e3},viewMatrixInv:{value:new r.kn4},projectionMatrixInv:{value:new r.kn4},logDepth:{value:!1},ortho:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform highp sampler2D sceneDepth; + uniform vec2 resolution; + uniform float near; + uniform float far; + uniform bool logDepth; + uniform bool ortho; + uniform mat4 viewMatrixInv; + uniform mat4 projectionMatrixInv; + varying vec2 vUv; + layout(location = 1) out vec4 gNormal; + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + if (logDepth && !ortho) { + return getWorldPosLog(vec3(coord, depth)); + } + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); + } + void main() { + vec2 uv = vUv - vec2(0.5) / resolution; + vec2 pixelSize = vec2(1.0) / resolution; + highp vec2[4] uvSamples; + uvSamples[0] = uv; + uvSamples[1] = uv + vec2(pixelSize.x, 0.0); + uvSamples[2] = uv + vec2(0.0, pixelSize.y); + uvSamples[3] = uv + pixelSize; + #ifdef REVERSEDEPTH + float depth00 = 1.0 - texture2D(sceneDepth, uvSamples[0]).r; + float depth10 = 1.0 - texture2D(sceneDepth, uvSamples[1]).r; + float depth01 = 1.0 - texture2D(sceneDepth, uvSamples[2]).r; + float depth11 = 1.0 - texture2D(sceneDepth, uvSamples[3]).r; + #else + float depth00 = texture2D(sceneDepth, uvSamples[0]).r; + float depth10 = texture2D(sceneDepth, uvSamples[1]).r; + float depth01 = texture2D(sceneDepth, uvSamples[2]).r; + float depth11 = texture2D(sceneDepth, uvSamples[3]).r; + #endif + float minDepth = min(min(depth00, depth10), min(depth01, depth11)); + float maxDepth = max(max(depth00, depth10), max(depth01, depth11)); + float targetDepth = minDepth; + // Checkerboard pattern to avoid artifacts + if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { + targetDepth = maxDepth; + } + int chosenIndex = 0; + float[4] samples; + samples[0] = depth00; + samples[1] = depth10; + samples[2] = depth01; + samples[3] = depth11; + for(int i = 0; i < 4; ++i) { + if (samples[i] == targetDepth) { + chosenIndex = i; + break; + } + } + gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0); + gNormal = vec4(computeNormal( + getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex] + ), 0.0); + }`},d=Uint8Array.from(atob("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"),e=>e.charCodeAt(0)),m=parseInt(r.sPf.replace(/\D+/g,""))>=162?class extends r.nWS{constructor(e=1,t=1,a=1,r={}){super(e,t,{...r,count:a}),this.isWebGLMultipleRenderTargets=!0}get texture(){return this.textures}}:class extends r.nWS{constructor(e=1,t=1,a=1,r={}){super(e,t,r),this.isWebGLMultipleRenderTargets=!0;let i=this.texture;this.texture=[];for(let e=0;e{let r=e[t];return e[t]=a,a.equals?a.equals(r)||this.firstFrame():r!==a&&this.firstFrame(),"aoSamples"===t&&r!==a&&this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"denoiseSamples"===t&&r!==a&&this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"halfRes"===t&&r!==a&&(this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.setSize(this.width,this.height)),"depthAwareUpsampling"===t&&r!==a&&this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"gammaCorrection"===t&&(this.autosetGamma=!1),"transparencyAware"===t&&r!==a&&(this.autoDetectTransparency=!1,this.configureTransparencyTarget()),!0}}),this.samples=[],this.samplesDenoise=[],this.autoDetectTransparency=!0,this.frames=0,this.lastViewMatrix=new r.kn4,this.lastProjectionMatrix=new r.kn4,this.configureEffectCompositer(this.configuration.depthBufferType),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.detectTransparency(),this.configureTransparencyTarget(),this.copyQuad=new f(new r.BKk({uniforms:{tDiffuse:{value:null}},depthWrite:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + } + `,fragmentShader:` + uniform sampler2D tDiffuse; + varying vec2 vUv; + void main() { + gl_FragColor = texture2D(tDiffuse, vUv); + } + `})),this.writeTargetInternal=new r.nWS(this.width,this.height,{minFilter:r.k6q,magFilter:r.k6q,depthBuffer:!1,format:r.GWd}),this.readTargetInternal=new r.nWS(this.width,this.height,{minFilter:r.k6q,magFilter:r.k6q,depthBuffer:!1,format:r.GWd}),this.outputTargetInternal=new r.nWS(this.width,this.height,{minFilter:r.k6q,magFilter:r.k6q,depthBuffer:!1}),this.accumulationRenderTarget=new r.nWS(this.width,this.height,{minFilter:r.k6q,magFilter:r.k6q,depthBuffer:!1,format:r.GWd,type:r.ix0,stencilBuffer:!1,depthBuffer:!1,alpha:!0}),this.accumulationQuad=new f(new r.BKk({uniforms:{frame:{value:0},tDiffuse:{value:null}},transparent:!0,opacity:1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D tDiffuse; + uniform float frame; + varying vec2 vUv; + void main() { + vec4 color = texture2D(tDiffuse, vUv); + gl_FragColor = vec4(color.rgb, 1.0 / (frame + 1.0)); + } + `})),this.bluenoise=new r.GYF(d,128,128),this.bluenoise.colorSpace=r.jf0,this.bluenoise.wrapS=r.GJx,this.bluenoise.wrapT=r.GJx,this.bluenoise.minFilter=r.hxR,this.bluenoise.magFilter=r.hxR,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.timeRollingAverage=.99,this.needsDepthTexture=!0,this.needsSwap=!0,this._r=new r.I9Y,this._c=new r.Q1f}configureHalfResTargets(){this.firstFrame(),this.configuration.halfRes?(this.depthDownsampleTarget=new m(this.width/2,this.height/2,2),r.sPf<=161&&(this.depthDownsampleTarget.textures=this.depthDownsampleTarget.texture),this.depthDownsampleTarget.textures[0].format=r.VT0,this.depthDownsampleTarget.textures[0].type=r.RQf,this.depthDownsampleTarget.textures[0].minFilter=r.hxR,this.depthDownsampleTarget.textures[0].magFilter=r.hxR,this.depthDownsampleTarget.textures[0].depthBuffer=!1,this.depthDownsampleTarget.textures[1].format=r.GWd,this.depthDownsampleTarget.textures[1].type=r.ix0,this.depthDownsampleTarget.textures[1].minFilter=r.hxR,this.depthDownsampleTarget.textures[1].magFilter=r.hxR,this.depthDownsampleTarget.textures[1].depthBuffer=!1,this.depthDownsampleQuad=new f(new r.BKk(p))):(this.depthDownsampleTarget&&(this.depthDownsampleTarget.dispose(),this.depthDownsampleTarget=null),this.depthDownsampleQuad&&(this.depthDownsampleQuad.dispose(),this.depthDownsampleQuad=null))}detectTransparency(){if(this.autoDetectTransparency){let e=!1;this.scene.traverse(t=>{t.material&&t.material.transparent&&(e=!0)}),e&&(this.configuration.transparencyAware=!0)}}configureTransparencyTarget(){this.configuration.transparencyAware?(this.transparencyRenderTargetDWFalse=new r.nWS(this.width,this.height,{minFilter:r.k6q,magFilter:r.hxR,type:r.ix0,format:r.GWd}),this.transparencyRenderTargetDWTrue=new r.nWS(this.width,this.height,{minFilter:r.k6q,magFilter:r.hxR,type:r.ix0,format:r.GWd}),this.transparencyRenderTargetDWTrue.depthTexture=new r.VCu(this.width,this.height,r.bkx),this.depthCopyPass=new f(new r.BKk({uniforms:{depthTexture:{value:this.depthTexture},reverseDepthBuffer:{value:this.configuration.depthBufferType===g.Reverse}},vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D depthTexture; + uniform bool reverseDepthBuffer; + varying vec2 vUv; + void main() { + if (reverseDepthBuffer) { + float d = 1.0 - texture2D(depthTexture, vUv).r; + + d += 0.00001; + gl_FragDepth = 1.0 - d; + } else { + float d = texture2D(depthTexture, vUv).r; + d += 0.00001; + gl_FragDepth = d; + } + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}))):(this.transparencyRenderTargetDWFalse&&(this.transparencyRenderTargetDWFalse.dispose(),this.transparencyRenderTargetDWFalse=null),this.transparencyRenderTargetDWTrue&&(this.transparencyRenderTargetDWTrue.dispose(),this.transparencyRenderTargetDWTrue=null),this.depthCopyPass&&(this.depthCopyPass.dispose(),this.depthCopyPass=null))}renderTransparency(e){let t=this.scene.background,a=e.getClearColor(new r.Q1f),i=e.getClearAlpha(),o=new Map,s=e.autoClearDepth;this.scene.traverse(e=>{o.set(e,e.visible)}),this.scene.background=null,e.autoClearDepth=!1,e.setClearColor(new r.Q1f(0,0,0),0),this.depthCopyPass.material.uniforms.depthTexture.value=this.depthTexture,this.depthCopyPass.material.uniforms.reverseDepthBuffer.value=this.configuration.depthBufferType===g.Reverse,e.setRenderTarget(this.transparencyRenderTargetDWFalse),this.scene.traverse(e=>{e.material&&(e.visible=o.get(e)&&(e.material.transparent&&!e.material.depthWrite&&!e.userData.treatAsOpaque||!!e.userData.cannotReceiveAO))}),e.clear(!0,!0,!0),this.depthCopyPass.render(e),e.render(this.scene,this.camera),e.setRenderTarget(this.transparencyRenderTargetDWTrue),this.scene.traverse(e=>{e.material&&(e.visible=o.get(e)&&e.material.transparent&&e.material.depthWrite&&!e.userData.treatAsOpaque)}),e.clear(!0,!0,!0),this.depthCopyPass.render(e),e.render(this.scene,this.camera),this.scene.traverse(e=>{e.visible=o.get(e)}),e.setClearColor(a,i),this.scene.background=t,e.autoClearDepth=s}configureSampleDependentPasses(){this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera)}configureAOPass(e=g.Default,t=!1){this.firstFrame(),this.samples=this.generateHemisphereSamples(this.configuration.aoSamples);let a={...h};a.fragmentShader=a.fragmentShader.replace("16",this.configuration.aoSamples).replace("16.0",this.configuration.aoSamples+".0"),e===g.Log?a.fragmentShader="#define LOGDEPTH\n"+a.fragmentShader:e===g.Reverse&&(a.fragmentShader="#define REVERSEDEPTH\n"+a.fragmentShader),t&&(a.fragmentShader="#define ORTHO\n"+a.fragmentShader),this.configuration.halfRes&&(a.fragmentShader="#define HALFRES\n"+a.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new r.BKk(a)):this.effectShaderQuad=new f(new r.BKk(a))}configureDenoisePass(e=g.Default,t=!1){this.firstFrame(),this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let a={...c};a.fragmentShader=a.fragmentShader.replace("16",this.configuration.denoiseSamples),e===g.Log?a.fragmentShader="#define LOGDEPTH\n"+a.fragmentShader:e===g.Reverse&&(a.fragmentShader="#define REVERSEDEPTH\n"+a.fragmentShader),t&&(a.fragmentShader="#define ORTHO\n"+a.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new r.BKk(a)):this.poissonBlurQuad=new f(new r.BKk(a))}configureEffectCompositer(e=g.Default,t=!1){this.firstFrame();let a={...u};e===g.Log?a.fragmentShader="#define LOGDEPTH\n"+a.fragmentShader:e===g.Reverse&&(a.fragmentShader="#define REVERSEDEPTH\n"+a.fragmentShader),t&&(a.fragmentShader="#define ORTHO\n"+a.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(a.fragmentShader="#define HALFRES\n"+a.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new r.BKk(a)):this.effectCompositerQuad=new f(new r.BKk(a))}generateHemisphereSamples(e){let t=[];for(let a=0;a{e(t,a,r)},1)}(s,i,this)),e.xr.enabled=n}enableDebugMode(){this.debugMode=!0}disableDebugMode(){this.debugMode=!1}setDisplayMode(e){this.configuration.renderMode=["Combined","AO","No AO","Split","Split AO"].indexOf(e)}setQualityMode(e){"Performance"===e?(this.configuration.aoSamples=8,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Low"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Medium"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=12):"High"===e?(this.configuration.aoSamples=64,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=6):"Ultra"===e&&(this.configuration.aoSamples=64,this.configuration.denoiseSamples=16,this.configuration.denoiseRadius=6)}}let g={Default:1,Log:2,Reverse:3};i.o}}]); \ No newline at end of file diff --git a/docs/_next/static/css/0c2a96677afca393.css b/docs/_next/static/css/0c2a96677afca393.css deleted file mode 100644 index 8131adb6..00000000 --- a/docs/_next/static/css/0c2a96677afca393.css +++ /dev/null @@ -1 +0,0 @@ -body,html{margin:0;padding:0}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:100%}#canvas{display:block;width:100vw;height:100vh}#controls{gap:10px;position:fixed;top:0;left:0;background:rgba(0,0,0,.5);color:#fff;padding:10px 12px 10px 8px;border-radius:0 0 4px 0;font-size:13px}#controls,.CheckboxField{display:flex;align-items:center}.CheckboxField{gap:6px} \ No newline at end of file diff --git a/docs/_next/static/css/f400ad637ebb6e9c.css b/docs/_next/static/css/f400ad637ebb6e9c.css new file mode 100644 index 00000000..37a092aa --- /dev/null +++ b/docs/_next/static/css/f400ad637ebb6e9c.css @@ -0,0 +1 @@ +body,html{margin:0;padding:0;background:black}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:100%}main{width:100vw;height:100vh}#controls{display:flex;align-items:center;gap:20px;position:fixed;top:0;left:0;background:rgba(0,0,0,.5);color:#fff;padding:10px 12px 10px 8px;border-radius:0 0 4px 0;font-size:13px}.CheckboxField,.Field{display:flex;align-items:center;gap:6px}#speedInput{max-width:80px} \ No newline at end of file diff --git a/docs/_next/static/apkwfzIHAb9Dzh3UKvbVP/_buildManifest.js b/docs/_next/static/qFXNqoAT9t8L9rg5MiJOZ/_buildManifest.js similarity index 100% rename from docs/_next/static/apkwfzIHAb9Dzh3UKvbVP/_buildManifest.js rename to docs/_next/static/qFXNqoAT9t8L9rg5MiJOZ/_buildManifest.js diff --git a/docs/_next/static/apkwfzIHAb9Dzh3UKvbVP/_ssgManifest.js b/docs/_next/static/qFXNqoAT9t8L9rg5MiJOZ/_ssgManifest.js similarity index 100% rename from docs/_next/static/apkwfzIHAb9Dzh3UKvbVP/_ssgManifest.js rename to docs/_next/static/qFXNqoAT9t8L9rg5MiJOZ/_ssgManifest.js diff --git a/docs/index.html b/docs/index.html index a0d45eef..0d93a090 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -MapGenius – Explore maps for Tribes 2
\ No newline at end of file +MapGenius – Explore maps for Tribes 2 \ No newline at end of file diff --git a/docs/index.txt b/docs/index.txt index 955406ef..0888e279 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -2,15 +2,15 @@ 2:I[9766,[],""] 3:I[8924,[],""] 4:I[1959,[],"ClientPageRoot"] -5:I[9547,["367","static/chunks/b536a0f1-1b5759e0c5317a23.js","831","static/chunks/bd904a5c-c8eb14764606a11a.js","323","static/chunks/323-245b617c6268e9ac.js","974","static/chunks/app/page-6749c033bbbab822.js"],"default"] +5:I[8226,["367","static/chunks/b536a0f1-05ee2c75df4a3b9d.js","831","static/chunks/bd904a5c-3aea2adebde6f067.js","664","static/chunks/a3cd4a83-5c5b758da206345b.js","794","static/chunks/f6211eb1-4f3105d2434536dc.js","413","static/chunks/1329d575-16915d95397758f8.js","236","static/chunks/236-2b3f004cb23a69d4.js","974","static/chunks/app/page-8e7e000eaa3b6a0e.js"],"default"] 8:I[4431,[],"OutletBoundary"] a:I[5278,[],"AsyncMetadataOutlet"] c:I[4431,[],"ViewportBoundary"] e:I[4431,[],"MetadataBoundary"] f:"$Sreact.suspense" 11:I[7150,[],""] -:HL["/t2-mapper/_next/static/css/0c2a96677afca393.css","style"] -0:{"P":null,"b":"apkwfzIHAb9Dzh3UKvbVP","p":"/t2-mapper","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/css/0c2a96677afca393.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","searchParams":{},"params":{},"promises":["$@6","$@7"]}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true} +:HL["/t2-mapper/_next/static/css/f400ad637ebb6e9c.css","style"] +0:{"P":null,"b":"qFXNqoAT9t8L9rg5MiJOZ","p":"/t2-mapper","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/css/f400ad637ebb6e9c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","searchParams":{},"params":{},"promises":["$@6","$@7"]}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true} 6:{} 7:"$0:f:0:1:2:children:1:props:children:0:props:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]